summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorGerhard Stoebich <18708370+Flarna@users.noreply.github.com>2019-06-16 22:00:54 +0200
committerRich Trott <rtrott@gmail.com>2019-07-29 22:12:57 -0700
commit800713418957106c0983745fa51adaeb4ef7dd07 (patch)
tree33de7d0a7ae986d0870362d936990eae95037cdf /test
parent42081580ac6346570848d0430ca6852f4b236324 (diff)
downloadandroid-node-v8-800713418957106c0983745fa51adaeb4ef7dd07.tar.gz
android-node-v8-800713418957106c0983745fa51adaeb4ef7dd07.tar.bz2
android-node-v8-800713418957106c0983745fa51adaeb4ef7dd07.zip
test: improve test-async-hooks-http-parser-destroy
Improve asserts to distinguish between reequest and response parsers. Change the assert sequence to first assert on the number of ids to easier identify if some operation is missing/incomplete. Destroy HTTP agent once expected number of events have been seen to avoid waiting on socket timeouts. Refs: https://github.com/nodejs/node/issues/28112 PR-URL: https://github.com/nodejs/node/pull/28253 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Daijiro Wachi <daijiro.wachi@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Diffstat (limited to 'test')
-rw-r--r--test/parallel/test-async-hooks-http-parser-destroy.js47
1 files changed, 34 insertions, 13 deletions
diff --git a/test/parallel/test-async-hooks-http-parser-destroy.js b/test/parallel/test-async-hooks-http-parser-destroy.js
index 8e92f6359c..22b5a0ff11 100644
--- a/test/parallel/test-async-hooks-http-parser-destroy.js
+++ b/test/parallel/test-async-hooks-http-parser-destroy.js
@@ -11,19 +11,34 @@ const http = require('http');
const N = 50;
const KEEP_ALIVE = 100;
-const createdIds = [];
-const destroyedIds = [];
+const createdIdsIncomingMessage = [];
+const createdIdsClientRequest = [];
+const destroyedIdsIncomingMessage = [];
+const destroyedIdsClientRequest = [];
+
async_hooks.createHook({
init: (asyncId, type) => {
- if (type === 'HTTPINCOMINGMESSAGE' || type === 'HTTPCLIENTREQUEST') {
- createdIds.push(asyncId);
+ if (type === 'HTTPINCOMINGMESSAGE') {
+ createdIdsIncomingMessage.push(asyncId);
+ }
+ if (type === 'HTTPCLIENTREQUEST') {
+ createdIdsClientRequest.push(asyncId);
}
},
destroy: (asyncId) => {
- if (createdIds.includes(asyncId)) {
- destroyedIds.push(asyncId);
+ if (createdIdsIncomingMessage.includes(asyncId)) {
+ destroyedIdsIncomingMessage.push(asyncId);
}
- if (destroyedIds.length === 2 * N) {
+ if (createdIdsClientRequest.includes(asyncId)) {
+ destroyedIdsClientRequest.push(asyncId);
+ }
+
+ if (destroyedIdsClientRequest.length === N && keepAliveAgent) {
+ keepAliveAgent.destroy();
+ keepAliveAgent = undefined;
+ }
+
+ if (destroyedIdsIncomingMessage.length === N && server.listening) {
server.close();
}
}
@@ -33,18 +48,18 @@ const server = http.createServer((req, res) => {
res.end('Hello');
});
-const keepAliveAgent = new http.Agent({
+let keepAliveAgent = new http.Agent({
keepAlive: true,
keepAliveMsecs: KEEP_ALIVE,
});
-server.listen(0, function() {
+server.listen(0, () => {
for (let i = 0; i < N; ++i) {
(function makeRequest() {
http.get({
port: server.address().port,
agent: keepAliveAgent
- }, function(res) {
+ }, (res) => {
res.resume();
});
})();
@@ -52,9 +67,15 @@ server.listen(0, function() {
});
function checkOnExit() {
- assert.deepStrictEqual(destroyedIds.sort(), createdIds.sort());
- // There should be two IDs for each request.
- assert.strictEqual(createdIds.length, N * 2);
+ assert.strictEqual(createdIdsIncomingMessage.length, N);
+ assert.strictEqual(createdIdsClientRequest.length, N);
+ assert.strictEqual(destroyedIdsIncomingMessage.length, N);
+ assert.strictEqual(destroyedIdsClientRequest.length, N);
+
+ assert.deepStrictEqual(destroyedIdsIncomingMessage.sort(),
+ createdIdsIncomingMessage.sort());
+ assert.deepStrictEqual(destroyedIdsClientRequest.sort(),
+ createdIdsClientRequest.sort());
}
process.on('SIGTERM', () => {