mirror of
https://github.com/nodejs/node.git
synced 2025-05-01 08:42:45 +00:00

The event "V8.GCScavenger" is soon to be deprecated. Most of V8 trace events are either behind flags and disabled by default, or are emitted infrequently. Instead of replacing "V8.GCScavenger" with some other random event, this patch updates the tests to check that there is some event in the category "v8" whose name starts with "V8.". PR-URL: https://github.com/nodejs/node/pull/42120 Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Mestery <mestery@protonmail.com> Reviewed-By: Darshan Sen <raisinten@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
59 lines
1.7 KiB
JavaScript
59 lines
1.7 KiB
JavaScript
'use strict';
|
|
const common = require('../common');
|
|
const assert = require('assert');
|
|
const cp = require('child_process');
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
const CODE =
|
|
'setTimeout(() => { for (let i = 0; i < 100000; i++) { "test" + i } }, 1)';
|
|
|
|
const tmpdir = require('../common/tmpdir');
|
|
tmpdir.refresh();
|
|
const FILE_NAME = path.join(tmpdir.path, 'node_trace.1.log');
|
|
|
|
const proc = cp.spawn(process.execPath,
|
|
[ '--trace-events-enabled',
|
|
'--trace-event-categories', 'v8',
|
|
'-e', CODE ],
|
|
{ cwd: tmpdir.path });
|
|
|
|
proc.once('exit', common.mustCall(() => {
|
|
assert(fs.existsSync(FILE_NAME));
|
|
fs.readFile(FILE_NAME, common.mustCall((err, data) => {
|
|
const traces = JSON.parse(data.toString()).traceEvents;
|
|
assert(traces.length > 0);
|
|
// V8 trace events should be generated.
|
|
assert(traces.some((trace) => {
|
|
if (trace.pid !== proc.pid)
|
|
return false;
|
|
if (trace.cat !== 'v8')
|
|
return false;
|
|
if (!trace.name.startsWith('V8.'))
|
|
return false;
|
|
return true;
|
|
}));
|
|
|
|
// C++ async_hooks trace events should be generated.
|
|
assert(!traces.some((trace) => {
|
|
if (trace.pid !== proc.pid)
|
|
return false;
|
|
if (trace.cat !== 'node.async_hooks')
|
|
return false;
|
|
return true;
|
|
}));
|
|
|
|
|
|
// JavaScript async_hooks trace events should be generated.
|
|
assert(!traces.some((trace) => {
|
|
if (trace.pid !== proc.pid)
|
|
return false;
|
|
if (trace.cat !== 'node.async_hooks')
|
|
return false;
|
|
if (trace.name !== 'Timeout')
|
|
return false;
|
|
return true;
|
|
}));
|
|
}));
|
|
}));
|