node/test/parallel/test-http-perf_hooks.js
Niya Shiyas 4f0a7ae09a test: replace forEach with for..of in test-http-perf_hooks.js
PR-URL: https://github.com/nodejs/node/pull/49818
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
2023-10-21 16:21:50 +02:00

79 lines
2.1 KiB
JavaScript

'use strict';
const common = require('../common');
const assert = require('assert');
const http = require('http');
const { PerformanceObserver } = require('perf_hooks');
const entries = [];
const obs = new PerformanceObserver(common.mustCallAtLeast((items) => {
entries.push(...items.getEntries());
}));
obs.observe({ type: 'http' });
const expected = 'Post Body For Test';
const makeRequest = (options) => {
return new Promise((resolve, reject) => {
http.request(options, common.mustCall((res) => {
resolve();
})).on('error', reject).end(options.data);
});
};
const server = http.Server(common.mustCall((req, res) => {
let result = '';
req.setEncoding('utf8');
req.on('data', function(chunk) {
result += chunk;
});
req.on('end', common.mustCall(function() {
assert.strictEqual(result, expected);
res.writeHead(200);
res.end('hello world\n');
}));
}, 2));
server.listen(0, common.mustCall(async () => {
await Promise.all([
makeRequest({
port: server.address().port,
path: '/',
method: 'POST',
data: expected
}),
makeRequest({
port: server.address().port,
path: '/',
method: 'POST',
data: expected
}),
]);
server.close();
}));
process.on('exit', () => {
let numberOfHttpClients = 0;
let numberOfHttpRequests = 0;
for (const entry of entries) {
assert.strictEqual(entry.entryType, 'http');
assert.strictEqual(typeof entry.startTime, 'number');
assert.strictEqual(typeof entry.duration, 'number');
if (entry.name === 'HttpClient') {
numberOfHttpClients++;
} else if (entry.name === 'HttpRequest') {
numberOfHttpRequests++;
}
assert.strictEqual(typeof entry.detail.req.method, 'string');
assert.strictEqual(typeof entry.detail.req.url, 'string');
assert.strictEqual(typeof entry.detail.req.headers, 'object');
assert.strictEqual(typeof entry.detail.res.statusCode, 'number');
assert.strictEqual(typeof entry.detail.res.statusMessage, 'string');
assert.strictEqual(typeof entry.detail.res.headers, 'object');
}
assert.strictEqual(numberOfHttpClients, 2);
assert.strictEqual(numberOfHttpRequests, 2);
});