| 'use strict'; |
| var cluster = require('cluster'); |
| var assert = require('assert'); |
| var util = require('util'); |
| |
| if (cluster.isMaster) { |
| var worker = cluster.fork(); |
| |
| assert.ok(worker.isConnected(), |
| 'isConnected() should return true as soon as the worker has ' + |
| 'been created.'); |
| |
| worker.on('disconnect', function() { |
| assert.ok(!worker.isConnected(), |
| 'After a disconnect event has been emitted, ' + |
| 'isConncted should return false'); |
| }); |
| |
| worker.on('message', function(msg) { |
| if (msg === 'readyToDisconnect') { |
| worker.disconnect(); |
| } |
| }); |
| |
| } else { |
| assert.ok(cluster.worker.isConnected(), |
| 'isConnected() should return true from within a worker at all ' + |
| 'times.'); |
| |
| cluster.worker.process.on('disconnect', function() { |
| assert.ok(!cluster.worker.isConnected(), |
| 'isConnected() should return false from within a worker ' + |
| 'after its underlying process has been disconnected from ' + |
| 'the master'); |
| }); |
| |
| process.send('readyToDisconnect'); |
| } |