2017-05-23 13 views
1

젠킨스를 사용하여 NUnit 콘솔 주자를 실행하고 있습니다. 이 테스트는 Jenkins가 운영하는 Selenium Grid에 연결되므로 그리드의 빈 노드를 기다리는 동안 에이전트가 굶주 리지 않도록 병렬 처리 수준을 제한하려고합니다.에이전트와 작업자 스레드의 차이

지금까지 NUnit에서 agentworker thread의 차이점을 정확하게 파악하지 못했습니다 ... 에이전트가 스레드를 관리 할 수 ​​있다고 생각하지만 그럴만 한 추측입니다. 감사합니다 :)

답변

0

에이전트는 어셈블리 테스트를 실행하는 별도의 프로세스입니다. 작업자는 프로세스 내에서 특정 어셈블리에 대한 테스트를 실행하는 스레드입니다.

이론적으로 에이전트 프로세스에는 여러 개의 appdomain이있을 수 있으며 각 도메인에는 여러 개의 어셈블리가있을 수 있으며 각 어셈블리에는 여러 개의 worker 스레드가있을 수 있습니다.

그러나 실질적으로해야 할 일은 어셈블리마다 하나의 프로세스가 있어야하므로 여러 도메인이 필요하지 않으며 각 프로세스는 어셈블리의 테스트를 실행하기 위해 지정된 수의 작업자 스레드를 실행합니다. 일부 상황에서는 병렬로만 프로세스를 실행하고 어셈블리 내에서 병렬 처리를 수행하는 것을 선호 할 수도 있습니다. 이는 병렬 처리를 염두에두고 설계하지 않은 테스트를 변경하지 않고 작업 할 가능성이 가장 높은 방법입니다.

에이전트는 스레드를 "관리하지"않습니다. 그들은 단순히 프로세스에서 프레임 워크를 실행하고 프레임 워크는 적용한 속성에 따라 사용할 스레드 수를 결정합니다.

여러 에이전트를 사용하는 경우 v2 프레임 워크는 병렬 처리를 인식하지 못하기 때문에 nunit V2 테스트를 병렬로 실행하는 방법입니다.

+0

자세한 답변 해 주셔서 감사합니다. 나는 V3를 사용하고 각 설비는 자체적으로 포함되어있어서 각 주자가 하나의 어셈블리 (즉, 하나의 에이전트)를 실행하고 Selenium Grid를 사용하는 어셈블리의 경우 고정 된 수의 스레드를 사용합니다. – towel