Skip to content

Commit 6040efd

Browse files
TrottMylesBorins
authored andcommitted
test: fix flaky test-tls-wrap-timeout
Competing timers were causing a race condition and thus the test was flaky. Instead, we check an object property on process exit. Fixes: #7650 Backport-PR-URL: #12567 PR-URL: #7857 Reviewed-By: Santiago Gimeno <[email protected]> Reviewed-By: Fedor Indutny <[email protected]> Reviewed-By: jasnell - James M Snell <[email protected]>
1 parent b5b78b1 commit 6040efd

File tree

1 file changed

+31
-19
lines changed

1 file changed

+31
-19
lines changed
+31-19
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,54 @@
11
'use strict';
2-
var common = require('../common');
3-
var assert = require('assert');
2+
const common = require('../common');
43

54
if (!common.hasCrypto) {
65
common.skip('missing crypto');
76
return;
87
}
9-
var tls = require('tls');
8+
const assert = require('assert');
9+
const tls = require('tls');
1010

11-
var net = require('net');
12-
var fs = require('fs');
11+
const net = require('net');
12+
const fs = require('fs');
1313

14-
var options = {
14+
const options = {
1515
key: fs.readFileSync(common.fixturesDir + '/keys/agent1-key.pem'),
1616
cert: fs.readFileSync(common.fixturesDir + '/keys/agent1-cert.pem')
1717
};
1818

19-
var server = tls.createServer(options, function(c) {
20-
setTimeout(function() {
21-
c.write('hello');
22-
setTimeout(function() {
23-
c.destroy();
24-
server.close();
25-
}, 150);
26-
}, 150);
27-
});
19+
const server = tls.createServer(options, common.mustCall((c) => {
20+
setImmediate(() => {
21+
c.write('hello', () => {
22+
setImmediate(() => {
23+
c.destroy();
24+
server.close();
25+
});
26+
});
27+
});
28+
}));
29+
30+
var socket;
31+
var lastIdleStart;
2832

29-
server.listen(0, function() {
30-
var socket = net.connect(this.address().port, function() {
31-
var s = socket.setTimeout(common.platformTimeout(240), function() {
33+
server.listen(0, () => {
34+
socket = net.connect(server.address().port, function() {
35+
const s = socket.setTimeout(Number.MAX_VALUE, function() {
3236
throw new Error('timeout');
3337
});
3438
assert.ok(s instanceof net.Socket);
3539

36-
var tsocket = tls.connect({
40+
assert.notStrictEqual(socket._idleTimeout, -1);
41+
lastIdleStart = socket._idleStart;
42+
43+
const tsocket = tls.connect({
3744
socket: socket,
3845
rejectUnauthorized: false
3946
});
4047
tsocket.resume();
4148
});
4249
});
50+
51+
process.on('exit', () => {
52+
assert.strictEqual(socket._idleTimeout, -1);
53+
assert(lastIdleStart < socket._idleStart);
54+
});

0 commit comments

Comments
 (0)