diff options
author | Refael Ackermann <refack@gmail.com> | 2017-06-04 21:25:44 +0300 |
---|---|---|
committer | Anna Henningsen <anna@addaleax.net> | 2017-06-10 18:53:15 +0300 |
commit | 216cb3f6e92b65876ad8e7f11c7cce2f8d87b3c4 (patch) | |
tree | 31fa14089a75ebf0be4d71d46595717848504c47 /benchmark | |
parent | 3d12e1b4557427e3af30ef108ba4a4bc122b24fa (diff) |
test,benchmark: stabilize child-process
also some cleanup
PR-URL: https://github.com/nodejs/node/pull/13457
Refs: https://github.com/nodejs/node/issues/12817
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
Diffstat (limited to 'benchmark')
-rw-r--r-- | benchmark/child_process/child-process-exec-stdout.js | 39 |
1 files changed, 20 insertions, 19 deletions
diff --git a/benchmark/child_process/child-process-exec-stdout.js b/benchmark/child_process/child-process-exec-stdout.js index a30eb92f6ad..dcd352cfcf6 100644 --- a/benchmark/child_process/child-process-exec-stdout.js +++ b/benchmark/child_process/child-process-exec-stdout.js @@ -1,41 +1,42 @@ 'use strict'; const common = require('../common.js'); +const { exec, execSync } = require('child_process'); +const isWindows = process.platform === 'win32'; var messagesLength = [64, 256, 1024, 4096]; -// Windows does not support that long arguments -if (process.platform !== 'win32') - messagesLength.push(32768); -const bench = common.createBenchmark(main, { +// Windows does not support command lines longer than 8191 characters +if (!isWindows) messagesLength.push(32768); + +const bench = common.createBenchmark(childProcessExecStdout, { len: messagesLength, dur: [5] }); -const child_process = require('child_process'); -const exec = child_process.exec; -function main(conf) { +function childProcessExecStdout(conf) { bench.start(); - const dur = +conf.dur; + const maxDuration = conf.dur * 1000; const len = +conf.len; - const msg = `"${'.'.repeat(len)}"`; - // eslint-disable-next-line no-unescaped-regexp-dot - msg.match(/./); - const options = {'stdio': ['ignore', 'pipe', 'ignore']}; - const child = exec(`yes ${msg}`, options); + const cmd = `yes "${'.'.repeat(len)}"`; + const child = exec(cmd, { 'stdio': ['ignore', 'pipe', 'ignore'] }); var bytes = 0; - child.stdout.on('data', function(msg) { + child.stdout.on('data', (msg) => { bytes += msg.length; }); - setTimeout(function() { + setTimeout(() => { bench.end(bytes); - if (process.platform === 'win32') { - // Sometimes there's a yes.exe process left hanging around on Windows... - child_process.execSync(`taskkill /f /t /pid ${child.pid}`); + if (isWindows) { + // Sometimes there's a yes.exe process left hanging around on Windows. + try { + execSync(`taskkill /f /t /pid ${child.pid}`); + } catch (_) { + // this is a best effort kill. stderr is piped to parent for tracing. + } } else { child.kill(); } - }, dur * 1000); + }, maxDuration); } |