});
cluster.worker = worker;
process.once('disconnect', function() {
+ worker.emit('disconnect');
if (!worker.suicide) {
// Unexpected disconnect, master exited, or some such nastiness, so
// worker exits immediately.
}).listen(common.PORT, '127.0.0.1');
+ cluster.worker.on('disconnect', function() {
+ process.exit(42);
+ });
+
} else if (cluster.isMaster) {
var checks = {
},
worker: {
emitDisconnect: false,
+ emitDisconnectInsideWorker: false,
emitExit: false,
state: false,
suicideMode: false,
});
// Check that the worker died
- worker.once('exit', function() {
+ worker.once('exit', function(code) {
checks.worker.emitExit = true;
checks.worker.died = !alive(worker.process.pid);
+ checks.worker.emitDisconnectInsideWorker = code === 42;
+
process.nextTick(function() {
process.exit(0);
});
// events
assert.ok(w.emitDisconnect, 'Disconnect event did not emit');
+ assert.ok(w.emitDisconnectInsideWorker, 'Disconnect event did not emit inside worker');
assert.ok(c.emitDisconnect, 'Disconnect event did not emit');
assert.ok(w.emitExit, 'Exit event did not emit');
assert.ok(c.emitExit, 'Exit event did not emit');