• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1'use strict';
2const common = require('../common');
3const assert = require('assert');
4const fork = require('child_process').fork;
5const net = require('net');
6
7if (process.argv[2] === 'child') {
8
9  process.on('message', (msg, socket) => {
10    socket.end('goodbye');
11  });
12
13  process.send('hello');
14
15} else {
16
17  const child = fork(process.argv[1], ['child']);
18
19  const runTest = common.mustCall(() => {
20
21    const server = net.createServer();
22
23    // server.connections should start as 0
24    assert.strictEqual(server.connections, 0);
25    server.on('connection', (socket) => {
26      child.send({ what: 'socket' }, socket);
27    });
28    server.on('close', () => {
29      child.kill();
30    });
31
32    server.listen(0, common.mustCall(() => {
33      const connect = net.connect(server.address().port);
34
35      connect.on('close', common.mustCall(() => {
36        // `server.connections` should now be null.
37        assert.strictEqual(server.connections, null);
38        server.close();
39      }));
40
41      connect.resume();
42    }));
43  });
44
45  child.on('message', runTest);
46}
47