1'use strict';
2const common = require('../common');
3const Countdown = require('../common/countdown');
4const cluster = require('cluster');
5const net = require('net');
6
7// Test an edge case when using `cluster` and `net.Server.listen()` to
8// the port of `0`.
9const kPort = 0;
10
11function child() {
12  const kTime = 2;
13  const countdown = new Countdown(kTime * 2, () => {
14    process.exit(0);
15  });
16  for (let i = 0; i < kTime; i += 1) {
17    const server = net.createServer();
18    server.listen(kPort, common.mustCall(() => {
19      server.close(countdown.dec());
20      const server2 = net.createServer();
21      server2.listen(kPort, common.mustCall(() => {
22        server2.close(countdown.dec());
23      }));
24    }));
25  }
26}
27
28if (cluster.isMaster)
29  cluster.fork(__filename);
30else
31  child();
32