From 21f2ae12d1bd27d7b208f979c5c36658ac35d7ed Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Sun, 31 Dec 2023 21:43:25 +0100 Subject: [PATCH] refactor: code cleanups MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Jérôme Benoit --- .../abstract-worker-choice-strategy.ts | 5 -- .../selection-strategies-types.ts | 6 -- .../worker-choice-strategy-context.test.mjs | 75 +++++++++---------- 3 files changed, 35 insertions(+), 51 deletions(-) diff --git a/src/pools/selection-strategies/abstract-worker-choice-strategy.ts b/src/pools/selection-strategies/abstract-worker-choice-strategy.ts index d8d8f32d..c2928930 100644 --- a/src/pools/selection-strategies/abstract-worker-choice-strategy.ts +++ b/src/pools/selection-strategies/abstract-worker-choice-strategy.ts @@ -121,11 +121,6 @@ export abstract class AbstractWorkerChoiceStrategy< this.setTaskStatisticsRequirements(this.opts) } - /** @inheritDoc */ - public hasPoolWorkerNodesReady (): boolean { - return this.pool.workerNodes.some(workerNode => workerNode.info.ready) - } - /** * Whether the worker node is ready or not. * diff --git a/src/pools/selection-strategies/selection-strategies-types.ts b/src/pools/selection-strategies/selection-strategies-types.ts index d30f9eeb..f499da7f 100644 --- a/src/pools/selection-strategies/selection-strategies-types.ts +++ b/src/pools/selection-strategies/selection-strategies-types.ts @@ -202,10 +202,4 @@ export interface IWorkerChoiceStrategy { * @param opts - The worker choice strategy options. */ readonly setOptions: (opts: WorkerChoiceStrategyOptions | undefined) => void - /** - * Whether the pool has worker nodes ready or not. - * - * @returns Whether the pool has worker nodes ready or not. - */ - readonly hasPoolWorkerNodesReady: () => boolean } 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 77f1d4a1..eb854b58 100644 --- a/tests/pools/selection-strategies/worker-choice-strategy-context.test.mjs +++ b/tests/pools/selection-strategies/worker-choice-strategy-context.test.mjs @@ -60,33 +60,6 @@ describe('Worker choice strategy context test suite', () => { ) }) - it('Verify that execute() return the worker node key chosen by the strategy with fixed pool', () => { - const workerChoiceStrategyContext = new WorkerChoiceStrategyContext( - fixedPool - ) - const workerChoiceStrategyStub = createStubInstance( - RoundRobinWorkerChoiceStrategy, - { - hasPoolWorkerNodesReady: stub().returns(true), - choose: stub().returns(0) - } - ) - expect(workerChoiceStrategyContext.workerChoiceStrategy).toBe( - WorkerChoiceStrategies.ROUND_ROBIN - ) - workerChoiceStrategyContext.workerChoiceStrategies.set( - workerChoiceStrategyContext.workerChoiceStrategy, - workerChoiceStrategyStub - ) - const chosenWorkerKey = workerChoiceStrategyContext.execute() - expect( - workerChoiceStrategyContext.workerChoiceStrategies.get( - workerChoiceStrategyContext.workerChoiceStrategy - ).choose.calledOnce - ).toBe(true) - expect(chosenWorkerKey).toBe(0) - }) - it('Verify that execute() throws error if null or undefined is returned after retries', () => { const workerChoiceStrategyContext = new WorkerChoiceStrategyContext( fixedPool @@ -97,7 +70,6 @@ describe('Worker choice strategy context test suite', () => { const workerChoiceStrategyUndefinedStub = createStubInstance( RoundRobinWorkerChoiceStrategy, { - hasPoolWorkerNodesReady: stub().returns(true), choose: stub().returns(undefined) } ) @@ -113,7 +85,6 @@ describe('Worker choice strategy context test suite', () => { const workerChoiceStrategyNullStub = createStubInstance( RoundRobinWorkerChoiceStrategy, { - hasPoolWorkerNodesReady: stub().returns(true), choose: stub().returns(null) } ) @@ -128,26 +99,25 @@ describe('Worker choice strategy context test suite', () => { ) }) - it('Verify that execute() retry until a worker node is ready and chosen', () => { + it('Verify that execute() retry until a worker node is chosen', () => { const workerChoiceStrategyContext = new WorkerChoiceStrategyContext( fixedPool ) const workerChoiceStrategyStub = createStubInstance( RoundRobinWorkerChoiceStrategy, { - hasPoolWorkerNodesReady: stub() + choose: stub() .onCall(0) - .returns(false) + .returns(undefined) .onCall(1) - .returns(false) + .returns(undefined) .onCall(2) - .returns(false) + .returns(undefined) .onCall(3) - .returns(false) + .returns(undefined) .onCall(4) - .returns(false) - .returns(true), - choose: stub().returns(1) + .returns(undefined) + .returns(1) } ) expect(workerChoiceStrategyContext.workerChoiceStrategy).toBe( @@ -162,10 +132,36 @@ describe('Worker choice strategy context test suite', () => { workerChoiceStrategyContext.workerChoiceStrategies.get( workerChoiceStrategyContext.workerChoiceStrategy ).choose.callCount - ).toBe(1) + ).toBe(6) expect(chosenWorkerKey).toBe(1) }) + it('Verify that execute() return the worker node key chosen by the strategy with fixed pool', () => { + const workerChoiceStrategyContext = new WorkerChoiceStrategyContext( + fixedPool + ) + const workerChoiceStrategyStub = createStubInstance( + RoundRobinWorkerChoiceStrategy, + { + choose: stub().returns(0) + } + ) + expect(workerChoiceStrategyContext.workerChoiceStrategy).toBe( + WorkerChoiceStrategies.ROUND_ROBIN + ) + workerChoiceStrategyContext.workerChoiceStrategies.set( + workerChoiceStrategyContext.workerChoiceStrategy, + workerChoiceStrategyStub + ) + const chosenWorkerKey = workerChoiceStrategyContext.execute() + expect( + workerChoiceStrategyContext.workerChoiceStrategies.get( + workerChoiceStrategyContext.workerChoiceStrategy + ).choose.calledOnce + ).toBe(true) + expect(chosenWorkerKey).toBe(0) + }) + it('Verify that execute() return the worker node key chosen by the strategy with dynamic pool', () => { const workerChoiceStrategyContext = new WorkerChoiceStrategyContext( dynamicPool @@ -173,7 +169,6 @@ describe('Worker choice strategy context test suite', () => { const workerChoiceStrategyStub = createStubInstance( RoundRobinWorkerChoiceStrategy, { - hasPoolWorkerNodesReady: stub().returns(true), choose: stub().returns(0) } ) -- 2.34.1