test: fix test-https-agent-additional-options
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: https://github.com/nodejs/node/pull/27830 Fixes: https://github.com/nodejs/node/issues/24449 Reviewed-By: Sam Roberts <vieuxtech@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
This commit is contained in:
parent
0fa5c9f256
commit
0d2830041a
@ -39,42 +39,36 @@ const updatedValues = new Map([
|
|||||||
['sessionIdContext', 'sessionIdContext'],
|
['sessionIdContext', 'sessionIdContext'],
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
let value;
|
||||||
function variations(iter, port, cb) {
|
function variations(iter, port, cb) {
|
||||||
const { done, value } = iter.next();
|
|
||||||
if (done) {
|
|
||||||
return common.mustCall((res) => {
|
return common.mustCall((res) => {
|
||||||
res.resume();
|
res.resume();
|
||||||
https.globalAgent.once('free', common.mustCall(() => {
|
https.globalAgent.once('free', common.mustCall(() => {
|
||||||
// Verify that different keep-alived connections are created
|
// Verify that the most recent connection is in the freeSockets pool.
|
||||||
// for the base call and each variation
|
|
||||||
const keys = Object.keys(https.globalAgent.freeSockets);
|
const keys = Object.keys(https.globalAgent.freeSockets);
|
||||||
assert.strictEqual(keys.length, 1 + updatedValues.size);
|
if (value) {
|
||||||
let i = 1;
|
|
||||||
for (const [, value] of updatedValues) {
|
|
||||||
assert.ok(
|
assert.ok(
|
||||||
keys[i].startsWith(value.toString() + ':') ||
|
keys.some((val) => val.startsWith(value.toString() + ':') ||
|
||||||
keys[i].endsWith(':' + value.toString()) ||
|
val.endsWith(':' + value.toString()) ||
|
||||||
keys[i].includes(':' + value.toString() + ':')
|
val.includes(':' + value.toString() + ':')),
|
||||||
|
`missing value: ${value.toString()} in ${keys}`
|
||||||
);
|
);
|
||||||
i++;
|
|
||||||
}
|
}
|
||||||
|
const next = iter.next();
|
||||||
|
|
||||||
|
if (next.done) {
|
||||||
https.globalAgent.destroy();
|
https.globalAgent.destroy();
|
||||||
server.close();
|
server.close();
|
||||||
}));
|
|
||||||
});
|
|
||||||
} else {
|
} else {
|
||||||
const [key, val] = value;
|
// Save `value` for check the next time.
|
||||||
return common.mustCall((res) => {
|
value = next.value.val;
|
||||||
res.resume();
|
const [key, val] = next.value;
|
||||||
https.globalAgent.once('free', common.mustCall(() => {
|
https.get(Object.assign({}, getBaseOptions(port), { [key]: val }),
|
||||||
https.get(
|
variations(iter, port, cb));
|
||||||
Object.assign({}, getBaseOptions(port), { [key]: val }),
|
}
|
||||||
variations(iter, port, cb)
|
|
||||||
);
|
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
server.listen(0, common.mustCall(() => {
|
server.listen(0, common.mustCall(() => {
|
||||||
const port = server.address().port;
|
const port = server.address().port;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user