@ -1,26 +1,26 @@
'use strict' ;
'use strict' ;
var common = require ( '../common' ) ;
const common = require ( '../common' ) ;
var assert = require ( 'assert' ) ;
const assert = require ( 'assert' ) ;
var cluster = require ( 'cluster' ) ;
const cluster = require ( 'cluster' ) ;
assert . e qual( 'NODE_UNIQUE_ID' in process . env , false ,
assert . strictE qual( 'NODE_UNIQUE_ID' in process . env , false ,
'NODE_UNIQUE_ID should be removed on startup' ) ;
'NODE_UNIQUE_ID should be removed on startup' ) ;
function forEach ( obj , fn ) {
function forEach ( obj , fn ) {
Object . keys ( obj ) . forEach ( function ( name , index ) {
Object . keys ( obj ) . forEach ( ( name , index ) => {
fn ( obj [ name ] , name , index ) ;
fn ( obj [ name ] , name , index ) ;
} ) ;
} ) ;
}
}
if ( cluster . isWorker ) {
if ( cluster . isWorker ) {
var http = require ( 'http' ) ;
const http = require ( 'http' ) ;
http . Server ( function ( ) {
http . Server ( function ( ) {
} ) . listen ( common . PORT , '127.0.0.1' ) ;
} ) . listen ( common . PORT , '127.0.0.1' ) ;
} else if ( cluster . isMaster ) {
} else if ( cluster . isMaster ) {
var checks = {
const checks = {
cluster : {
cluster : {
events : {
events : {
fork : false ,
fork : false ,
@ -57,13 +57,13 @@ if (cluster.isWorker) {
} ;
} ;
var worker ;
var worker ;
var stateNames = Object . keys ( checks . worker . states ) ;
const stateNames = Object . keys ( checks . worker . states ) ;
//Check events, states, and emit arguments
//Check events, states, and emit arguments
forEach ( checks . cluster . events , function ( bool , name , index ) {
forEach ( checks . cluster . events , ( bool , name , index ) => {
//Listen on event
//Listen on event
cluster . on ( name , function ( /* worker */ ) {
cluster . on ( name , common . mustCall ( function ( /* worker */ ) {
//Set event
//Set event
checks . cluster . events [ name ] = true ;
checks . cluster . events [ name ] = true ;
@ -74,28 +74,26 @@ if (cluster.isWorker) {
//Check state
//Check state
var state = stateNames [ index ] ;
var state = stateNames [ index ] ;
checks . worker . states [ state ] = ( state === worker . state ) ;
checks . worker . states [ state ] = ( state === worker . state ) ;
} ) ;
} ) ) ;
} ) ;
} ) ;
//Kill worker when listening
//Kill worker when listening
cluster . on ( 'listening' , function ( ) {
cluster . on ( 'listening' , common . mustCall ( ( ) => {
worker . kill ( ) ;
worker . kill ( ) ;
} ) ;
} ) ) ;
//Kill process when worker is killed
//Kill process when worker is killed
cluster . on ( 'exit' , function ( ) {
cluster . on ( 'exit' , common . mustCall ( ( ) => { } ) ) ;
process . exit ( 0 ) ;
} ) ;
//Create worker
//Create worker
worker = cluster . fork ( ) ;
worker = cluster . fork ( ) ;
assert . e qual( worker . id , 1 ) ;
assert . strictE qual( worker . id , 1 ) ;
assert . ok ( worker instanceof cluster . Worker ,
assert ( worker instanceof cluster . Worker ,
'the worker is not a instance of the Worker constructor' ) ;
'the worker is not a instance of the Worker constructor' ) ;
//Check event
//Check event
forEach ( checks . worker . events , function ( bool , name , index ) {
forEach ( checks . worker . events , function ( bool , name , index ) {
worker . on ( name , function ( ) {
worker . on ( name , common . mustCall ( function ( ) {
//Set event
//Set event
checks . worker . events [ name ] = true ;
checks . worker . events [ name ] = true ;
@ -104,14 +102,14 @@ if (cluster.isWorker) {
switch ( name ) {
switch ( name ) {
case 'exit' :
case 'exit' :
assert . e qual( arguments [ 0 ] , worker . process . exitCode ) ;
assert . strictE qual( arguments [ 0 ] , worker . process . exitCode ) ;
assert . e qual( arguments [ 1 ] , worker . process . signalCode ) ;
assert . strictE qual( arguments [ 1 ] , worker . process . signalCode ) ;
assert . e qual( arguments . length , 2 ) ;
assert . strictE qual( arguments . length , 2 ) ;
break ;
break ;
case 'listening' :
case 'listening' :
assert . e qual( arguments . length , 1 ) ;
assert . strictE qual( arguments . length , 1 ) ;
var expect = { address : '127.0.0.1' ,
const expect = { address : '127.0.0.1' ,
port : common . PORT ,
port : common . PORT ,
addressType : 4 ,
addressType : 4 ,
fd : undefined } ;
fd : undefined } ;
@ -119,41 +117,42 @@ if (cluster.isWorker) {
break ;
break ;
default :
default :
assert . e qual( arguments . length , 0 ) ;
assert . strictE qual( arguments . length , 0 ) ;
break ;
break ;
}
}
} ) ;
} ) ) ;
} ) ;
} ) ;
//Check all values
//Check all values
process . once ( 'exit' , function ( ) {
process . once ( 'exit' , ( ) => {
//Check cluster events
//Check cluster events
forEach ( checks . cluster . events , function ( check , name ) {
forEach ( checks . cluster . events , ( check , name ) => {
assert . ok ( check , 'The cluster event "' + name + '" on the cluster ' +
assert ( check ,
'object did not fire' ) ;
` The cluster event " ${ name } " on the cluster object did not fire ` ) ;
} ) ;
} ) ;
//Check cluster event arguments
//Check cluster event arguments
forEach ( checks . cluster . equal , function ( check , name ) {
forEach ( checks . cluster . equal , ( check , name ) => {
assert . ok ( check , 'The cluster event "' + name + '" did not emit ' +
assert ( check ,
'with correct argument' ) ;
` The cluster event " ${ name } " did not emit with correct argument ` ) ;
} ) ;
} ) ;
//Check worker states
//Check worker states
forEach ( checks . worker . states , function ( check , name ) {
forEach ( checks . worker . states , ( check , name ) => {
assert . ok ( check , 'The worker state "' + name + '" was not set to true' ) ;
assert ( check ,
` The worker state " ${ name } " was not set to true ` ) ;
} ) ;
} ) ;
//Check worker events
//Check worker events
forEach ( checks . worker . events , function ( check , name ) {
forEach ( checks . worker . events , ( check , name ) => {
assert . ok ( check , 'The worker event "' + name + '" on the worker object ' +
assert ( check ,
'did not fire' ) ;
` The worker event " ${ name } " on the worker object did not fire ` ) ;
} ) ;
} ) ;
//Check worker event arguments
//Check worker event arguments
forEach ( checks . worker . equal , function ( check , name ) {
forEach ( checks . worker . equal , ( check , name ) => {
assert . ok ( check , 'The worker event "' + name + '" did not emit with ' +
assert ( check ,
'corrent argument' ) ;
` The worker event " ${ name } " did not emit with correct argument ` ) ;
} ) ;
} ) ;
} ) ;
} ) ;