Skip to content

Commit

Permalink
test: fix test-https-agent-additional-options
Browse files Browse the repository at this point in the history
test-https-agent-additional-options can occasionally fail if a socket
closes before the checks near the end of the test. Modify the test to
check the freeSockets pool after each request.

PR-URL: nodejs#27830
Fixes: nodejs#24449
Reviewed-By: Sam Roberts <vieuxtech@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
  • Loading branch information
Trott committed May 25, 2019
1 parent 0fa5c9f commit 0d28300
Showing 1 changed file with 26 additions and 32 deletions.
58 changes: 26 additions & 32 deletions test/parallel/test-https-agent-additional-options.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,41 +39,35 @@ const updatedValues = new Map([
['sessionIdContext', 'sessionIdContext'],
]);

let value;
function variations(iter, port, cb) {
const { done, value } = iter.next();
if (done) {
return common.mustCall((res) => {
res.resume();
https.globalAgent.once('free', common.mustCall(() => {
// Verify that different keep-alived connections are created
// for the base call and each variation
const keys = Object.keys(https.globalAgent.freeSockets);
assert.strictEqual(keys.length, 1 + updatedValues.size);
let i = 1;
for (const [, value] of updatedValues) {
assert.ok(
keys[i].startsWith(value.toString() + ':') ||
keys[i].endsWith(':' + value.toString()) ||
keys[i].includes(':' + value.toString() + ':')
);
i++;
}
return common.mustCall((res) => {
res.resume();
https.globalAgent.once('free', common.mustCall(() => {
// Verify that the most recent connection is in the freeSockets pool.
const keys = Object.keys(https.globalAgent.freeSockets);
if (value) {
assert.ok(
keys.some((val) => val.startsWith(value.toString() + ':') ||
val.endsWith(':' + value.toString()) ||
val.includes(':' + value.toString() + ':')),
`missing value: ${value.toString()} in ${keys}`
);
}
const next = iter.next();

if (next.done) {
https.globalAgent.destroy();
server.close();
}));
});
} else {
const [key, val] = value;
return common.mustCall((res) => {
res.resume();
https.globalAgent.once('free', common.mustCall(() => {
https.get(
Object.assign({}, getBaseOptions(port), { [key]: val }),
variations(iter, port, cb)
);
}));
});
}
} else {
// Save `value` for check the next time.
value = next.value.val;
const [key, val] = next.value;
https.get(Object.assign({}, getBaseOptions(port), { [key]: val }),
variations(iter, port, cb));
}
}));
});
}

server.listen(0, common.mustCall(() => {
Expand Down

0 comments on commit 0d28300

Please sign in to comment.