Skip to content

Commit 49e5f0a

Browse files
santigimenocjihrig
authored andcommitted
test: fix test-net-socket-constructor
So it doesn't fail when creating a socket whose `fd` is already being watched. Test that functionality now inside a cluster worker. Refs: libuv/libuv#1851 Refs: libuv/libuv#1897 PR-URL: #21466 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
1 parent cb261c8 commit 49e5f0a

File tree

1 file changed

+33
-19
lines changed

1 file changed

+33
-19
lines changed

test/parallel/test-net-socket-constructor.js

+33-19
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
const common = require('../common');
44
const assert = require('assert');
5+
const cluster = require('cluster');
56
const net = require('net');
67

78
common.expectsError(() => {
@@ -25,27 +26,40 @@ function test(sock, readable, writable) {
2526
assert.strictEqual(socket.writable, writable);
2627
}
2728

28-
test(undefined, false, false);
29+
if (cluster.isMaster) {
30+
test(undefined, false, false);
2931

30-
const server = net.createServer(common.mustCall((socket) => {
31-
test(socket, true, true);
32-
test({ handle: socket._handle }, false, false);
33-
test({ handle: socket._handle, readable: true, writable: true }, true, true);
34-
if (socket._handle.fd >= 0) {
35-
test(socket._handle.fd, false, false);
36-
test({ fd: socket._handle.fd }, false, false);
37-
test({ fd: socket._handle.fd, readable: true, writable: true }, true, true);
38-
}
32+
const server = net.createServer(common.mustCall((socket) => {
33+
socket.unref();
34+
test(socket, true, true);
35+
test({ handle: socket._handle }, false, false);
36+
test({ handle: socket._handle, readable: true, writable: true },
37+
true, true);
38+
server.close();
39+
}));
3940

40-
server.close();
41-
}));
41+
server.listen(common.mustCall(() => {
42+
const { port } = server.address();
43+
const socket = net.connect(port, common.mustCall(() => {
44+
test(socket, true, true);
45+
socket.end();
46+
}));
4247

43-
server.listen(common.mustCall(() => {
44-
const { port } = server.address();
45-
const socket = net.connect(port, common.mustCall(() => {
46-
test(socket, true, true);
47-
socket.end();
48+
test(socket, false, true);
4849
}));
4950

50-
test(socket, false, true);
51-
}));
51+
cluster.setupMaster({
52+
stdio: ['pipe', 'pipe', 'pipe', 'ipc', 'pipe', 'pipe', 'pipe']
53+
});
54+
55+
const worker = cluster.fork();
56+
worker.on('exit', common.mustCall((code, signal) => {
57+
assert.strictEqual(code, 0);
58+
assert.strictEqual(signal, null);
59+
}));
60+
} else {
61+
test(4, false, false);
62+
test({ fd: 5 }, false, false);
63+
test({ fd: 6, readable: true, writable: true }, true, true);
64+
process.disconnect();
65+
}

0 commit comments

Comments
 (0)