From bbc211906dcd5043af549250343cd7b42fb45043 Mon Sep 17 00:00:00 2001 From: Satya Rohith Date: Thu, 14 Mar 2024 01:22:53 +0530 Subject: fix(ext/node): make worker ids sequential (#22884) --- tests/integration/worker_tests.rs | 6 ++++ .../testdata/workers/worker_ids_are_sequential.ts | 34 ++++++++++++++++++++++ .../workers/worker_ids_are_sequential.ts.out | 4 +++ 3 files changed, 44 insertions(+) create mode 100644 tests/testdata/workers/worker_ids_are_sequential.ts create mode 100644 tests/testdata/workers/worker_ids_are_sequential.ts.out (limited to 'tests') diff --git a/tests/integration/worker_tests.rs b/tests/integration/worker_tests.rs index 492a06e36..8fdef8b2b 100644 --- a/tests/integration/worker_tests.rs +++ b/tests/integration/worker_tests.rs @@ -112,6 +112,12 @@ itest!(worker_doest_stall_event_loop { exit_code: 0, }); +itest!(worker_ids_are_sequential { + args: "run --quiet -A workers/worker_ids_are_sequential.ts", + output: "workers/worker_ids_are_sequential.ts.out", + exit_code: 0, +}); + // Test for https://github.com/denoland/deno/issues/22629 itest!(node_worker_auto_exits { args: "run --quiet --allow-read workers/node_worker_auto_exits.mjs", diff --git a/tests/testdata/workers/worker_ids_are_sequential.ts b/tests/testdata/workers/worker_ids_are_sequential.ts new file mode 100644 index 000000000..eb90f0d47 --- /dev/null +++ b/tests/testdata/workers/worker_ids_are_sequential.ts @@ -0,0 +1,34 @@ +import { + isMainThread, + parentPort, + threadId, + Worker, +} from "node:worker_threads"; + +console.log("threadId", threadId); + +if (isMainThread) { + const worker = new Worker(new URL(import.meta.url)); + worker.on("message", (msg) => console.log("from worker:", msg)); + worker.on("error", () => { + throw new Error("error"); + }); + worker.on("exit", (code) => { + if (code !== 0) { + reject(new Error(`Worker stopped with exit code ${code}`)); + } + }); +} else if (threadId == 1) { + const worker = new Worker(new URL(import.meta.url)); + worker.on("message", (msg) => console.log("from worker:", msg)); + worker.on("error", () => { + throw new Error("error"); + }); + worker.on("exit", (code) => { + if (code !== 0) { + reject(new Error(`Worker stopped with exit code ${code}`)); + } + }); +} else { + parentPort.postMessage("hello!"); +} diff --git a/tests/testdata/workers/worker_ids_are_sequential.ts.out b/tests/testdata/workers/worker_ids_are_sequential.ts.out new file mode 100644 index 000000000..1f0552864 --- /dev/null +++ b/tests/testdata/workers/worker_ids_are_sequential.ts.out @@ -0,0 +1,4 @@ +threadId 0 +threadId 1 +threadId 2 +from worker: hello! -- cgit v1.2.3