'use strict'; // Flags: --expose-internals const common = require('../common'); const assert = require('assert'); const net = require('net'); const cluster = require('cluster'); const handles = require('internal/cluster').handles; const os = require('os'); if (common.isWindows) { console.log('1..0 # Skipped: This test does not apply to Windows.'); return; } cluster.schedulingPolicy = cluster.SCHED_NONE; if (cluster.isMaster) { const cpus = os.cpus().length; const tries = cpus > 8 ? 128 : cpus * 16; const worker1 = cluster.fork(); worker1.on('message', common.mustCall(() => { worker1.disconnect(); for (let i = 0; i < tries; ++ i) { const w = cluster.fork(); w.on('online', common.mustCall(w.disconnect)); } })); cluster.on('exit', common.mustCall((worker, code) => { assert.strictEqual(code, 0, 'worker exited with error'); }, tries + 1)); process.on('exit', () => { assert.deepEqual(Object.keys(cluster.workers), []); assert.strictEqual(Object.keys(handles).length, 0); }); return; } var server = net.createServer(); server.listen(common.PORT, function() { process.send('listening'); });