mirror of
https://github.com/denoland/deno.git
synced 2024-12-22 15:24:46 -05:00
chore(workers): Test that closing a worker closes any child workers (#12215)
Before #12156, closing a worker which had children would cause a panic (https://github.com/denoland/deno/issues/11342#issuecomment-918327693). After that PR, closing a worker will also close any child workers.
This commit is contained in:
parent
4e2b59f9df
commit
1a6249c971
5 changed files with 50 additions and 0 deletions
|
@ -1194,6 +1194,11 @@ itest!(worker_drop_handle_race {
|
|||
exit_code: 1,
|
||||
});
|
||||
|
||||
itest!(worker_close_nested {
|
||||
args: "run --quiet --reload --allow-read worker_close_nested.js",
|
||||
output: "worker_close_nested.js.out",
|
||||
});
|
||||
|
||||
itest!(worker_message_before_close {
|
||||
args: "run --quiet --reload --allow-read worker_message_before_close.js",
|
||||
output: "worker_message_before_close.js.out",
|
||||
|
|
20
cli/tests/testdata/worker_close_nested.js
vendored
Normal file
20
cli/tests/testdata/worker_close_nested.js
vendored
Normal file
|
@ -0,0 +1,20 @@
|
|||
// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.
|
||||
|
||||
// Test that closing a worker which has living child workers will automatically
|
||||
// close the children.
|
||||
|
||||
console.log("Starting the main thread");
|
||||
|
||||
const worker = new Worker(
|
||||
new URL("./workers/close_nested_parent.js", import.meta.url),
|
||||
{ type: "module" },
|
||||
);
|
||||
|
||||
setTimeout(() => {
|
||||
console.log("About to close");
|
||||
worker.postMessage({});
|
||||
|
||||
// Keep the process running for another two seconds, to make sure there's no
|
||||
// output from the child worker.
|
||||
setTimeout(() => {}, 2000);
|
||||
}, 1000);
|
5
cli/tests/testdata/worker_close_nested.js.out
vendored
Normal file
5
cli/tests/testdata/worker_close_nested.js.out
vendored
Normal file
|
@ -0,0 +1,5 @@
|
|||
Starting the main thread
|
||||
Starting the parent worker
|
||||
Starting the child worker
|
||||
About to close
|
||||
Closing
|
7
cli/tests/testdata/workers/close_nested_child.js
vendored
Normal file
7
cli/tests/testdata/workers/close_nested_child.js
vendored
Normal file
|
@ -0,0 +1,7 @@
|
|||
// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.
|
||||
|
||||
console.log("Starting the child worker");
|
||||
|
||||
setTimeout(() => {
|
||||
console.log("The child worker survived the death of the parent!!!");
|
||||
}, 2000);
|
13
cli/tests/testdata/workers/close_nested_parent.js
vendored
Normal file
13
cli/tests/testdata/workers/close_nested_parent.js
vendored
Normal file
|
@ -0,0 +1,13 @@
|
|||
// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.
|
||||
|
||||
console.log("Starting the parent worker");
|
||||
|
||||
new Worker(
|
||||
new URL("./close_nested_child.js", import.meta.url),
|
||||
{ type: "module" },
|
||||
);
|
||||
|
||||
self.addEventListener("message", () => {
|
||||
console.log("Closing");
|
||||
self.close();
|
||||
});
|
Loading…
Reference in a new issue