mirror of
https://github.com/nodejs/node.git
synced 2024-11-21 21:19:50 +01:00
test: deflake test-http2-misbehaving-multiplex
Fixes: https://github.com/nodejs/node/issues/54859 PR-URL: https://github.com/nodejs/node/pull/54872 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Jake Yuesong Li <jake.yuesong@gmail.com> Reviewed-By: Richard Lau <rlau@redhat.com>
This commit is contained in:
parent
6cc4d5fc87
commit
e60caeebda
@ -11,18 +11,30 @@ const h2 = require('http2');
|
||||
const net = require('net');
|
||||
const { NghttpError } = require('internal/http2/util');
|
||||
const h2test = require('../common/http2');
|
||||
let client;
|
||||
|
||||
const server = h2.createServer();
|
||||
server.on('stream', common.mustCall((stream) => {
|
||||
stream.respond();
|
||||
stream.end('ok');
|
||||
|
||||
stream.on('error', common.expectsError({
|
||||
code: 'ERR_HTTP2_ERROR',
|
||||
constructor: NghttpError,
|
||||
message: 'Stream was already closed or invalid'
|
||||
}));
|
||||
stream.on('close', common.mustCall());
|
||||
if (stream.id === 3) {
|
||||
stream.on('close', () => {
|
||||
// A second Stream ID 1 frame should fail.
|
||||
// This will cause an error to occur because the client is
|
||||
// attempting to reuse an already closed stream. This must
|
||||
// cause the server session to be torn down.
|
||||
client.write(id1.data);
|
||||
// This Stream ID 5 frame will never make it to the server.
|
||||
client.write(id5.data);
|
||||
});
|
||||
stream.end('ok');
|
||||
} else {
|
||||
stream.on('error', common.expectsError({
|
||||
code: 'ERR_HTTP2_ERROR',
|
||||
constructor: NghttpError,
|
||||
message: 'Stream was already closed or invalid'
|
||||
}));
|
||||
}
|
||||
|
||||
// Stream ID 5 should never reach the server
|
||||
assert.notStrictEqual(stream.id, 5);
|
||||
@ -45,23 +57,14 @@ const id3 = new h2test.HeadersFrame(3, h2test.kFakeRequestHeaders, 0, true);
|
||||
const id5 = new h2test.HeadersFrame(5, h2test.kFakeRequestHeaders, 0, true);
|
||||
|
||||
server.listen(0, () => {
|
||||
const client = net.connect(server.address().port, () => {
|
||||
client = net.connect(server.address().port, () => {
|
||||
client.write(h2test.kClientMagic, () => {
|
||||
client.write(settings.data, () => {
|
||||
client.write(settingsAck.data);
|
||||
// Stream ID 1 frame will make it OK.
|
||||
client.write(id1.data, () => {
|
||||
// Stream ID 3 frame will make it OK.
|
||||
client.write(id3.data, () => {
|
||||
// A second Stream ID 1 frame should fail.
|
||||
// This will cause an error to occur because the client is
|
||||
// attempting to reuse an already closed stream. This must
|
||||
// cause the server session to be torn down.
|
||||
client.write(id1.data, () => {
|
||||
// This Stream ID 5 frame will never make it to the server
|
||||
client.write(id5.data);
|
||||
});
|
||||
});
|
||||
client.write(id3.data);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user