From 2677dfc9ad130a5fc9db514110e8ed7a3a03ae96 Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Wed, 21 Dec 2016 17:53:11 -0800 Subject: [PATCH] test: fix flaky test-https-timeout Remove `setTimeout()` in test and instead rely on `common.mustCall()` on a `timeout` event handler. The test was flaky on CI. The flakiness was replicable by running the test under load. This version, in contrast, is robust under load. Took the opportunity to do some `var` -> `const` while refactoring. --- test/parallel/test-https-timeout.js | 34 ++++++++++------------------- 1 file changed, 11 insertions(+), 23 deletions(-) diff --git a/test/parallel/test-https-timeout.js b/test/parallel/test-https-timeout.js index 865c15165e2460..ad8decc03cf474 100644 --- a/test/parallel/test-https-timeout.js +++ b/test/parallel/test-https-timeout.js @@ -1,24 +1,24 @@ 'use strict'; -var common = require('../common'); +const common = require('../common'); if (!common.hasCrypto) { common.skip('missing crypto'); return; } -var https = require('https'); +const https = require('https'); -var fs = require('fs'); +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') }; // a server that never replies -var server = https.createServer(options, function() { +const server = https.createServer(options, function() { console.log('Got request. Doing nothing.'); -}).listen(0, function() { - var req = https.request({ +}).listen(0, common.mustCall(function() { + const req = https.request({ host: 'localhost', port: this.address().port, path: '/', @@ -28,26 +28,14 @@ var server = https.createServer(options, function() { req.setTimeout(10); req.end(); - req.on('response', function(res) { + req.on('response', function() { console.log('got response'); }); - req.on('socket', function() { - console.log('got a socket'); - - req.socket.on('connect', function() { - console.log('socket connected'); - }); - - setTimeout(function() { - throw new Error('Did not get timeout event'); - }, 200); - }); - - req.on('timeout', function() { + req.on('timeout', common.mustCall(function() { console.log('timeout occurred outside'); req.destroy(); server.close(); process.exit(0); - }); -}); + })); +}));