Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit e22cc6c

Browse filesBrowse files
Trottjasnell
authored andcommitted
test: fix race in test-net-server-pause-on-connect
A 50ms timeout results in a race condition. Instead, enforce expected order through callbacks. This has the side effect of speeding up the test in most situations. Ref: #4476 PR-URL: #4637 Reviewed-By: Johan Bergström <bugs@bergstroem.nu> Reviewed-By: James M Snell <jasnell@gmail.com>
1 parent d139704 commit e22cc6c
Copy full SHA for e22cc6c

File tree

Expand file treeCollapse file tree

1 file changed

+26
-27
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

1 file changed

+26
-27
lines changed
Open diff view settings
Collapse file
+26-27Lines changed: 26 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,51 @@
11
'use strict';
2-
var common = require('../common');
3-
var assert = require('assert');
4-
var net = require('net');
5-
var msg = 'test';
2+
const common = require('../common');
3+
const assert = require('assert');
4+
const net = require('net');
5+
const msg = 'test';
66
var stopped = true;
7-
var server1 = net.createServer({pauseOnConnect: true}, function(socket) {
7+
var server1Sock;
8+
9+
10+
const server1ConnHandler = function(socket) {
811
socket.on('data', function(data) {
912
if (stopped) {
10-
assert(false, 'data event should not have happened yet');
13+
common.fail('data event should not have happened yet');
1114
}
1215

1316
assert.equal(data.toString(), msg, 'invalid data received');
1417
socket.end();
1518
server1.close();
1619
});
1720

18-
setTimeout(function() {
19-
// After 50(ish) ms, the other socket should have already read the data.
20-
assert.equal(read, true);
21-
assert.equal(socket.bytesRead, 0, 'no data should have been read yet');
21+
server1Sock = socket;
22+
};
2223

23-
socket.resume();
24-
stopped = false;
25-
}, common.platformTimeout(50));
26-
});
24+
const server1 = net.createServer({pauseOnConnect: true}, server1ConnHandler);
2725

28-
// read is a timing check, as server1's timer should fire after server2's
29-
// connection receives the data. Note that this could be race-y.
30-
var read = false;
31-
var server2 = net.createServer({pauseOnConnect: false}, function(socket) {
26+
const server2ConnHandler = function(socket) {
3227
socket.on('data', function(data) {
33-
read = true;
34-
3528
assert.equal(data.toString(), msg, 'invalid data received');
3629
socket.end();
3730
server2.close();
31+
32+
assert.equal(server1Sock.bytesRead, 0, 'no data should have been read yet');
33+
server1Sock.resume();
34+
stopped = false;
3835
});
39-
});
36+
};
4037

41-
server1.listen(common.PORT, function() {
42-
net.createConnection({port: common.PORT}).write(msg);
43-
});
38+
const server2 = net.createServer({pauseOnConnect: false}, server2ConnHandler);
4439

45-
server2.listen(common.PORT + 1, function() {
46-
net.createConnection({port: common.PORT + 1}).write(msg);
40+
server1.listen(common.PORT, function() {
41+
const clientHandler = common.mustCall(function() {
42+
server2.listen(common.PORT + 1, function() {
43+
net.createConnection({port: common.PORT + 1}).write(msg);
44+
});
45+
});
46+
net.createConnection({port: common.PORT}).write(msg, clientHandler);
4747
});
4848

4949
process.on('exit', function() {
5050
assert.equal(stopped, false);
51-
assert.equal(read, true);
5251
});

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.