2013-03-29 2 views
1

나는 parallel_tests 소스를 통해 읽었지만 아직 이해하지 못한다. 그래서 나는 추격하여 점프하고 나의 질문을 던질 것이라고 생각했다.parallel_tests gem이 테스트 스위트를 순차적으로 실행합니까?

parallel_tests gem이 모든 테스트를 동시에 또는 순차적으로 실행합니까? (하나 개 이상의 테스트가 동시에 실행하는 것이 가능) 내가 병렬 테스트를 실행하면

그것 같이 보인다

  1. 도로를 분할 내 모든 테스트를 찾습니다 (각각의 프로세서에 대해 하나) 더미
  2. 실행 시퀀스에서 각 테스트 더미 I 이것을 궁금

때문에 주행 레이크 평행 차이 시간차 : 시험 (75 분) 및 레이크 테스트 (85 분)가 약간 씩 있습니다.

병렬 테스트의 결과는 테스트 그룹이 차례대로 실행되는 것처럼 보입니다.

내 출력은 다음과 같습니다

그것이 내 모든 프로세서를 찾았다 지시에 의해 시작됩니다

:

rake parallel:test[functional] 

4 processes for 223 tests, ~ 55 tests per process 

그 다음 순서의 시험의 각 부분 집합을 실행하는 것 같다

...... 
841 tests, 3605 assertions, 0 failures, 3 errors, 0 skips 

Test run options: --seed 15002 
oaded suite -e 

............... 
Finished in 1928.494289 seconds. 

542 tests, 2296 assertions, 0 failures, 0 errors, 0 skips 

Test run options: --seed 30455 
oaded suite -e 
.... 
etc... 

그래서, 이것은 내 결과물의 속임수입니까, 아니면 실제로 각 테스트 세트를 차례로 실행하고 있습니까? 나는 시간 개선을 더 잘 할 수있을 것이라고 생각하고 있었고 플러스 테스트를 실행하기 위해 병렬화해야하는 다른 것들에 큰 영향을 미쳤다.

답변

1

테스트에 많은 양의 setup/teardown 코드가 필요하거나 IO와 같은 리소스에 대해 경쟁한다면 병렬 처리에서 상당한 성능 향상을 볼 수 없습니다. parallel_test는 실제로 테스트를 병렬로 실행하지만 4 개의 프로세스가 직접 STDOUT에 직접 쓰고 메시지가 서로 인터리브되는 경우 이해하기가 어려울 수 있으므로 출력을 순서대로 버퍼링합니다.

테스트가 병렬로 실행되지 않는다고 확신하는 경우 top이나 다른 도구 (예 : OS X의 활동 모니터)를 실행하고 현재 상황을 확인하십시오.

이것은 귀하의 질문에 대한 답변이 아니지만 병렬 처리를 시도하는 것보다 빠르게 실행하는 데 30 분의 시간이 걸리는 841 테스트의 최적화가 더 많을 것입니다.

+0

고맙습니다. 저는 톱과 로우를 보았습니다. 보라, 루비 프로세스가 따로 따로 있습니다. – user2225335

관련 문제