• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1'use strict';
2
3const common = require('../common');
4const tmpdir = require('../common/tmpdir');
5const assert = require('assert');
6const net = require('net');
7
8tmpdir.refresh();
9
10const { PerformanceObserver } = require('perf_hooks');
11
12const entries = [];
13
14const obs = new PerformanceObserver(common.mustCallAtLeast((items) => {
15  entries.push(...items.getEntries());
16}));
17
18obs.observe({ type: 'net' });
19
20{
21  const server = net.createServer(common.mustCall((socket) => {
22    socket.destroy();
23  }));
24
25  server.listen(0, common.mustCall(async () => {
26    await new Promise((resolve, reject) => {
27      const socket = net.connect(server.address().port);
28      socket.on('end', resolve);
29      socket.on('error', reject);
30    });
31    server.close();
32  }));
33}
34
35{
36  const server = net.createServer(common.mustCall((socket) => {
37    socket.destroy();
38  }));
39
40  server.listen(common.PIPE, common.mustCall(async () => {
41    await new Promise((resolve, reject) => {
42      const socket = net.connect(common.PIPE);
43      socket.on('end', resolve);
44      socket.on('error', reject);
45    });
46    server.close();
47  }));
48}
49
50process.on('exit', () => {
51  assert.strictEqual(entries.length, 1);
52  entries.forEach((entry) => {
53    assert.strictEqual(entry.name, 'connect');
54    assert.strictEqual(entry.entryType, 'net');
55    assert.strictEqual(typeof entry.startTime, 'number');
56    assert.strictEqual(typeof entry.duration, 'number');
57    assert.strictEqual(!!entry.detail.host, true);
58    assert.strictEqual(!!entry.detail.port, true);
59  });
60});
61