Skip to content

Commit

Permalink
test: fix flakyness with yes.exe
Browse files Browse the repository at this point in the history
PR-URL: nodejs#12821
Fixes: nodejs#12817
Refs: nodejs#12658
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
  • Loading branch information
refack committed May 6, 2017
1 parent 4703824 commit 68c933c
Showing 1 changed file with 12 additions and 3 deletions.
15 changes: 12 additions & 3 deletions benchmark/child_process/child-process-read.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
'use strict';
const common = require('../common.js');

// This benchmark uses `yes` to a create noisy child_processes with varying
// output message lengths, and tries to read 8GB of output

const os = require('os');
const child_process = require('child_process');

var messagesLength = [64, 256, 1024, 4096];
// Windows does not support that long arguments
Expand All @@ -12,7 +17,6 @@ const bench = common.createBenchmark(main, {
dur: [5]
});

const spawn = require('child_process').spawn;
function main(conf) {
bench.start();

Expand All @@ -21,15 +25,20 @@ function main(conf) {

const msg = `"${'.'.repeat(len)}"`;
const options = { 'stdio': ['ignore', 'pipe', 'ignore'] };
const child = spawn('yes', [msg], options);
const child = child_process.spawn('yes', [msg], options);

var bytes = 0;
child.stdout.on('data', function(msg) {
bytes += msg.length;
});

setTimeout(function() {
child.kill();
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}`);
} else {
child.kill();
}
const gbits = (bytes * 8) / (1024 * 1024 * 1024);
bench.end(gbits);
}, dur * 1000);
Expand Down

0 comments on commit 68c933c

Please sign in to comment.