2012-07-31 2 views
3

Node.JS에서 클러스터를 실행 중이고이를 단위 테스트하려고한다고 가정하십시오. 예를 들어, 작업자가 사망 한 경우 클러스터가 다른 작업자를 포크하거나 관련 작업을 수행하는 것과 같은 조치를 취해야합니다. 또는 특정 조건 하에서 추가 근로자가 산란됩니다.Node.JS 클러스터에서 마스터 동작을 테스트하는 방법은 무엇입니까?

이 작업을 수행하려면 클러스터를 실행하고 어떻게 든 내부 상태에 액세스해야한다고 가정합니다. 그런 다음 (예를 들어) 강제로 노동자들이 갇히고, 지체 된 후에 상태를 확인하십시오. 그렇다면 주를 내보내는 방법은 무엇입니까?

답변

4

클러스터 객체에 대한 참조를 반환하려면 마스터를 설계해야합니다. 테스트에서 직원 중 하나를 cluster.workers[2].kill()으로 죽일 수 있습니다. worker 객체는 또한 다양한 조건을 시뮬레이션하는 데 사용할 수있는 child 프로세스 객체에 대한 참조를가집니다. 마스터가 그 일을 할 수있는 시간을 가지려면 setTimeout을 사용해야 할 수도 있습니다.

그러나 위의 방법은 테스트 시나리오에서 바람직하지 않을 수있는 포크를 생성합니다. 다른 옵션은 조롱 라이브러리 (SinonJS 외)를 사용하여 cluster의 fork 메소드를 조롱 한 다음 가져 오는 호출 수를 스파이로 지정하는 것입니다. 마스터 클러스터 오브젝트에서 cluster.emit('exit')을 사용하여 작업자 사망을 시뮬레이션 할 수 있습니다.

참고 : 이것이 나와 관련된 문제 일 경우 확실하지 않지만 cluster.emit은 내게 두 번만 나오는 것으로 보입니다.

+0

최근의 경험으로 업데이트되었습니다. –

관련 문제