Files
node/test/parallel/test-http-pipeline-assertionerror-finish.js
James M Snell c77063eec2 test: implement low-risk test optimizations
Reviewing the performance of http tests in the smartos
CI runs revealed that a handful of HTTP related tests
are running way longer than they should, with some hitting
upwards of 66 seconds!

- Ten HTTP/HTTPS tests now close connections
  deterministically instead of waiting 66 seconds.
- Two HTTP/2 tests use an explicit 64KiB stream window
  and 3MB payload, while restoring timeout assertions.
- Estimated SmartOS CI saving: about 4.5 minutes at -j4.

Signed-off-by: James M Snell <jasnell@gmail.com>
Assisted-by: Opencode
PR-URL: https://github.com/nodejs/node/pull/65926
Reviewed-By: Filip Skokan <panva.ip@gmail.com>
Reviewed-By: Tim Perry <pimterry@gmail.com>
2026-09-12 10:03:06 +02:00

36 lines
940 B
JavaScript

'use strict';
const common = require('../common');
// This test ensures that Node.js doesn't crash with an AssertionError at
// `ServerResponse.resOnFinish` because of an out-of-order 'finish' bug in
// pipelining.
// https://github.com/nodejs/node/issues/2639
const http = require('http');
const net = require('net');
const COUNT = 10;
const server = http
.createServer(
common.mustCall((req, res) => {
// Close the server, we have only one TCP connection anyway
server.close();
res.writeHead(200);
res.write('data');
setTimeout(function() {
res.end();
}, (Math.random() * 100) | 0);
}, COUNT)
)
.listen(0, function() {
const s = net.connect(this.address().port);
const big = 'GET / HTTP/1.1\r\nHost: example.com\r\n\r\n'.repeat(COUNT - 1) +
'GET / HTTP/1.1\r\nHost: example.com\r\nConnection: close\r\n\r\n';
s.write(big);
s.resume();
});