Skip to content

Commit

Permalink
test: fix flaky test-tls-wrap-timeout
Browse files Browse the repository at this point in the history
Competing timers were causing a race condition and thus the test was
flaky. Instead, we check an object property on process exit.

Fixes: #7650
PR-URL: #7857
Reviewed-By: Santiago Gimeno <[email protected]>
Reviewed-By: Fedor Indutny <[email protected]>
Reviewed-By: jasnell - James M Snell <[email protected]>
  • Loading branch information
Trott committed Jul 31, 2016
1 parent f789eb3 commit bc464a8
Showing 1 changed file with 31 additions and 19 deletions.
50 changes: 31 additions & 19 deletions test/parallel/test-tls-wrap-timeout.js
Original file line number Diff line number Diff line change
@@ -1,42 +1,54 @@
'use strict';
var common = require('../common');
var assert = require('assert');
const common = require('../common');

if (!common.hasCrypto) {
common.skip('missing crypto');
return;
}
var tls = require('tls');
const assert = require('assert');
const tls = require('tls');

var net = require('net');
var fs = require('fs');
const net = require('net');
const fs = require('fs');

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

var server = tls.createServer(options, function(c) {
setTimeout(function() {
c.write('hello');
setTimeout(function() {
c.destroy();
server.close();
}, 150);
}, 150);
});
const server = tls.createServer(options, common.mustCall((c) => {
setImmediate(() => {
c.write('hello', () => {
setImmediate(() => {
c.destroy();
server.close();
});
});
});
}));

var socket;
var lastIdleStart;

server.listen(0, function() {
var socket = net.connect(this.address().port, function() {
var s = socket.setTimeout(common.platformTimeout(240), function() {
server.listen(0, () => {
socket = net.connect(server.address().port, function() {
const s = socket.setTimeout(Number.MAX_VALUE, function() {
throw new Error('timeout');
});
assert.ok(s instanceof net.Socket);

var tsocket = tls.connect({
assert.notStrictEqual(socket._idleTimeout, -1);
lastIdleStart = socket._idleStart;

const tsocket = tls.connect({
socket: socket,
rejectUnauthorized: false
});
tsocket.resume();
});
});

process.on('exit', () => {
assert.strictEqual(socket._idleTimeout, -1);
assert(lastIdleStart < socket._idleStart);
});

0 comments on commit bc464a8

Please sign in to comment.