Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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.
  • Loading branch information
Trott committed Dec 10, 2017
commit ea5c1e871cd17ff6f60357049fbcd788d7d8b4c1
15 changes: 12 additions & 3 deletions test/sequential/test-child-process-pass-fd.js
Original file line number Diff line number Diff line change
@@ -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;
Expand Down Expand Up @@ -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();
});
}