diff options
Diffstat (limited to 'cli/tests/testdata/workers/bench_round_robin.ts')
-rw-r--r-- | cli/tests/testdata/workers/bench_round_robin.ts | 65 |
1 files changed, 0 insertions, 65 deletions
diff --git a/cli/tests/testdata/workers/bench_round_robin.ts b/cli/tests/testdata/workers/bench_round_robin.ts deleted file mode 100644 index 0380d7979..000000000 --- a/cli/tests/testdata/workers/bench_round_robin.ts +++ /dev/null @@ -1,65 +0,0 @@ -// Benchmark measures time it takes to send a message to a group of workers one -// at a time and wait for a response from all of them. Just a general -// throughput and consistency benchmark. -const data = "HTTP/1.1 200 OK\r\nContent-Length: 12\r\n\r\nHello World\n"; -const workerCount = 4; -const cmdsPerWorker = 400; - -function handleAsyncMsgFromWorker( - promiseTable: Map<number, ReturnType<typeof Promise.withResolvers<string>>>, - msg: { cmdId: number; data: string }, -) { - const promise = promiseTable.get(msg.cmdId); - if (promise === null) { - throw new Error(`Failed to find promise: cmdId: ${msg.cmdId}, msg: ${msg}`); - } - promise?.resolve(data); -} - -async function main() { - const workers: Array< - [Map<number, ReturnType<typeof Promise.withResolvers<string>>>, Worker] - > = []; - for (let i = 1; i <= workerCount; ++i) { - const worker = new Worker( - import.meta.resolve("./bench_worker.ts"), - { type: "module" }, - ); - const { promise, resolve } = Promise.withResolvers<void>(); - worker.onmessage = (e) => { - if (e.data.cmdId === 0) resolve(); - }; - worker.postMessage({ cmdId: 0, action: 2 }); - await promise; - workers.push([new Map(), worker]); - } - // assign callback function - for (const [promiseTable, worker] of workers) { - worker.onmessage = (e) => { - handleAsyncMsgFromWorker(promiseTable, e.data); - }; - } - for (const cmdId of Array(cmdsPerWorker).keys()) { - const promises: Array<Promise<string>> = []; - for (const [promiseTable, worker] of workers) { - const deferred = Promise.withResolvers<string>(); - promiseTable.set(cmdId, deferred); - worker.postMessage({ cmdId: cmdId, action: 1, data }); - promises.push(deferred.promise); - } - for (const promise of promises) { - await promise; - } - } - for (const [, worker] of workers) { - const { promise, resolve } = Promise.withResolvers<void>(); - worker.onmessage = (e) => { - if (e.data.cmdId === 3) resolve(); - }; - worker.postMessage({ action: 3 }); - await promise; - } - console.log("Finished!"); -} - -main(); |