'use strict'; require('../common'); // This test ensures that the messages from the internal // message port are drained before the call to 'kDispose', // and so all the stdio messages from the worker are processed // in the parent and are pushed to their target streams. const assert = require('assert'); const { Worker, isMainThread, parentPort, threadId, } = require('worker_threads'); if (isMainThread) { const workerIdsToOutput = new Map(); for (let i = 0; i < 2; i++) { const worker = new Worker(__filename, { stdout: true }); const workerOutput = []; workerIdsToOutput.set(worker.threadId, workerOutput); worker.on('message', console.log); worker.stdout.on('data', (chunk) => { workerOutput.push(chunk.toString().trim()); }); } process.on('exit', () => { for (const [threadId, workerOutput] of workerIdsToOutput) { assert.ok(workerOutput.includes(`1 threadId: ${threadId}`)); assert.ok(workerOutput.includes(`2 threadId: ${threadId}`)); } }); } else { console.log(`1 threadId: ${threadId}`); console.log(`2 threadId: ${threadId}`); parentPort.postMessage(Array(100).fill(1)); }