Skip to content

Commit 909b516

Browse files
TrottMyles Borins
authored and
Myles Borins
committed
test: remove 1 second delay from test
In test-cluster-worker-wait-server-close, remove unneeded 1-second delay and refactor to eliminate flakiness on FreeBSD. PR-URL: #4616 Reviewed-By: Johan Bergström <[email protected]> Reviewed-By: James M Snell <[email protected]>
1 parent 8ea7660 commit 909b516

File tree

1 file changed

+21
-21
lines changed

1 file changed

+21
-21
lines changed

test/parallel/test-cluster-worker-wait-server-close.js

+21-21
Original file line numberDiff line numberDiff line change
@@ -5,44 +5,44 @@ var assert = require('assert');
55
var cluster = require('cluster');
66
var net = require('net');
77

8+
var serverClosed = false;
9+
810
if (cluster.isWorker) {
9-
net.createServer(function(socket) {
11+
var server = net.createServer(function(socket) {
1012
// Wait for any data, then close connection
1113
socket.write('.');
12-
socket.on('data', function discard() {
13-
});
14+
socket.on('data', function discard() {});
1415
}).listen(common.PORT, common.localhostIPv4);
15-
} else if (cluster.isMaster) {
1616

17-
var connectionDone;
18-
var ok;
17+
server.once('close', function() {
18+
serverClosed = true;
19+
});
1920

21+
// Although not typical, the worker process can exit before the disconnect
22+
// event fires. Use this to keep the process open until the event has fired.
23+
var keepOpen = setInterval(function() {}, 9999);
24+
25+
// Check worker events and properties
26+
process.once('disconnect', function() {
27+
// disconnect should occur after socket close
28+
assert(serverClosed);
29+
clearInterval(keepOpen);
30+
});
31+
} else if (cluster.isMaster) {
2032
// start worker
2133
var worker = cluster.fork();
2234

35+
var socket;
2336
// Disconnect worker when it is ready
2437
worker.once('listening', function() {
2538
net.createConnection(common.PORT, common.localhostIPv4, function() {
26-
var socket = this;
39+
socket = this;
2740
this.on('data', function() {
2841
console.log('got data from client');
2942
// socket definitely connected to worker if we got data
3043
worker.disconnect();
31-
setTimeout(function() {
32-
socket.end();
33-
connectionDone = true;
34-
}, 1000);
44+
socket.end();
3545
});
3646
});
3747
});
38-
39-
// Check worker events and properties
40-
worker.once('disconnect', function() {
41-
assert.ok(connectionDone, 'disconnect should occur after socket close');
42-
ok = true;
43-
});
44-
45-
process.once('exit', function() {
46-
assert.ok(ok);
47-
});
4848
}

0 commit comments

Comments
 (0)