¿Cómo probar el comportamiento maestro en un clúster de Node.JS?

Suponga que está ejecutando un clúster en Node.JS y desea realizar una prueba unitaria. Por ejemplo, le gustaría asegurarse de que si un trabajador muere, el clúster toma alguna medida, como bifurcar a otro trabajador y posiblemente algún trabajo relacionado. O que, bajo ciertas condiciones, se generen trabajadores adicionales.

Supongo que para hacer esto uno debe lanzar el clúster y tener acceso de alguna manera a su estado interno; luego (por ejemplo) obligue a los trabajadores a quedarse atascados y verifique el estado después de un retraso. Si es así, ¿cómo exportar el estado?

preguntado el 31 de julio de 12 a las 10:07

1 Respuestas

Tendrá que diseñar su maestro para devolver una referencia a su objeto de clúster. En tus pruebas, puedes matar a uno de sus trabajadores con cluster.workers[2].kill(). El objeto de trabajo también tiene una referencia al objeto de proceso del niño, que puede usar para simular varias condiciones. Es posible que deba usar un setTimeout para asegurarse de que el maestro tenga tiempo para hacer lo suyo.

Sin embargo, los métodos anteriores todavía crean bifurcaciones, lo que puede ser indeseable en un escenario de prueba. Su otra opción es usar una biblioteca de simulación (SinonJS et al) para simular clusterEl método de bifurcación de y luego espiar la cantidad de llamadas que recibe. Puede simular la muerte de un trabajador usando cluster.emit('exit') en el objeto del clúster maestro.

Nota: no estoy seguro de si este es un problema solo mío, pero cluster.emit siempre parece emitir dos veces para mí, por alguna razón.

contestado el 30 de mayo de 13 a las 03:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.