From 8552bb406544baaed74203d0b9baf04e09466803 Mon Sep 17 00:00:00 2001 From: Richard Lau Date: Tue, 16 Oct 2018 13:28:52 -0400 Subject: [PATCH] test: enable trace-events tests for workers Use the `cwd` option for `child_process` instead of `process.chdir()` to enable the trace events tests to run on workers. Conflicts: test/parallel/test-trace-events-binding.js test/parallel/test-trace-events-category-used.js Backport-PR-URL: https://github.com/nodejs/node/pull/23882 PR-URL: https://github.com/nodejs/node/pull/23698 Refs: https://github.com/nodejs/node/pull/23674#discussion_r225335819 Reviewed-By: James M Snell Reviewed-By: Colin Ihrig --- test/parallel/test-trace-events-all.js | 10 ++++------ test/parallel/test-trace-events-api.js | 3 +-- test/parallel/test-trace-events-async-hooks.js | 10 ++++------ test/parallel/test-trace-events-binding.js | 10 ++++------ test/parallel/test-trace-events-bootstrap.js | 7 ++----- test/parallel/test-trace-events-category-used.js | 10 ++++------ test/parallel/test-trace-events-file-pattern.js | 10 ++++------ test/parallel/test-trace-events-fs-sync.js | 9 +++------ test/parallel/test-trace-events-metadata.js | 10 ++++------ test/parallel/test-trace-events-none.js | 10 ++++------ test/parallel/test-trace-events-perf.js | 7 ++----- test/parallel/test-trace-events-process-exit.js | 12 ++++-------- test/parallel/test-trace-events-promises.js | 7 ++----- test/parallel/test-trace-events-v8.js | 10 ++++------ test/parallel/test-trace-events-vm.js | 7 ++----- 15 files changed, 48 insertions(+), 84 deletions(-) diff --git a/test/parallel/test-trace-events-all.js b/test/parallel/test-trace-events-all.js index f3d38cb4286b13..01e869f4abe9c8 100644 --- a/test/parallel/test-trace-events-all.js +++ b/test/parallel/test-trace-events-all.js @@ -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)); diff --git a/test/parallel/test-trace-events-api.js b/test/parallel/test-trace-events-api.js index f7d7ec35b022f6..2810ac0dd0f6d7 100644 --- a/test/parallel/test-trace-events-api.js +++ b/test/parallel/test-trace-events-api.js @@ -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'); diff --git a/test/parallel/test-trace-events-async-hooks.js b/test/parallel/test-trace-events-async-hooks.js index 8374b6546a6e79..0ec00da78d0c21 100644 --- a/test/parallel/test-trace-events-async-hooks.js +++ b/test/parallel/test-trace-events-async-hooks.js @@ -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)); diff --git a/test/parallel/test-trace-events-binding.js b/test/parallel/test-trace-events-binding.js index 7ce75ace330990..b8491e5e1bb103 100644 --- a/test/parallel/test-trace-events-binding.js +++ b/test/parallel/test-trace-events-binding.js @@ -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 = ` process.binding("trace_events").emit( @@ -21,15 +19,15 @@ const CODE = ` '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', - '-e', CODE ]); + '-e', CODE ], + { cwd: tmpdir.path }); proc.once('exit', common.mustCall(() => { assert(fs.existsSync(FILE_NAME)); diff --git a/test/parallel/test-trace-events-bootstrap.js b/test/parallel/test-trace-events-bootstrap.js index 8d5e00f00f8b0c..087fbd2f182a61 100644 --- a/test/parallel/test-trace-events-bootstrap.js +++ b/test/parallel/test-trace-events-bootstrap.js @@ -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', @@ -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' diff --git a/test/parallel/test-trace-events-category-used.js b/test/parallel/test-trace-events-category-used.js index d5aff4e1361ce6..971a8ef832ce1d 100644 --- a/test/parallel/test-trace-events-category-used.js +++ b/test/parallel/test-trace-events-category-used.js @@ -3,20 +3,17 @@ 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 = `console.log( process.binding("trace_events").categoryGroupEnabled("custom") );`; const tmpdir = require('../common/tmpdir'); tmpdir.refresh(); -process.chdir(tmpdir.path); const procEnabled = cp.spawn( process.execPath, - [ '--trace-event-categories', 'custom', '-e', CODE ] + [ '--trace-event-categories', 'custom', '-e', CODE ], + { cwd: tmpdir.path } ); let procEnabledOutput = ''; @@ -28,7 +25,8 @@ procEnabled.once('exit', common.mustCall(() => { const procDisabled = cp.spawn( process.execPath, - [ '--trace-event-categories', 'other', '-e', CODE ] + [ '--trace-event-categories', 'other', '-e', CODE ], + { cwd: tmpdir.path } ); let procDisabledOutput = ''; diff --git a/test/parallel/test-trace-events-file-pattern.js b/test/parallel/test-trace-events-file-pattern.js index 60a3296c642994..a60559b7f91b2b 100644 --- a/test/parallel/test-trace-events-file-pattern.js +++ b/test/parallel/test-trace-events-file-pattern.js @@ -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)'; @@ -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) => { diff --git a/test/parallel/test-trace-events-fs-sync.js b/test/parallel/test-trace-events-fs-sync.js index 54222bcb333f51..d8e9ca30a8ebd3 100644 --- a/test/parallel/test-trace-events-fs-sync.js +++ b/test/parallel/test-trace-events-fs-sync.js @@ -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; @@ -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; diff --git a/test/parallel/test-trace-events-metadata.js b/test/parallel/test-trace-events-metadata.js index aeb605beb0cbf3..d3afbcaef5d53e 100644 --- a/test/parallel/test-trace-events-metadata.js +++ b/test/parallel/test-trace-events-metadata.js @@ -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) => { diff --git a/test/parallel/test-trace-events-none.js b/test/parallel/test-trace-events-none.js index 4c2fe0ca216104..dfe77e4b39369f 100644 --- a/test/parallel/test-trace-events-none.js +++ b/test/parallel/test-trace-events-none.js @@ -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(() => { diff --git a/test/parallel/test-trace-events-perf.js b/test/parallel/test-trace-events-perf.js index 27eef28fb12325..2403a8078a47fd 100644 --- a/test/parallel/test-trace-events-perf.js +++ b/test/parallel/test-trace-events-perf.js @@ -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'); @@ -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 = [ @@ -41,6 +37,7 @@ if (process.argv[2] === 'child') { [ 'child' ], { + cwd: tmpdir.path, execArgv: [ '--trace-event-categories', 'node.perf' diff --git a/test/parallel/test-trace-events-process-exit.js b/test/parallel/test-trace-events-process-exit.js index 254963c2d3a751..1a39b889a3c809 100644 --- a/test/parallel/test-trace-events-process-exit.js +++ b/test/parallel/test-trace-events-process-exit.js @@ -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)); diff --git a/test/parallel/test-trace-events-promises.js b/test/parallel/test-trace-events-promises.js index 3088be52960095..0dd4fddc6d75ba 100644 --- a/test/parallel/test-trace-events-promises.js +++ b/test/parallel/test-trace-events-promises.js @@ -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 @@ -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', diff --git a/test/parallel/test-trace-events-v8.js b/test/parallel/test-trace-events-v8.js index 183a8382a4e575..f7984dcd0ce475 100644 --- a/test/parallel/test-trace-events-v8.js +++ b/test/parallel/test-trace-events-v8.js @@ -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)); diff --git a/test/parallel/test-trace-events-vm.js b/test/parallel/test-trace-events-vm.js index 758de3e964f7b2..3e5d32b6c3f82c 100644 --- a/test/parallel/test-trace-events-vm.js +++ b/test/parallel/test-trace-events-vm.js @@ -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 = [ 'ContextifyScript::New', 'RunInThisContext', @@ -20,10 +17,10 @@ if (process.argv[2] === 'child') { vm.runInNewContext('1 + 1'); } else { tmpdir.refresh(); - process.chdir(tmpdir.path); const proc = cp.fork(__filename, [ 'child' ], { + cwd: tmpdir.path, execArgv: [ '--trace-event-categories', 'node.vm.script'