From 2b1799781ded8db1e84c8b7fe5fd0f311d65bd32 Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Sat, 23 Jul 2016 14:11:50 -0700 Subject: [PATCH 1/4] 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: https://github.com/nodejs/node/issues/7650 --- test/parallel/test-tls-wrap-timeout.js | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/test/parallel/test-tls-wrap-timeout.js b/test/parallel/test-tls-wrap-timeout.js index ab0f307a970bb3..368a84b26d2cc9 100644 --- a/test/parallel/test-tls-wrap-timeout.js +++ b/test/parallel/test-tls-wrap-timeout.js @@ -17,18 +17,15 @@ var options = { }; var server = tls.createServer(options, function(c) { - setTimeout(function() { - c.write('hello'); - setTimeout(function() { - c.destroy(); - server.close(); - }, 150); - }, 150); + c.write('hello'); + c.destroy(); + server.close(); }); +var socket; server.listen(0, function() { - var socket = net.connect(this.address().port, function() { - var s = socket.setTimeout(common.platformTimeout(240), function() { + socket = net.connect(this.address().port, function() { + var s = socket.setTimeout(Number.MAX_VALUE, function() { throw new Error('timeout'); }); assert.ok(s instanceof net.Socket); @@ -40,3 +37,7 @@ server.listen(0, function() { tsocket.resume(); }); }); + +process.on('exit', () => { + assert.strictEqual(socket._idleTimeout, -1); +}); From 6185e4b8f8aa583ba39f2628f35e45d2d8b42c94 Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Tue, 26 Jul 2016 14:18:49 -0700 Subject: [PATCH 2/4] squash: add _idleStart check --- test/parallel/test-tls-wrap-timeout.js | 39 ++++++++++++++++---------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/test/parallel/test-tls-wrap-timeout.js b/test/parallel/test-tls-wrap-timeout.js index 368a84b26d2cc9..9226f228ae2942 100644 --- a/test/parallel/test-tls-wrap-timeout.js +++ b/test/parallel/test-tls-wrap-timeout.js @@ -1,36 +1,45 @@ '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) { - c.write('hello'); - c.destroy(); - server.close(); -}); +const server = tls.createServer(options, common.mustCall((c) => { + setImmediate(() => { + c.write('hello'); + setImmediate(() => { + c.destroy(); + server.close(); + assert(lastIdleStart < socket._idleStart); + }); + }); +})); var socket; -server.listen(0, function() { - socket = net.connect(this.address().port, function() { - var s = socket.setTimeout(Number.MAX_VALUE, function() { +var lastIdleStart; + +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({ + lastIdleStart = socket._idleStart; + + const tsocket = tls.connect({ socket: socket, rejectUnauthorized: false }); From 84ed1ea55748c88c1331e2ed39de5fbf46048947 Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Wed, 27 Jul 2016 09:45:00 -0700 Subject: [PATCH 3/4] squash: moar ticks, later asserts --- test/parallel/test-tls-wrap-timeout.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/test/parallel/test-tls-wrap-timeout.js b/test/parallel/test-tls-wrap-timeout.js index 9226f228ae2942..8fabc1af44d061 100644 --- a/test/parallel/test-tls-wrap-timeout.js +++ b/test/parallel/test-tls-wrap-timeout.js @@ -18,11 +18,11 @@ const options = { const server = tls.createServer(options, common.mustCall((c) => { setImmediate(() => { - c.write('hello'); - setImmediate(() => { - c.destroy(); - server.close(); - assert(lastIdleStart < socket._idleStart); + c.write('hello', () => { + setImmediate(() => { + c.destroy(); + server.close(); + }); }); }); })); @@ -49,4 +49,5 @@ server.listen(0, () => { process.on('exit', () => { assert.strictEqual(socket._idleTimeout, -1); + assert(lastIdleStart < socket._idleStart); }); From 58d3fbf91c784b90a9ba3ae08c7ca568b9300b41 Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Sat, 30 Jul 2016 21:17:59 -0700 Subject: [PATCH 4/4] squash: additional assertion --- test/parallel/test-tls-wrap-timeout.js | 1 + 1 file changed, 1 insertion(+) diff --git a/test/parallel/test-tls-wrap-timeout.js b/test/parallel/test-tls-wrap-timeout.js index 8fabc1af44d061..0454242d92ecb6 100644 --- a/test/parallel/test-tls-wrap-timeout.js +++ b/test/parallel/test-tls-wrap-timeout.js @@ -37,6 +37,7 @@ server.listen(0, () => { }); assert.ok(s instanceof net.Socket); + assert.notStrictEqual(socket._idleTimeout, -1); lastIdleStart = socket._idleStart; const tsocket = tls.connect({