diff options
author | James M Snell <jasnell@gmail.com> | 2017-12-12 11:34:17 -0800 |
---|---|---|
committer | James M Snell <jasnell@gmail.com> | 2017-12-18 10:19:21 -0800 |
commit | 0babd181a0c5d775e62a12b3b04fe4d7654fe80a (patch) | |
tree | cf02bdb6a71b8d346109d1ab66e18c559dbf5a23 /test/parallel/test-http2-respond-file-fd-range.js | |
parent | 18ca0b64422337cc6844949b9b97f39fef82f512 (diff) | |
download | node-new-0babd181a0c5d775e62a12b3b04fe4d7654fe80a.tar.gz |
http2: cleanup Http2Stream/Http2Session destroy
PR-URL: https://github.com/nodejs/node/pull/17406
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
This is a significant cleanup and refactoring of the
cleanup/close/destroy logic for Http2Stream and Http2Session.
There are significant changes here in the timing and ordering
of cleanup logic, JS apis. and various related necessary edits.
Diffstat (limited to 'test/parallel/test-http2-respond-file-fd-range.js')
-rw-r--r-- | test/parallel/test-http2-respond-file-fd-range.js | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/test/parallel/test-http2-respond-file-fd-range.js b/test/parallel/test-http2-respond-file-fd-range.js index 8479dca518..2dd73e0001 100644 --- a/test/parallel/test-http2-respond-file-fd-range.js +++ b/test/parallel/test-http2-respond-file-fd-range.js @@ -9,6 +9,7 @@ const fixtures = require('../common/fixtures'); const http2 = require('http2'); const assert = require('assert'); const fs = require('fs'); +const Countdown = require('../common/countdown'); const { HTTP2_HEADER_CONTENT_TYPE, @@ -39,7 +40,7 @@ server.on('stream', (stream, headers) => { statCheck: common.mustCall((stat, headers, options) => { assert.strictEqual(options.length, length); assert.strictEqual(options.offset, offset); - headers[HTTP2_HEADER_CONTENT_LENGTH] = + headers['content-length'] = Math.min(options.length, stat.size - offset); }), offset: offset, @@ -47,23 +48,21 @@ server.on('stream', (stream, headers) => { }); }); server.on('close', common.mustCall(() => fs.closeSync(fd))); + server.listen(0, () => { const client = http2.connect(`http://localhost:${server.address().port}`); - let remaining = 2; - function maybeClose() { - if (--remaining === 0) { - client.destroy(); - server.close(); - } - } + const countdown = new Countdown(2, () => { + client.close(); + server.close(); + }); { const req = client.request({ range: 'bytes=8-11' }); req.on('response', common.mustCall((headers) => { - assert.strictEqual(headers[HTTP2_HEADER_CONTENT_TYPE], 'text/plain'); - assert.strictEqual(+headers[HTTP2_HEADER_CONTENT_LENGTH], 3); + assert.strictEqual(headers['content-type'], 'text/plain'); + assert.strictEqual(+headers['content-length'], 3); })); req.setEncoding('utf8'); let check = ''; @@ -71,7 +70,7 @@ server.listen(0, () => { req.on('end', common.mustCall(() => { assert.strictEqual(check, data.toString('utf8', 8, 11)); })); - req.on('close', common.mustCall(maybeClose)); + req.on('close', common.mustCall(() => countdown.dec())); req.end(); } @@ -88,7 +87,7 @@ server.listen(0, () => { req.on('end', common.mustCall(() => { assert.strictEqual(check, data.toString('utf8', 8, 28)); })); - req.on('close', common.mustCall(maybeClose)); + req.on('close', common.mustCall(() => countdown.dec())); req.end(); } |