X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=tests%2Fpools%2Fselection-strategies%2Fworker-choice-strategy-context.test.mjs;h=6615b8c445f0b069b645577017f2725685a0bafa;hb=d35e571704515a8b729d3455e4784054f07c368f;hp=bb8c7fefb3a1567919af0736f698c6e6f4a55359;hpb=6ff68506534dde3c585fd6a6abb299744f7002ca;p=poolifier.git diff --git a/tests/pools/selection-strategies/worker-choice-strategy-context.test.mjs b/tests/pools/selection-strategies/worker-choice-strategy-context.test.mjs index bb8c7fef..6615b8c4 100644 --- a/tests/pools/selection-strategies/worker-choice-strategy-context.test.mjs +++ b/tests/pools/selection-strategies/worker-choice-strategy-context.test.mjs @@ -4,15 +4,15 @@ import { DynamicThreadPool, FixedThreadPool, WorkerChoiceStrategies -} from '../../../lib/index.js' -import { WorkerChoiceStrategyContext } from '../../../lib/pools/selection-strategies/worker-choice-strategy-context.js' -import { RoundRobinWorkerChoiceStrategy } from '../../../lib/pools/selection-strategies/round-robin-worker-choice-strategy.js' -import { LeastUsedWorkerChoiceStrategy } from '../../../lib/pools/selection-strategies/least-used-worker-choice-strategy.js' -import { LeastBusyWorkerChoiceStrategy } from '../../../lib/pools/selection-strategies/least-busy-worker-choice-strategy.js' -import { LeastEluWorkerChoiceStrategy } from '../../../lib/pools/selection-strategies/least-elu-worker-choice-strategy.js' -import { FairShareWorkerChoiceStrategy } from '../../../lib/pools/selection-strategies/fair-share-worker-choice-strategy.js' -import { WeightedRoundRobinWorkerChoiceStrategy } from '../../../lib/pools/selection-strategies/weighted-round-robin-worker-choice-strategy.js' -import { InterleavedWeightedRoundRobinWorkerChoiceStrategy } from '../../../lib/pools/selection-strategies/interleaved-weighted-round-robin-worker-choice-strategy.js' +} from '../../../lib/index.cjs' +import { WorkerChoiceStrategyContext } from '../../../lib/pools/selection-strategies/worker-choice-strategy-context.cjs' +import { RoundRobinWorkerChoiceStrategy } from '../../../lib/pools/selection-strategies/round-robin-worker-choice-strategy.cjs' +import { LeastUsedWorkerChoiceStrategy } from '../../../lib/pools/selection-strategies/least-used-worker-choice-strategy.cjs' +import { LeastBusyWorkerChoiceStrategy } from '../../../lib/pools/selection-strategies/least-busy-worker-choice-strategy.cjs' +import { LeastEluWorkerChoiceStrategy } from '../../../lib/pools/selection-strategies/least-elu-worker-choice-strategy.cjs' +import { FairShareWorkerChoiceStrategy } from '../../../lib/pools/selection-strategies/fair-share-worker-choice-strategy.cjs' +import { WeightedRoundRobinWorkerChoiceStrategy } from '../../../lib/pools/selection-strategies/weighted-round-robin-worker-choice-strategy.cjs' +import { InterleavedWeightedRoundRobinWorkerChoiceStrategy } from '../../../lib/pools/selection-strategies/interleaved-weighted-round-robin-worker-choice-strategy.cjs' describe('Worker choice strategy context test suite', () => { const min = 1 @@ -95,7 +95,12 @@ describe('Worker choice strategy context test suite', () => { workerChoiceStrategyUndefinedStub ) expect(() => workerChoiceStrategyContext.execute()).toThrow( - new Error('Worker node key chosen is null or undefined after 6 retries') + new Error( + `Worker node key chosen is null or undefined after ${ + fixedPool.info.maxSize + + Object.keys(workerChoiceStrategyContext.opts.weights).length + } retries` + ) ) const workerChoiceStrategyNullStub = createStubInstance( RoundRobinWorkerChoiceStrategy, @@ -109,7 +114,12 @@ describe('Worker choice strategy context test suite', () => { workerChoiceStrategyNullStub ) expect(() => workerChoiceStrategyContext.execute()).toThrow( - new Error('Worker node key chosen is null or undefined after 6 retries') + new Error( + `Worker node key chosen is null or undefined after ${ + fixedPool.info.maxSize + + Object.keys(workerChoiceStrategyContext.opts.weights).length + } retries` + ) ) }) @@ -131,12 +141,6 @@ describe('Worker choice strategy context test suite', () => { .returns(false) .onCall(4) .returns(false) - .onCall(6) - .returns(false) - .onCall(7) - .returns(false) - .onCall(8) - .returns(false) .returns(true), choose: stub().returns(1) } @@ -153,7 +157,7 @@ describe('Worker choice strategy context test suite', () => { workerChoiceStrategyContext.workerChoiceStrategies.get( workerChoiceStrategyContext.workerChoiceStrategy ).hasPoolWorkerNodesReady.callCount - ).toBe(12) + ).toBe(6) expect( workerChoiceStrategyContext.workerChoiceStrategies.get( workerChoiceStrategyContext.workerChoiceStrategy @@ -162,7 +166,7 @@ describe('Worker choice strategy context test suite', () => { expect(chosenWorkerKey).toBe(1) }) - it('Verify that execute() throws error if worker choice strategy consecutive executions has been reached', () => { + it('Verify that execute() throws error if worker choice strategy recursion reach the maximum depth', () => { const workerChoiceStrategyContext = new WorkerChoiceStrategyContext( fixedPool ) @@ -181,9 +185,7 @@ describe('Worker choice strategy context test suite', () => { workerChoiceStrategyStub ) expect(() => workerChoiceStrategyContext.execute()).toThrow( - new RangeError( - 'Worker choice strategy consecutive executions has exceeded the maximum of 10000' - ) + new RangeError('Maximum call stack size exceeded') ) })