%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
'use strict'; const common = require('../common'); const assert = require('assert'); const child_process = require('child_process'); const cluster = require('cluster'); if (!process.argv[2]) { // It seems Windows only allocate new console window for // attaching processes spawned by detached processes. i.e. // - If process D is spawned by process C with `detached: true`, // and process W is spawned by process D with `detached: false`, // W will get a new black console window popped up. // - If D is spawned by C with `detached: false` or W is spawned // by D with `detached: true`, no console window will pop up for W. // // So, we have to spawn a detached process first to run the actual test. const primary = child_process.spawn( process.argv[0], [process.argv[1], '--cluster'], { detached: true, stdio: ['ignore', 'ignore', 'ignore', 'ipc'] }); const messageHandlers = { workerOnline: common.mustCall((msg) => { }), mainWindowHandle: common.mustCall((msg) => { assert.match(msg.value, /0\s*/); }), workerExit: common.mustCall((msg) => { assert.strictEqual(msg.code, 0); assert.strictEqual(msg.signal, null); }) }; primary.on('message', (msg) => { const handler = messageHandlers[msg.type]; assert.ok(handler); handler(msg); }); primary.on('exit', common.mustCall((code, signal) => { assert.strictEqual(code, 0); assert.strictEqual(signal, null); })); } else if (cluster.isPrimary) { cluster.setupPrimary({ silent: true, windowsHide: true }); const worker = cluster.fork(); worker.on('exit', (code, signal) => { process.send({ type: 'workerExit', code: code, signal: signal }); }); worker.on('online', (msg) => { process.send({ type: 'workerOnline' }); let output = '0'; if (process.platform === 'win32') { output = child_process.execSync( 'powershell -NoProfile -c ' + `"(Get-Process -Id ${worker.process.pid}).MainWindowHandle"`, { windowsHide: true, encoding: 'utf8' }); } process.send({ type: 'mainWindowHandle', value: output }); worker.send('shutdown'); }); } else { cluster.worker.on('message', (msg) => { cluster.worker.disconnect(); }); }