Skip to content

Commit ca60bd7

Browse files
committed
test: check error type in net.Server.listen() callback and avoid setTimeout() in test
1 parent 5759722 commit ca60bd7

File tree

1 file changed

+17
-15
lines changed

1 file changed

+17
-15
lines changed

test/parallel/test-net-server-try-ports.js

+17-15
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ var connections = 0;
99

1010
var server1listening = false;
1111
var server2listening = false;
12+
var server2eaddrinuse = false;
1213

1314
var server1 = net.Server(function(socket) {
1415
connections++;
@@ -21,36 +22,37 @@ var server2 = net.Server(function(socket) {
2122
});
2223

2324
var server2errors = 0;
24-
server2.on('error', function() {
25+
26+
server2.on('error', function(e) {
2527
server2errors++;
2628
console.error('server2 error');
29+
30+
if (e.code == 'EADDRINUSE') {
31+
server2eaddrinuse = true;
32+
}
33+
34+
server2.listen(common.PORT + 1, function() {
35+
console.error('server2 listening');
36+
server2listening = true;
37+
38+
server1.close();
39+
server2.close();
40+
});
2741
});
2842

2943

3044
server1.listen(common.PORT, function() {
3145
console.error('server1 listening');
3246
server1listening = true;
47+
3348
// This should make server2 emit EADDRINUSE
3449
server2.listen(common.PORT);
35-
36-
// Wait a bit, now try again.
37-
// TODO, the listen callback should report if there was an error.
38-
// Then we could avoid this very unlikely but potential race condition
39-
// here.
40-
setTimeout(function() {
41-
server2.listen(common.PORT + 1, function() {
42-
console.error('server2 listening');
43-
server2listening = true;
44-
45-
server1.close();
46-
server2.close();
47-
});
48-
}, 100);
4950
});
5051

5152

5253
process.on('exit', function() {
5354
assert.equal(1, server2errors);
55+
assert.ok(server2eaddrinuse);
5456
assert.ok(server2listening);
5557
assert.ok(server1listening);
5658
});

0 commit comments

Comments
 (0)