From 15f9c65d45852c97af3c5ff3cf675b880fe3c666 Mon Sep 17 00:00:00 2001 From: AriPerkkio Date: Fri, 30 Jun 2023 08:21:52 +0300 Subject: [PATCH] test: add case for task level isolation --- test/isolation.test.ts | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 test/isolation.test.ts diff --git a/test/isolation.test.ts b/test/isolation.test.ts new file mode 100644 index 0000000..f4a6aa1 --- /dev/null +++ b/test/isolation.test.ts @@ -0,0 +1,38 @@ +import { dirname, resolve } from 'path' +import { Tinypool } from 'tinypool' +import { fileURLToPath } from 'url' + +const __dirname = dirname(fileURLToPath(import.meta.url)) + +test('workers can be isolated between tasks', async () => { + const pool = new Tinypool({ + filename: resolve(__dirname, 'fixtures/sleep.js'), + minThreads: 1, + maxThreads: 1, + isolateWorkers: false, + }) + + function getThreadId() { + expect(pool.threads).toHaveLength(1) + return pool.threads[0]!.threadId + } + + const initialThreadId = getThreadId() + + await pool.run({}) + expect(getThreadId()).toBe(initialThreadId) + + await pool.run({}) + await pool.run({}) + await pool.run({}) + expect(getThreadId()).toBe(initialThreadId) + + // TODO: pool.flushWorkers() + const newThreadId = getThreadId() + expect(newThreadId).not.toBe(initialThreadId) + + await pool.run({}) + await pool.run({}) + await pool.run({}) + expect(getThreadId()).toBe(newThreadId) +})