summaryrefslogtreecommitdiff
path: root/test/parallel/test-http2-respond-file-fd-range.js
diff options
context:
space:
mode:
authorJames M Snell <jasnell@gmail.com>2017-12-12 11:34:17 -0800
committerJames M Snell <jasnell@gmail.com>2017-12-18 10:19:21 -0800
commit0babd181a0c5d775e62a12b3b04fe4d7654fe80a (patch)
treecf02bdb6a71b8d346109d1ab66e18c559dbf5a23 /test/parallel/test-http2-respond-file-fd-range.js
parent18ca0b64422337cc6844949b9b97f39fef82f512 (diff)
downloadnode-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.js23
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();
}