Skip to content

Commit

Permalink
test: enable trace-events tests for workers
Browse files Browse the repository at this point in the history
Use the `cwd` option for `child_process` instead of `process.chdir()`
to enable the trace events tests to run on workers.

PR-URL: #23698
Refs: #23674 (comment)
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
  • Loading branch information
richardlau authored and jasnell committed Oct 21, 2018
1 parent a5b1e7b commit a3c6a8d
Show file tree
Hide file tree
Showing 15 changed files with 48 additions and 84 deletions.
10 changes: 4 additions & 6 deletions test/parallel/test-trace-events-all.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,18 @@ const common = require('../common');
const assert = require('assert');
const cp = require('child_process');
const fs = require('fs');

if (!common.isMainThread)
common.skip('process.chdir is not available in Workers');
const path = require('path');

const CODE =
'setTimeout(() => { for (var i = 0; i < 100000; i++) { "test" + i } }, 1)';
const FILE_NAME = 'node_trace.1.log';

const tmpdir = require('../common/tmpdir');
tmpdir.refresh();
process.chdir(tmpdir.path);
const FILE_NAME = path.join(tmpdir.path, 'node_trace.1.log');

const proc = cp.spawn(process.execPath,
[ '--trace-events-enabled', '-e', CODE ]);
[ '--trace-events-enabled', '-e', CODE ],
{ cwd: tmpdir.path });

