Skip to content

Commit

Permalink
chore(workers): Test that closing a worker closes any child workers (#…
Browse files Browse the repository at this point in the history
…12215)

Before #12156, closing a worker which had children would cause a panic
(#11342 (comment)).

After that PR, closing a worker will also close any child workers.
  • Loading branch information
Andreu Botella authored Sep 25, 2021
1 parent 4e2b59f commit 1a6249c
Show file tree
Hide file tree
Showing 5 changed files with 50 additions and 0 deletions.
5 changes: 5 additions & 0 deletions cli/tests/integration/run_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
20 changes: 20 additions & 0 deletions cli/tests/testdata/worker_close_nested.js
Original file line number Diff line number Diff line change
@@ -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 changes: 5 additions & 0 deletions cli/tests/testdata/worker_close_nested.js.out
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Starting the main thread
Starting the parent worker
Starting the child worker
About to close
Closing
7 changes: 7 additions & 0 deletions cli/tests/testdata/workers/close_nested_child.js
Original file line number Diff line number Diff line change
@@ -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 changes: 13 additions & 0 deletions cli/tests/testdata/workers/close_nested_parent.js
Original file line number Diff line number Diff line change
@@ -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();
});

0 comments on commit 1a6249c

Please sign in to comment.