X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=tests%2Fpools%2Fcluster%2Fdynamic.test.mjs;h=d2a250c15b6b1032a6687634caa6cc905e115e00;hb=8e8d9101768c28914dabc95c14740985e18f1f04;hp=870a5f4df9aa0f3bc997b4463f67746d3e7d8c42;hpb=e44639e9af74427b71f1556ff7ec9f7606373e0d;p=poolifier.git diff --git a/tests/pools/cluster/dynamic.test.mjs b/tests/pools/cluster/dynamic.test.mjs index 870a5f4d..d2a250c1 100644 --- a/tests/pools/cluster/dynamic.test.mjs +++ b/tests/pools/cluster/dynamic.test.mjs @@ -1,7 +1,11 @@ import { expect } from 'expect' -import { DynamicClusterPool, PoolEvents } from '../../../lib/index.cjs' +import { + DynamicClusterPool, + PoolEvents, + WorkerChoiceStrategies +} from '../../../lib/index.cjs' import { TaskFunctions } from '../../test-types.cjs' -import { sleep, waitWorkerEvents } from '../../test-utils.cjs' +import { sleep, waitPoolEvents, waitWorkerEvents } from '../../test-utils.cjs' describe('Dynamic cluster pool test suite', () => { const min = 1 @@ -160,14 +164,26 @@ describe('Dynamic cluster pool test suite', () => { './tests/worker-files/thread/testWorker.mjs' ) expect(pool.starting).toBe(false) - expect(pool.workerNodes.length).toBe(pool.info.minSize) - const maxMultiplier = 10000 - const promises = new Set() - for (let i = 0; i < max * maxMultiplier; i++) { - promises.add(pool.execute()) + for (const workerChoiceStrategy of Object.values(WorkerChoiceStrategies)) { + pool.setWorkerChoiceStrategy(workerChoiceStrategy) + expect(pool.readyEventEmitted).toBe(false) + for (let run = 0; run < 2; run++) { + run % 2 !== 0 && pool.enableTasksQueue(true) + const maxMultiplier = 4 + const promises = new Set() + expect(pool.workerNodes.length).toBe(pool.info.minSize) + for (let i = 0; i < max * maxMultiplier; i++) { + promises.add(pool.execute()) + } + await Promise.all(promises) + expect(pool.readyEventEmitted).toBe(true) + expect(pool.workerNodes.length).toBeGreaterThan(pool.info.minSize) + expect(pool.workerNodes.length).toBeLessThanOrEqual(pool.info.maxSize) + await waitPoolEvents(pool, PoolEvents.empty, 1) + expect(pool.readyEventEmitted).toBe(false) + expect(pool.workerNodes.length).toBe(pool.info.minSize) + } } - await Promise.all(promises) - expect(pool.workerNodes.length).toBe(max) // We need to clean up the resources after our test await pool.destroy() })