From 3e9d9927ee83be79ecb7adf5e12618364588c870 Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Tue, 15 Jan 2019 10:31:12 -0800 Subject: [PATCH] test: prepare test-hash-seed for CI Reduce the time it takes to run test/pummel/test-hash-seed by switching from spawnSync() to spawn(). On my computer, this reduces the runtime from about 80 seconds to about 40 seconds. This test is not (yet) run regularly on CI, but when it was run recently, it timed out. PR-URL: https://github.com/nodejs/node/pull/25522 Reviewed-By: Ali Ijaz Sheikh Reviewed-By: Luigi Pinca Reviewed-By: Refael Ackermann Reviewed-By: Richard Lau Reviewed-By: Minwoo Jung --- test/pummel/test-hash-seed.js | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/test/pummel/test-hash-seed.js b/test/pummel/test-hash-seed.js index fd59bbe5e0653c..2b7f13593a9aa4 100644 --- a/test/pummel/test-hash-seed.js +++ b/test/pummel/test-hash-seed.js @@ -2,19 +2,30 @@ // Check that spawn child doesn't create duplicated entries require('../common'); +const Countdown = require('../common/countdown'); const REPETITIONS = 2; const assert = require('assert'); const fixtures = require('../common/fixtures'); -const { spawnSync } = require('child_process'); +const { spawn } = require('child_process'); const targetScript = fixtures.path('guess-hash-seed.js'); const seeds = []; +const requiredCallback = () => { + console.log(`Seeds: ${seeds}`); + assert.strictEqual(new Set(seeds).size, seeds.length); + assert.strictEqual(seeds.length, REPETITIONS); +}; + +const countdown = new Countdown(REPETITIONS, requiredCallback); + for (let i = 0; i < REPETITIONS; ++i) { - const seed = spawnSync(process.execPath, [targetScript], { - encoding: 'utf8' - }).stdout.trim(); - seeds.push(seed); -} + let result = ''; + const subprocess = spawn(process.execPath, [targetScript]); + subprocess.stdout.setEncoding('utf8'); + subprocess.stdout.on('data', (data) => { result += data; }); -console.log(`Seeds: ${seeds}`); -assert.strictEqual(new Set(seeds).size, seeds.length); + subprocess.on('exit', () => { + seeds.push(result.trim()); + countdown.dec(); + }); +}