mirror of
https://github.com/nodejs/node.git
synced 2024-11-21 21:19:50 +01:00
66a635cece
PR-URL: https://github.com/nodejs/node/pull/53682 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Gerhard Stöbich <deb2001-github@yahoo.de> Reviewed-By: Marco Ippolito <marcoippolito54@gmail.com>
49 lines
1.1 KiB
JavaScript
49 lines
1.1 KiB
JavaScript
'use strict';
|
|
|
|
const common = require('../common');
|
|
const { once } = require('node:events');
|
|
const {
|
|
parentPort,
|
|
postMessageToThread,
|
|
threadId,
|
|
Worker,
|
|
workerData,
|
|
} = require('node:worker_threads');
|
|
const { rejects } = require('node:assert');
|
|
|
|
async function test() {
|
|
await rejects(common.mustCall(function() {
|
|
return postMessageToThread(threadId);
|
|
}), {
|
|
name: 'Error',
|
|
code: 'ERR_WORKER_MESSAGING_SAME_THREAD',
|
|
});
|
|
|
|
await rejects(common.mustCall(function() {
|
|
return postMessageToThread(Date.now());
|
|
}), {
|
|
name: 'Error',
|
|
code: 'ERR_WORKER_MESSAGING_FAILED',
|
|
});
|
|
|
|
// The delivery to the first worker will fail as there is no listener for `workerMessage`
|
|
const worker = new Worker(__filename, { workerData: { children: true } });
|
|
await once(worker, 'message');
|
|
|
|
await rejects(common.mustCall(function() {
|
|
return postMessageToThread(worker.threadId);
|
|
}), {
|
|
name: 'Error',
|
|
code: 'ERR_WORKER_MESSAGING_FAILED',
|
|
});
|
|
|
|
worker.postMessage('success');
|
|
}
|
|
|
|
if (!workerData?.children) {
|
|
test();
|
|
} else {
|
|
parentPort.postMessage('ready');
|
|
parentPort.once('message', common.mustCall());
|
|
}
|