Skip to content

Commit

Permalink
test: fix flaky test-http-dns-error
Browse files Browse the repository at this point in the history
Under some conditions, the error received from getaddrinfo might
actually be EAGAIN, meaning the request should be retried. Allowing for
5 retries before erroring out.

Also replace one-off function with common.mustNotCall().

PR-URL: #16534
Reviewed-By: Refael Ackermann <[email protected]>
Reviewed-By: James M Snell <[email protected]>
  • Loading branch information
bengl authored and BridgeAR committed Feb 1, 2018
1 parent ac7f1e3 commit 7d4b772
Showing 1 changed file with 23 additions and 12 deletions.
35 changes: 23 additions & 12 deletions test/parallel/test-http-dns-error.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,30 +30,41 @@ const http = require('http');
const https = require('https');

const host = '*'.repeat(256);
const MAX_TRIES = 5;

function do_not_call() {
throw new Error('This function should not have been called.');
}

function test(mod) {

function tryGet(mod, tries) {
// Bad host name should not throw an uncatchable exception.
// Ensure that there is time to attach an error listener.
const req1 = mod.get({ host: host, port: 42 }, do_not_call);
req1.on('error', common.mustCall(function(err) {
const req = mod.get({ host: host, port: 42 }, common.mustNotCall());
req.on('error', common.mustCall(function(err) {
if (err.code === 'EAGAIN' && tries < MAX_TRIES) {
tryGet(mod, ++tries);
return;
}
assert.strictEqual(err.code, 'ENOTFOUND');
}));
// http.get() called req1.end() for us
}

const req2 = mod.request({
function tryRequest(mod, tries) {
const req = mod.request({
method: 'GET',
host: host,
port: 42
}, do_not_call);
req2.on('error', common.mustCall(function(err) {
}, common.mustNotCall());
req.on('error', common.mustCall(function(err) {
if (err.code === 'EAGAIN' && tries < MAX_TRIES) {
tryRequest(mod, ++tries);
return;
}
assert.strictEqual(err.code, 'ENOTFOUND');
}));
req2.end();
req.end();
}

function test(mod) {
tryGet(mod, 0);
tryRequest(mod, 0);
}

if (common.hasCrypto) {
Expand Down

0 comments on commit 7d4b772

Please sign in to comment.