• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1'use strict';
2const common = require('../common');
3const assert = require('assert');
4const cp = require('child_process');
5const fs = require('fs');
6const path = require('path');
7const tmpdir = require('../common/tmpdir');
8
9const CODE = `
10  const http = require('http');
11  const server = http.createServer((req, res) => {
12    res.end('ok');
13    server.close();
14  }).listen(0, () => {
15    http.get({port: server.address().port});
16  });
17`;
18
19tmpdir.refresh();
20const FILE_NAME = path.join(tmpdir.path, 'node_trace.1.log');
21
22const proc = cp.spawn(process.execPath,
23                      [ '--trace-events-enabled',
24                        '--trace-event-categories', 'node.http',
25                        '-e', CODE ],
26                      { cwd: tmpdir.path });
27
28proc.once('exit', common.mustCall(() => {
29  assert(fs.existsSync(FILE_NAME));
30  fs.readFile(FILE_NAME, common.mustCall((err, data) => {
31    assert(!err);
32    const traces = JSON.parse(data.toString()).traceEvents;
33    assert(traces.length > 0);
34    let count = 0;
35    traces.forEach((trace) => {
36      if (trace.cat === 'node,node.http' &&
37          ['http.server.request', 'http.client.request'].includes(trace.name)) {
38        count++;
39      }
40    });
41    // Two begin, two end
42    assert.strictEqual(count, 4);
43  }));
44}));
45