diff options
author | Gerhard Stoebich <18708370+Flarna@users.noreply.github.com> | 2019-06-16 22:00:54 +0200 |
---|---|---|
committer | Rich Trott <rtrott@gmail.com> | 2019-07-29 22:12:57 -0700 |
commit | 800713418957106c0983745fa51adaeb4ef7dd07 (patch) | |
tree | 33de7d0a7ae986d0870362d936990eae95037cdf /test | |
parent | 42081580ac6346570848d0430ca6852f4b236324 (diff) | |
download | android-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.js | 47 |
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', () => { |