Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
test: apply test-http2-max-session-memory-leak from v12.x
Refs: #27914

Backport-PR-URL: #29124
PR-URL: #29122
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
  • Loading branch information
addaleax authored and BethGriggs committed Aug 15, 2019
commit cc282239c13fb13965ea6312f8c1d47203f5ea56
46 changes: 46 additions & 0 deletions test/parallel/test-http2-max-session-memory-leak.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
'use strict';
const common = require('../common');
if (!common.hasCrypto)
common.skip('missing crypto');
const http2 = require('http2');

// Regression test for https://github.com/nodejs/node/issues/27416.
// Check that received data is accounted for correctly in the maxSessionMemory
// mechanism.

const bodyLength = 8192;
const maxSessionMemory = 1; // 1 MB
const requestCount = 1000;

const server = http2.createServer({ maxSessionMemory });
server.on('stream', (stream) => {
stream.respond();
stream.end();
});

server.listen(common.mustCall(() => {
const client = http2.connect(`http://localhost:${server.address().port}`, {
maxSessionMemory
});

function request() {
return new Promise((resolve, reject) => {
const stream = client.request({
':method': 'POST',
'content-length': bodyLength
});
stream.on('error', reject);
stream.on('response', resolve);
stream.end('a'.repeat(bodyLength));
});
}

(async () => {
for (let i = 0; i < requestCount; i++) {
await request();
}

client.close();
server.close();
})().then(common.mustCall());
}));