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: https://github.com/nodejs/node/pull/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>
This commit is contained in:
parent
ba9801a8d2
commit
ac25cee2e2
@ -1,11 +1,20 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
const common = require('../common');
|
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') ||
|
if ((process.config.variables.arm_version === '6') ||
|
||||||
(process.config.variables.arm_version === '7'))
|
(process.config.variables.arm_version === '7'))
|
||||||
common.skip('Too slow for armv6 and armv7 bots');
|
common.skip('Too slow for armv6 and armv7 bots');
|
||||||
|
|
||||||
const assert = require('assert');
|
const assert = require('assert');
|
||||||
const fork = require('child_process').fork;
|
const { fork } = require('child_process');
|
||||||
const net = require('net');
|
const net = require('net');
|
||||||
|
|
||||||
const N = 80;
|
const N = 80;
|
||||||
@ -46,14 +55,14 @@ if (process.argv[2] !== 'child') {
|
|||||||
process.on('message', common.mustCall());
|
process.on('message', common.mustCall());
|
||||||
|
|
||||||
const server = net.createServer((c) => {
|
const server = net.createServer((c) => {
|
||||||
process.once('message', function(msg) {
|
process.once('message', (msg) => {
|
||||||
assert.strictEqual(msg, 'got');
|
assert.strictEqual(msg, 'got');
|
||||||
c.end('hello');
|
c.end('hello');
|
||||||
});
|
});
|
||||||
socketConnected();
|
socketConnected();
|
||||||
}).unref();
|
}).unref();
|
||||||
server.listen(0, common.localhostIPv4, () => {
|
server.listen(0, common.localhostIPv4, () => {
|
||||||
const port = server.address().port;
|
const { port } = server.address();
|
||||||
socket = net.connect(port, common.localhostIPv4, socketConnected).unref();
|
socket = net.connect(port, common.localhostIPv4, socketConnected).unref();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user