• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1'use strict';
2const common = require('../common');
3
4// Check that cluster works perfectly for both `kill` and `disconnect` cases.
5// Also take into account that the `disconnect` event may be received after the
6// `exit` event.
7// https://github.com/nodejs/node/issues/3238
8
9const assert = require('assert');
10const cluster = require('cluster');
11
12if (cluster.isMaster) {
13  function forkWorker(action) {
14    const worker = cluster.fork({ action });
15    worker.on('disconnect', common.mustCall(() => {
16      assert.strictEqual(worker.exitedAfterDisconnect, true);
17    }));
18
19    worker.on('exit', common.mustCall(() => {
20      assert.strictEqual(worker.exitedAfterDisconnect, true);
21    }));
22  }
23
24  forkWorker('disconnect');
25  forkWorker('kill');
26} else {
27  cluster.worker[process.env.action]();
28}
29