우리는 git에서 프로젝트를 유지 관리하기 위해 트래비스 CI를 사용합니다. 오류가있을 경우 문제는 여기에 우리가 사양의 임의의 선택 서로 다른 씨앗 번호가 각각의 실행이 개 프로세스가 트래비스에, 지금은 실행하려고 :bisect에서 최소한의 재생 명령을 사용하지 않아도 Rspec은 오류를 재현 할 수 없습니다.
- 씨앗 번호
- 와 정확한 사양 시드 번호가없는 정확한 사양은
- 시드 번호
- 시드 번호 사양 파일과 함께 사양 파일은 시드 번호없이하지만 --bisect
travis 빌드를 디버깅 할 때 로컬 이건 ssh 이건간에 위의 5 가지 시나리오에서 나는 실패를 발견하지 못하고 bisect는 항상 실패합니다.
또한 완전히 다른 시나리오에서 parallel : spec을 로컬로 기본 8 프로세스와 함께 실행하면 오류가 발생하지만 'rspec'cmd를 사용하여 각각을 단독 실행하면 오류가 발생하지 않습니다.
필자는 응용 프로그램의 루트에있는 .parallel-spec 파일에 --bisect 옵션이있는 동안 병렬로 실행하려고 시도했습니다. 내가 얻는 최소한의 재생 명령은 여전히 실패를주지 않는다.
무엇이 여기에 있습니까? 이 문제는 여러 프로세스를 실행하고 rspec을 사용하여 최소한의 재생 행을 실행해야합니까? 현재 스펙이 1 개 이상의 프로세스에서 실행되는 경우 실패한 스펙을 재현 할 수없는 것으로 보입니다. 반면에 로컬로 rspec --bisect를 실행하면 8 시간 후에도 1 프로세스가 시작되지 않았 음을 알 수 있으며 MacBook Pro를 사용하고 있습니다. (예 : 약 4k 사양입니다.)
p.s. 우리는 레일 4.2.7.1, 루비 2.3.3 및 RSpec에 3.4.4
감사
업데이트에있어 : 사양 순서를 얻을 병렬 사양은 상세 실행 한 다음 사양이 실패하는 프로세스 명령을 실행 시드 번호와 시드 번호 그리고 --bisect. 여전히 실패는 없습니다. 당신은 내가 당신의 사양이 서로 간섭 및 사양 A가 사양 B 전에 실행되는 경우, 그것은 B가 실패합니다 가능성이 Try to run all the specs from the process with the seed
볼 수없는 시도하는 5 가지 사항 중
감사합니다.실제로 어제는 시드를 사용하는 과정에서 사양을 실행하고 시드와 이등분을 사용하여 또 다른 시간을 실행 해 보았습니다.하지만 여전히 실패는 없었습니다. 지금 바로 그 부분을 업데이트했습니다. 실패에 대해서는 유감스럽게도 내가 불행하게도 병렬로 실행할 때마다 새로운 오류가 발생하고 실제로 이러한 개별 오류 대부분을 개별적으로 해결했습니다. 사양을 병렬로 실행하고있을 때 모든 것이 혼란스러워서 결론에 이르게됩니다. 이는 spec 파일 내의 건전성 때문일 수 있습니다. – Shalaby
나는 각 프로세스가 예상대로 별도의 DB를보고 db를 조사했습니다. 나는 병렬 프로세스의 측면에서 각 스펙을 자체 오브젝트로 분리해야하며 오브젝트를 전역으로 선언하고 모든 스펙에서 사용하지 않아야한다고 생각합니다. 아마도 모든 사양을 리팩터링해야 할 것입니다. 그러나 여기서는 병렬 실행에 대한 Bakir의 기사에서 얻었습니다. https://www.atlantbh.com/blog/parallel-test-execution/ 이제는 정확하게 파일을 공유하지 않습니다. 사양하지만 개체를 공유하고 있습니다. 이 이론을 테스트하고 리팩토링을 시작할 것입니다. – Shalaby
프로세스간에 객체를 어떻게 공유하고 있습니까? – meta