From 77f3c1f8f7fba305b60153fc523320deb925bbef Mon Sep 17 00:00:00 2001 From: Anatoli Papirovski Date: Fri, 13 Apr 2018 12:20:47 +0200 Subject: [PATCH] test: fix http-agent-destroyed-socket cb not firing A whole part of the test-http-agent-destroyed-socket test was not running as the semantics of http events changed slightly and were no longer triggering the expected event. Instead listen to the same event on the socket to verify that the code being tested is still working as expected. PR-URL: https://github.com/nodejs/node/pull/20006 Fixes: https://github.com/nodejs/node/issues/8613 Reviewed-By: James M Snell Reviewed-By: Luigi Pinca Reviewed-By: Trivikram Kamat Reviewed-By: Matteo Collina --- .../test-http-agent-destroyed-socket.js | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/test/parallel/test-http-agent-destroyed-socket.js b/test/parallel/test-http-agent-destroyed-socket.js index 137292cce66916..af63a676f62fd9 100644 --- a/test/parallel/test-http-agent-destroyed-socket.js +++ b/test/parallel/test-http-agent-destroyed-socket.js @@ -44,24 +44,11 @@ const server = http.createServer(common.mustCall((req, res) => { // assert request2 is queued in the agent const key = agent.getName(requestOptions); assert.strictEqual(agent.requests[key].length, 1); - request1.socket.on('close', common.mustCall()); response.resume(); response.on('end', common.mustCall(() => { - // - // THE IMPORTANT PART - // - // It is possible for the socket to get destroyed and other work - // to run before the 'close' event fires because it happens on - // nextTick. This example is contrived because it destroys the - // socket manually at just the right time, but at Voxer we have - // seen cases where the socket is destroyed by non-user code - // then handed out again by an agent *before* the 'close' event - // is triggered. request1.socket.destroy(); - // TODO(jasnell): This close event does not appear to be triggered. - // is it necessary? - response.once('close', () => { + response.socket.once('close', common.mustCall(() => { // assert request2 was removed from the queue assert(!agent.requests[key]); process.nextTick(() => { @@ -70,7 +57,7 @@ const server = http.createServer(common.mustCall((req, res) => { assert.notStrictEqual(request1.socket, request2.socket); assert(!request2.socket.destroyed, 'the socket is destroyed'); }); - }); + })); })); }));