Skip to content

Commit

Permalink
test: fix flaky test-https-timeout
Browse files Browse the repository at this point in the history
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.

PR-URL: #10404
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Italo A. Casas <me@italoacasas.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
  • Loading branch information
Trott authored and MylesBorins committed Feb 1, 2017
1 parent eeb2d78 commit 8a26ba1
Showing 1 changed file with 11 additions and 23 deletions.
34 changes: 11 additions & 23 deletions test/parallel/test-https-timeout.js
Original file line number Diff line number Diff line change
@@ -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: '/',
Expand All @@ -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);
});
});
}));
}));

0 comments on commit 8a26ba1

Please sign in to comment.