diff options
Diffstat (limited to 'cli/tests')
-rw-r--r-- | cli/tests/workers/large_message_worker.js | 14 | ||||
-rw-r--r-- | cli/tests/workers_large_message_bench.ts | 35 |
2 files changed, 49 insertions, 0 deletions
diff --git a/cli/tests/workers/large_message_worker.js b/cli/tests/workers/large_message_worker.js new file mode 100644 index 000000000..f7b7da8a0 --- /dev/null +++ b/cli/tests/workers/large_message_worker.js @@ -0,0 +1,14 @@ +// Copyright 2020 the Deno authors. All rights reserved. MIT license. + +const dataSmall = ""; +const dataLarge = "x".repeat(10 * 1024); + +onmessage = function (e) { + for (let i = 0; i <= 10; i++) { + if (i % 2 == 0) { + postMessage(dataLarge); + } else { + postMessage(dataSmall); + } + } +}; diff --git a/cli/tests/workers_large_message_bench.ts b/cli/tests/workers_large_message_bench.ts new file mode 100644 index 000000000..9cda5a40d --- /dev/null +++ b/cli/tests/workers_large_message_bench.ts @@ -0,0 +1,35 @@ +// Copyright 2020 the Deno authors. All rights reserved. MIT license. + +// deno-lint-ignore-file + +import { deferred } from "../../test_util/std/async/deferred.ts"; + +function oneWorker(i: any): Promise<void> { + return new Promise<void>((resolve) => { + let countDown = 10; + const worker = new Worker( + new URL("workers/large_message_worker.js", import.meta.url).href, + { type: "module" }, + ); + worker.onmessage = (e): void => { + if (countDown > 0) { + countDown--; + return; + } + worker.terminate(); + resolve(); + }; + worker.postMessage("hi " + i); + }); +} + +function bench(): Promise<any> { + let promises = []; + for (let i = 0; i < 50; i++) { + promises.push(oneWorker(i)); + } + + return Promise.all(promises); +} + +bench(); |