'use strict'; const common = require('../common'); const assert = require('assert'); const http = require('http'); const { PerformanceObserver } = require('perf_hooks'); const obs = new PerformanceObserver(common.mustCall((items) => { const entry = items.getEntries()[0]; assert.strictEqual(entry.entryType, 'http'); assert.strictEqual(typeof entry.startTime, 'number'); assert.strictEqual(typeof entry.duration, 'number'); }, 2)); obs.observe({ entryTypes: ['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(); }));