1// Flags: --expose-internals
2'use strict';
3const common = require('../common');
4const assert = require('assert');
5const net = require('net');
6const cluster = require('cluster');
7const rr = require('internal/cluster/round_robin_handle');
8
9if (cluster.isPrimary) {
10  const distribute = rr.prototype.distribute;
11  rr.prototype.distribute = function(err, handle) {
12    assert.strictEqual(err, 0);
13    handle.close();
14    distribute.call(this, -1, undefined);
15  };
16  cluster.schedulingPolicy = cluster.SCHED_RR;
17  cluster.fork();
18} else {
19  const server = net.createServer(common.mustNotCall());
20  server.listen(0, common.mustCall(() => {
21
22    const socket = net.connect(server.address().port);
23
24    socket.on('close', common.mustCall(() => {
25      server.close(common.mustCall(() => {
26        process.disconnect();
27      }));
28    }));
29  }));
30}
31