proc.once('exit', common.mustCall(() => {
assert(fs.existsSync(FILE_NAME));
Expand Down
3 changes: 1 addition & 2 deletions test/parallel/test-trace-events-api.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@ const common = require('../common');

if (!process.binding('config').hasTracing)
common.skip('missing trace events');
if (!common.isMainThread)
common.skip('process.chdir is not available in Workers');
common.skipIfWorker(); // https://github.com/nodejs/node/issues/22767

const assert = require('assert');
const cp = require('child_process');
Expand Down
10 changes: 4 additions & 6 deletions test/parallel/test-trace-events-async-hooks.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,20 @@ const common = require('../common');
const assert = require('assert');
const cp = require('child_process');
const fs = require('fs');
const path = require('path');
const util = require('util');

if (!common.isMainThread)
common.skip('process.chdir is not available in Workers');

const CODE =
'setTimeout(() => { for (var i = 0; i < 100000; i++) { "test" + i } }, 1)';
const FILE_NAME = 'node_trace.1.log';

const tmpdir = require('../common/tmpdir');
tmpdir.refresh();
process.chdir(tmpdir.path);
const FILE_NAME = path.join(tmpdir.path, 'node_trace.1.log');

const proc = cp.spawn(process.execPath,
[ '--trace-event-categories', 'node.async_hooks',
'-e', CODE ]);
'-e', CODE ],
{ cwd: tmpdir.path });

proc.once('exit', common.mustCall(() => {
assert(fs.existsSync(FILE_NAME));
Expand Down
10 changes: 4 additions & 6 deletions test/parallel/test-trace-events-binding.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,7 @@ const common = require('../common');
const assert = require('assert');
const cp = require('child_process');
const fs = require('fs');

if (!common.isMainThread)
common.skip('process.chdir is not available in Workers');
const path = require('path');

const CODE = `
const { internalBinding } = require('internal/test/binding');
Expand All @@ -18,17 +16,17 @@ const CODE = `
trace('b'.charCodeAt(0), 'missing',
'type-value', 10, {'extra-value': 20 });
`;
const FILE_NAME = 'node_trace.1.log';

const tmpdir = require('../common/tmpdir');
tmpdir.refresh();
process.chdir(tmpdir.path);
const FILE_NAME = path.join(tmpdir.path, 'node_trace.1.log');

const proc = cp.spawn(process.execPath,
[ '--trace-event-categories', 'custom',
'--no-warnings',
'--expose-internals',
'-e', CODE ]);
'-e', CODE ],
{ cwd: tmpdir.path });

proc.once('exit', common.mustCall(() => {
assert(fs.existsSync(FILE_NAME));
Expand Down
7 changes: 2 additions & 5 deletions test/parallel/test-trace-events-bootstrap.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,10 @@
const common = require('../common');
const assert = require('assert');
const cp = require('child_process');
const path = require('path');
const fs = require('fs');
const path = require('path');
const tmpdir = require('../common/tmpdir');

if (!common.isMainThread)
common.skip('process.chdir is not available in Workers');

const names = [
'environment',
'nodeStart',
Expand All @@ -30,10 +27,10 @@ if (process.argv[2] === 'child') {
1 + 1;
} else {
tmpdir.refresh();
process.chdir(tmpdir.path);

const proc = cp.fork(__filename,
[ 'child' ], {
cwd: tmpdir.path,
execArgv: [
'--trace-event-categories',
'node.bootstrap'
Expand Down
10 changes: 4 additions & 6 deletions test/parallel/test-trace-events-category-used.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,6 @@ const common = require('../common');
const assert = require('assert');
const cp = require('child_process');

if (!common.isMainThread)
common.skip('process.chdir is not available in Workers');

const CODE = `
const { internalBinding } = require('internal/test/binding');
const { isTraceCategoryEnabled } = internalBinding('trace_events');
Expand All @@ -16,7 +13,6 @@ const CODE = `

const tmpdir = require('../common/tmpdir');
tmpdir.refresh();
process.chdir(tmpdir.path);

const procEnabled = cp.spawn(
process.execPath,
Expand All @@ -25,7 +21,8 @@ const procEnabled = cp.spawn(
// emits a warning.
'--no-warnings',
'--expose-internals',
'-e', CODE ]
'-e', CODE ],
{ cwd: tmpdir.path }
);
let procEnabledOutput = '';

Expand All @@ -42,7 +39,8 @@ const procDisabled = cp.spawn(
// emits a warning.
'--no-warnings',
'--expose-internals',
'-e', CODE ]
'-e', CODE ],
{ cwd: tmpdir.path }
);
let procDisabledOutput = '';

Expand Down
10 changes: 4 additions & 6 deletions test/parallel/test-trace-events-file-pattern.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,9 @@ const tmpdir = require('../common/tmpdir');
const assert = require('assert');
const cp = require('child_process');
const fs = require('fs');

if (!common.isMainThread)
common.skip('process.chdir is not available in Workers');
const path = require('path');

tmpdir.refresh();
process.chdir(tmpdir.path);

const CODE =
'setTimeout(() => { for (var i = 0; i < 100000; i++) { "test" + i } }, 1)';
Expand All @@ -20,10 +17,11 @@ const proc = cp.spawn(process.execPath, [
// eslint-disable-next-line no-template-curly-in-string
'${pid}-${rotation}-${pid}-${rotation}.tracing.log',
'-e', CODE
]);
], { cwd: tmpdir.path });

proc.once('exit', common.mustCall(() => {
const expectedFilename = `${proc.pid}-1-${proc.pid}-1.tracing.log`;
const expectedFilename = path.join(tmpdir.path,
`${proc.pid}-1-${proc.pid}-1.tracing.log`);

assert(fs.existsSync(expectedFilename));
fs.readFile(expectedFilename, common.mustCall((err, data) => {
Expand Down
9 changes: 3 additions & 6 deletions test/parallel/test-trace-events-fs-sync.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,10 @@ const common = require('../common');
const assert = require('assert');
const cp = require('child_process');
const fs = require('fs');
const path = require('path');
const util = require('util');

if (!common.isMainThread)
common.skip('process.chdir is not available in Workers');

const tests = new Array();
const traceFile = 'node_trace.1.log';

let gid = 1;
let uid = 1;
Expand Down Expand Up @@ -119,14 +116,14 @@ if (common.canCreateSymLink()) {

const tmpdir = require('../common/tmpdir');
tmpdir.refresh();
process.chdir(tmpdir.path);
const traceFile = path.join(tmpdir.path, 'node_trace.1.log');

for (const tr in tests) {
const proc = cp.spawnSync(process.execPath,
[ '--trace-events-enabled',
'--trace-event-categories', 'node.fs.sync',
'-e', tests[tr] ],
{ encoding: 'utf8' });
{ cwd: tmpdir.path, encoding: 'utf8' });
// Some AIX versions don't support futimes or utimes, so skip.
if (common.isAIX && proc.status !== 0 && tr === 'fs.sync.futimes') {
continue;
Expand Down
10 changes: 4 additions & 6 deletions test/parallel/test-trace-events-metadata.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,21 @@ const common = require('../common');
const assert = require('assert');
const cp = require('child_process');
const fs = require('fs');

if (!common.isMainThread)
common.skip('process.chdir is not available in Workers');
const path = require('path');

const CODE =
'setTimeout(() => { for (var i = 0; i < 100000; i++) { "test" + i } }, 1);' +
'process.title = "foo"';
const FILE_NAME = 'node_trace.1.log';

const tmpdir = require('../common/tmpdir');
tmpdir.refresh();
process.chdir(tmpdir.path);
const FILE_NAME = path.join(tmpdir.path, 'node_trace.1.log');

const proc = cp.spawn(process.execPath,
[ '--trace-event-categories', 'node.perf.usertiming',
'--title=bar',
'-e', CODE ]);
'-e', CODE ],
{ cwd: tmpdir.path });
proc.once('exit', common.mustCall(() => {
assert(fs.existsSync(FILE_NAME));
fs.readFile(FILE_NAME, common.mustCall((err, data) => {
Expand Down
10 changes: 4 additions & 6 deletions test/parallel/test-trace-events-none.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,19 @@ const common = require('../common');
const assert = require('assert');
const cp = require('child_process');
const fs = require('fs');

if (!common.isMainThread)
common.skip('process.chdir is not available in Workers');
const path = require('path');

const CODE =
'setTimeout(() => { for (var i = 0; i < 100000; i++) { "test" + i } }, 1)';
const FILE_NAME = 'node_trace.1.log';

const tmpdir = require('../common/tmpdir');
tmpdir.refresh();
process.chdir(tmpdir.path);
const FILE_NAME = path.join(tmpdir.path, 'node_trace.1.log');

const proc_no_categories = cp.spawn(
process.execPath,
[ '--trace-event-categories', '""', '-e', CODE ]
[ '--trace-event-categories', '""', '-e', CODE ],
{ cwd: tmpdir.path }
);

proc_no_categories.once('exit', common.mustCall(() => {
Expand Down
7 changes: 2 additions & 5 deletions test/parallel/test-trace-events-perf.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,10 @@
const common = require('../common');
const assert = require('assert');
const cp = require('child_process');
const path = require('path');
const fs = require('fs');
const path = require('path');
const tmpdir = require('../common/tmpdir');

if (!common.isMainThread)
common.skip('process.chdir is not available in Workers');

if (process.argv[2] === 'child') {
const { performance } = require('perf_hooks');

Expand All @@ -25,7 +22,6 @@ if (process.argv[2] === 'child') {
ff(); // Will emit a timerify trace event
} else {
tmpdir.refresh();
process.chdir(tmpdir.path);

const expectedMarks = ['A', 'B'];
const expectedBegins = [
Expand All @@ -41,6 +37,7 @@ if (process.argv[2] === 'child') {
[
'child'
], {
cwd: tmpdir.path,
execArgv: [
'--trace-event-categories',
'node.perf'
Expand Down
12 changes: 4 additions & 8 deletions test/parallel/test-trace-events-process-exit.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,16 @@ const common = require('../common');
const assert = require('assert');
const cp = require('child_process');
const fs = require('fs');

if (!common.isMainThread)
common.skip('process.chdir is not available in Workers');
const path = require('path');

const tmpdir = require('../common/tmpdir');

const FILE_NAME = 'node_trace.1.log';

tmpdir.refresh();
process.chdir(tmpdir.path);
const FILE_NAME = path.join(tmpdir.path, 'node_trace.1.log');

const proc = cp.spawn(process.execPath,
[ '--trace-events-enabled',
'-e', 'process.exit()' ]);
'-e', 'process.exit()' ],
{ cwd: tmpdir.path });

proc.once('exit', common.mustCall(() => {
assert(fs.existsSync(FILE_NAME));
Expand Down
7 changes: 2 additions & 5 deletions test/parallel/test-trace-events-promises.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,12 @@
const common = require('../common');
const assert = require('assert');
const cp = require('child_process');
const path = require('path');
const fs = require('fs');
const path = require('path');
const tmpdir = require('../common/tmpdir');

common.disableCrashOnUnhandledRejection();

if (!common.isMainThread)
common.skip('process.chdir is not available in Workers');

if (process.argv[2] === 'child') {
const p = Promise.reject(1); // Handled later
Promise.reject(2); // Unhandled
Expand All @@ -19,10 +16,10 @@ if (process.argv[2] === 'child') {
});
} else {
tmpdir.refresh();
process.chdir(tmpdir.path);

const proc = cp.fork(__filename,
[ 'child' ], {
cwd: tmpdir.path,
execArgv: [
'--no-warnings',
'--trace-event-categories',
Expand Down
10 changes: 4 additions & 6 deletions test/parallel/test-trace-events-v8.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,20 @@ const common = require('../common');
const assert = require('assert');
const cp = require('child_process');
const fs = require('fs');

if (!common.isMainThread)
common.skip('process.chdir is not available in Workers');
const path = require('path');

const CODE =
'setTimeout(() => { for (var i = 0; i < 100000; i++) { "test" + i } }, 1)';
const FILE_NAME = 'node_trace.1.log';

const tmpdir = require('../common/tmpdir');
tmpdir.refresh();
process.chdir(tmpdir.path);
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 ]);
'-e', CODE ],
{ cwd: tmpdir.path });

proc.once('exit', common.mustCall(() => {
assert(fs.existsSync(FILE_NAME));
Expand Down
Loading

0 comments on commit a3c6a8d

Please sign in to comment.