Permalink
Browse files

test: refactor test-child-process-pass-fd

Add a comment explaining the test (especailly why it forks 80 processes.
Use destructuring and an arrow function callback.

PR-URL: #17596
Reviewed-By: Khaidi Chu <i@2333.moe>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Minwoo Jung <minwoo@nodesource.com>
  • Loading branch information...
Trott authored and gibfahn committed Dec 10, 2017
1 parent ad0d878 commit dbf5ddbc9748c27fd2b4efb6298dbe4875f1d40d
Showing with 12 additions and 3 deletions.
  1. +12 −3 test/sequential/test-child-process-pass-fd.js
@@ -1,11 +1,20 @@
'use strict';
const common = require('../common');
// On some OS X versions, when passing fd's between processes:
// When the handle associated to a specific file descriptor is closed by the
// sender process before it's received in the destination, the handle is indeed
// closed while it should remain opened. In order to fix this behavior, don't
// close the handle until the `NODE_HANDLE_ACK` is received by the sender.
// This test is basically `test-cluster-net-send` but creating lots of workers
// so the issue reproduces on OS X consistently.
if ((process.config.variables.arm_version === '6') ||
(process.config.variables.arm_version === '7'))
common.skip('Too slow for armv6 and armv7 bots');
const assert = require('assert');
const fork = require('child_process').fork;
const { fork } = require('child_process');
const net = require('net');
const N = 80;
@@ -46,14 +55,14 @@ if (process.argv[2] !== 'child') {
process.on('message', common.mustCall());
const server = net.createServer((c) => {
process.once('message', function(msg) {
process.once('message', (msg) => {
assert.strictEqual(msg, 'got');
c.end('hello');
});
socketConnected();
}).unref();
server.listen(0, common.localhostIPv4, () => {
const port = server.address().port;
const { port } = server.address();
socket = net.connect(port, common.localhostIPv4, socketConnected).unref();
});
}

0 comments on commit dbf5ddb

Please sign in to comment.