X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=tests%2Fpools%2Fthread%2Ffixed.test.mjs;h=3da05735588953cf6c0882a30aa86a231dd8b841;hb=53a0019f59b1d5f10be6acbaca2e6a970dd1fc6c;hp=3969c83ad7464c728d7df33dd092673c16384734;hpb=b2fd3f4a217ac09110da00b3b65dcdd36de4bf74;p=poolifier.git diff --git a/tests/pools/thread/fixed.test.mjs b/tests/pools/thread/fixed.test.mjs index 3969c83a..3da05735 100644 --- a/tests/pools/thread/fixed.test.mjs +++ b/tests/pools/thread/fixed.test.mjs @@ -1,8 +1,9 @@ import { expect } from 'expect' -import { FixedThreadPool, PoolEvents } from '../../../lib/index.js' -import { TaskFunctions } from '../../test-types.js' -import { waitPoolEvents, waitWorkerEvents } from '../../test-utils.js' -import { DEFAULT_TASK_NAME } from '../../../lib/utils.js' + +import { FixedThreadPool, PoolEvents } from '../../../lib/index.cjs' +import { DEFAULT_TASK_NAME } from '../../../lib/utils.cjs' +import { TaskFunctions } from '../../test-types.cjs' +import { waitPoolEvents, waitWorkerEvents } from '../../test-utils.cjs' describe('Fixed thread pool test suite', () => { const numberOfThreads = 6 @@ -67,7 +68,7 @@ describe('Fixed thread pool test suite', () => { let result = await pool.execute({ function: TaskFunctions.fibonacci }) - expect(result).toBe(75025) + expect(result).toBe(354224848179262000000) result = await pool.execute({ function: TaskFunctions.factorial }) @@ -130,6 +131,7 @@ describe('Fixed thread pool test suite', () => { expect(workerNode.usage.tasks.maxQueued).toBe( maxMultiplier - queuePool.opts.tasksQueueOptions.concurrency ) + expect(workerNode.usage.tasks.sequentiallyStolen).toBe(0) expect(workerNode.usage.tasks.stolen).toBe(0) } expect(queuePool.info.executedTasks).toBe(0) @@ -157,6 +159,12 @@ describe('Fixed thread pool test suite', () => { expect(workerNode.usage.tasks.maxQueued).toBe( maxMultiplier - queuePool.opts.tasksQueueOptions.concurrency ) + expect(workerNode.usage.tasks.sequentiallyStolen).toBeGreaterThanOrEqual( + 0 + ) + expect(workerNode.usage.tasks.sequentiallyStolen).toBeLessThanOrEqual( + numberOfThreads * maxMultiplier + ) expect(workerNode.usage.tasks.stolen).toBeGreaterThanOrEqual(0) expect(workerNode.usage.tasks.stolen).toBeLessThanOrEqual( numberOfThreads * maxMultiplier @@ -202,8 +210,9 @@ describe('Fixed thread pool test suite', () => { error = e } expect(result).toStrictEqual({ ok: 1 }) - expect(error).toStrictEqual( - new TypeError('Found invalid object in transferList') + expect(error).toBeInstanceOf(Error) + expect(error.message).toMatch( + /Found invalid (object|value) in transferList/ ) }) @@ -292,6 +301,11 @@ describe('Fixed thread pool test suite', () => { await pool.destroy() const numberOfExitEvents = await exitPromise expect(pool.started).toBe(false) + expect(pool.emitter.eventNames()).toStrictEqual([ + PoolEvents.busy, + PoolEvents.destroy + ]) + expect(pool.readyEventEmitted).toBe(false) expect(pool.workerNodes.length).toBe(0) expect(numberOfExitEvents).toBe(numberOfThreads) expect(poolDestroy).toBe(1) @@ -334,13 +348,14 @@ describe('Fixed thread pool test suite', () => { }) await expect(pool.destroyWorkerNode(workerNodeKey)).resolves.toBeUndefined() expect(exitEvent).toBe(1) - expect(pool.workerNodes.length).toBe(numberOfThreads - 1) + // Simulates an illegitimate worker node destroy and the minimum number of worker nodes is guaranteed + expect(pool.workerNodes.length).toBe(numberOfThreads) await pool.destroy() }) - it('Verify that a pool with zero worker fails', async () => { + it('Verify that a pool with zero worker fails', () => { expect( () => new FixedThreadPool(0, './tests/worker-files/thread/testWorker.mjs') - ).toThrowError('Cannot instantiate a fixed pool with zero worker') + ).toThrow('Cannot instantiate a fixed pool with zero worker') }) })