X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=tests%2Fpools%2Fselection-strategies%2Fworker-choice-strategy-context.test.js;h=a8f187eee6098fab5bb6c8ede3ec5cff434da3d3;hb=da3098610d6cf6155bbbe53c84b6ac6ccd400ff5;hp=bcd84208974d2a6e837851e5f774cb5833b38bce;hpb=b2b1d84ebeb8299fda9b6090c9951e953749bbe0;p=poolifier.git diff --git a/tests/pools/selection-strategies/worker-choice-strategy-context.test.js b/tests/pools/selection-strategies/worker-choice-strategy-context.test.js index bcd84208..a8f187ee 100644 --- a/tests/pools/selection-strategies/worker-choice-strategy-context.test.js +++ b/tests/pools/selection-strategies/worker-choice-strategy-context.test.js @@ -50,6 +50,15 @@ describe('Worker choice strategy context test suite', () => { await dynamicPool.destroy() }) + it('Verify that constructor() initializes the context with all the available worker choice strategies', () => { + const workerChoiceStrategyContext = new WorkerChoiceStrategyContext( + fixedPool + ) + expect(workerChoiceStrategyContext.workerChoiceStrategies.size).toBe( + Object.keys(WorkerChoiceStrategies).length + ) + }) + it('Verify that execute() return the worker chosen by the strategy with fixed pool', () => { const workerChoiceStrategyContext = new WorkerChoiceStrategyContext( fixedPool @@ -60,10 +69,18 @@ describe('Worker choice strategy context test suite', () => { choose: sinon.stub().returns(0) } ) - workerChoiceStrategyContext.workerChoiceStrategy = WorkerChoiceStrategyStub + expect(workerChoiceStrategyContext.workerChoiceStrategyType).toBe( + WorkerChoiceStrategies.ROUND_ROBIN + ) + workerChoiceStrategyContext.workerChoiceStrategies.set( + workerChoiceStrategyContext.workerChoiceStrategyType, + WorkerChoiceStrategyStub + ) const chosenWorkerKey = workerChoiceStrategyContext.execute() expect( - workerChoiceStrategyContext.workerChoiceStrategy.choose.calledOnce + workerChoiceStrategyContext.workerChoiceStrategies.get( + workerChoiceStrategyContext.workerChoiceStrategyType + ).choose.calledOnce ).toBe(true) expect(chosenWorkerKey).toBe(0) }) @@ -78,10 +95,18 @@ describe('Worker choice strategy context test suite', () => { choose: sinon.stub().returns(0) } ) - workerChoiceStrategyContext.workerChoiceStrategy = WorkerChoiceStrategyStub + expect(workerChoiceStrategyContext.workerChoiceStrategyType).toBe( + WorkerChoiceStrategies.ROUND_ROBIN + ) + workerChoiceStrategyContext.workerChoiceStrategies.set( + workerChoiceStrategyContext.workerChoiceStrategyType, + WorkerChoiceStrategyStub + ) const chosenWorkerKey = workerChoiceStrategyContext.execute() expect( - workerChoiceStrategyContext.workerChoiceStrategy.choose.calledOnce + workerChoiceStrategyContext.workerChoiceStrategies.get( + workerChoiceStrategyContext.workerChoiceStrategyType + ).choose.calledOnce ).toBe(true) expect(chosenWorkerKey).toBe(0) }) @@ -90,19 +115,27 @@ describe('Worker choice strategy context test suite', () => { const workerChoiceStrategyContext = new WorkerChoiceStrategyContext( fixedPool ) - expect(workerChoiceStrategyContext.workerChoiceStrategy).toBeInstanceOf( - RoundRobinWorkerChoiceStrategy - ) + expect( + workerChoiceStrategyContext.workerChoiceStrategies.get( + WorkerChoiceStrategies.ROUND_ROBIN + ).isDynamicPool + ).toBe(false) + expect( + workerChoiceStrategyContext.workerChoiceStrategies.get( + WorkerChoiceStrategies.ROUND_ROBIN + ) + ).toBeInstanceOf(RoundRobinWorkerChoiceStrategy) expect(workerChoiceStrategyContext.workerChoiceStrategyType).toBe( WorkerChoiceStrategies.ROUND_ROBIN ) workerChoiceStrategyContext.setWorkerChoiceStrategy( - fixedPool, WorkerChoiceStrategies.ROUND_ROBIN ) - expect(workerChoiceStrategyContext.workerChoiceStrategy).toBeInstanceOf( - RoundRobinWorkerChoiceStrategy - ) + expect( + workerChoiceStrategyContext.workerChoiceStrategies.get( + WorkerChoiceStrategies.ROUND_ROBIN + ) + ).toBeInstanceOf(RoundRobinWorkerChoiceStrategy) expect(workerChoiceStrategyContext.workerChoiceStrategyType).toBe( WorkerChoiceStrategies.ROUND_ROBIN ) @@ -112,19 +145,27 @@ describe('Worker choice strategy context test suite', () => { const workerChoiceStrategyContext = new WorkerChoiceStrategyContext( dynamicPool ) - expect(workerChoiceStrategyContext.workerChoiceStrategy).toBeInstanceOf( - RoundRobinWorkerChoiceStrategy - ) + expect( + workerChoiceStrategyContext.workerChoiceStrategies.get( + WorkerChoiceStrategies.ROUND_ROBIN + ).isDynamicPool + ).toBe(true) + expect( + workerChoiceStrategyContext.workerChoiceStrategies.get( + WorkerChoiceStrategies.ROUND_ROBIN + ) + ).toBeInstanceOf(RoundRobinWorkerChoiceStrategy) expect(workerChoiceStrategyContext.workerChoiceStrategyType).toBe( WorkerChoiceStrategies.ROUND_ROBIN ) workerChoiceStrategyContext.setWorkerChoiceStrategy( - dynamicPool, WorkerChoiceStrategies.ROUND_ROBIN ) - expect(workerChoiceStrategyContext.workerChoiceStrategy).toBeInstanceOf( - RoundRobinWorkerChoiceStrategy - ) + expect( + workerChoiceStrategyContext.workerChoiceStrategies.get( + WorkerChoiceStrategies.ROUND_ROBIN + ) + ).toBeInstanceOf(RoundRobinWorkerChoiceStrategy) expect(workerChoiceStrategyContext.workerChoiceStrategyType).toBe( WorkerChoiceStrategies.ROUND_ROBIN ) @@ -134,13 +175,19 @@ describe('Worker choice strategy context test suite', () => { const workerChoiceStrategyContext = new WorkerChoiceStrategyContext( fixedPool ) + expect( + workerChoiceStrategyContext.workerChoiceStrategies.get( + WorkerChoiceStrategies.LESS_USED + ).isDynamicPool + ).toBe(false) workerChoiceStrategyContext.setWorkerChoiceStrategy( - fixedPool, WorkerChoiceStrategies.LESS_USED ) - expect(workerChoiceStrategyContext.workerChoiceStrategy).toBeInstanceOf( - LessUsedWorkerChoiceStrategy - ) + expect( + workerChoiceStrategyContext.workerChoiceStrategies.get( + WorkerChoiceStrategies.LESS_USED + ) + ).toBeInstanceOf(LessUsedWorkerChoiceStrategy) expect(workerChoiceStrategyContext.workerChoiceStrategyType).toBe( WorkerChoiceStrategies.LESS_USED ) @@ -150,13 +197,19 @@ describe('Worker choice strategy context test suite', () => { const workerChoiceStrategyContext = new WorkerChoiceStrategyContext( dynamicPool ) + expect( + workerChoiceStrategyContext.workerChoiceStrategies.get( + WorkerChoiceStrategies.LESS_USED + ).isDynamicPool + ).toBe(true) workerChoiceStrategyContext.setWorkerChoiceStrategy( - dynamicPool, WorkerChoiceStrategies.LESS_USED ) - expect(workerChoiceStrategyContext.workerChoiceStrategy).toBeInstanceOf( - LessUsedWorkerChoiceStrategy - ) + expect( + workerChoiceStrategyContext.workerChoiceStrategies.get( + WorkerChoiceStrategies.LESS_USED + ) + ).toBeInstanceOf(LessUsedWorkerChoiceStrategy) expect(workerChoiceStrategyContext.workerChoiceStrategyType).toBe( WorkerChoiceStrategies.LESS_USED ) @@ -166,13 +219,19 @@ describe('Worker choice strategy context test suite', () => { const workerChoiceStrategyContext = new WorkerChoiceStrategyContext( fixedPool ) + expect( + workerChoiceStrategyContext.workerChoiceStrategies.get( + WorkerChoiceStrategies.LESS_BUSY + ).isDynamicPool + ).toBe(false) workerChoiceStrategyContext.setWorkerChoiceStrategy( - fixedPool, WorkerChoiceStrategies.LESS_BUSY ) - expect(workerChoiceStrategyContext.workerChoiceStrategy).toBeInstanceOf( - LessBusyWorkerChoiceStrategy - ) + expect( + workerChoiceStrategyContext.workerChoiceStrategies.get( + WorkerChoiceStrategies.LESS_BUSY + ) + ).toBeInstanceOf(LessBusyWorkerChoiceStrategy) expect(workerChoiceStrategyContext.workerChoiceStrategyType).toBe( WorkerChoiceStrategies.LESS_BUSY ) @@ -182,13 +241,19 @@ describe('Worker choice strategy context test suite', () => { const workerChoiceStrategyContext = new WorkerChoiceStrategyContext( dynamicPool ) + expect( + workerChoiceStrategyContext.workerChoiceStrategies.get( + WorkerChoiceStrategies.LESS_BUSY + ).isDynamicPool + ).toBe(true) workerChoiceStrategyContext.setWorkerChoiceStrategy( - dynamicPool, WorkerChoiceStrategies.LESS_BUSY ) - expect(workerChoiceStrategyContext.workerChoiceStrategy).toBeInstanceOf( - LessBusyWorkerChoiceStrategy - ) + expect( + workerChoiceStrategyContext.workerChoiceStrategies.get( + WorkerChoiceStrategies.LESS_BUSY + ) + ).toBeInstanceOf(LessBusyWorkerChoiceStrategy) expect(workerChoiceStrategyContext.workerChoiceStrategyType).toBe( WorkerChoiceStrategies.LESS_BUSY ) @@ -198,13 +263,19 @@ describe('Worker choice strategy context test suite', () => { const workerChoiceStrategyContext = new WorkerChoiceStrategyContext( fixedPool ) + expect( + workerChoiceStrategyContext.workerChoiceStrategies.get( + WorkerChoiceStrategies.FAIR_SHARE + ).isDynamicPool + ).toBe(false) workerChoiceStrategyContext.setWorkerChoiceStrategy( - fixedPool, WorkerChoiceStrategies.FAIR_SHARE ) - expect(workerChoiceStrategyContext.workerChoiceStrategy).toBeInstanceOf( - FairShareWorkerChoiceStrategy - ) + expect( + workerChoiceStrategyContext.workerChoiceStrategies.get( + WorkerChoiceStrategies.FAIR_SHARE + ) + ).toBeInstanceOf(FairShareWorkerChoiceStrategy) expect(workerChoiceStrategyContext.workerChoiceStrategyType).toBe( WorkerChoiceStrategies.FAIR_SHARE ) @@ -214,13 +285,19 @@ describe('Worker choice strategy context test suite', () => { const workerChoiceStrategyContext = new WorkerChoiceStrategyContext( dynamicPool ) + expect( + workerChoiceStrategyContext.workerChoiceStrategies.get( + WorkerChoiceStrategies.FAIR_SHARE + ).isDynamicPool + ).toBe(true) workerChoiceStrategyContext.setWorkerChoiceStrategy( - dynamicPool, WorkerChoiceStrategies.FAIR_SHARE ) - expect(workerChoiceStrategyContext.workerChoiceStrategy).toBeInstanceOf( - FairShareWorkerChoiceStrategy - ) + expect( + workerChoiceStrategyContext.workerChoiceStrategies.get( + WorkerChoiceStrategies.FAIR_SHARE + ) + ).toBeInstanceOf(FairShareWorkerChoiceStrategy) expect(workerChoiceStrategyContext.workerChoiceStrategyType).toBe( WorkerChoiceStrategies.FAIR_SHARE ) @@ -230,13 +307,19 @@ describe('Worker choice strategy context test suite', () => { const workerChoiceStrategyContext = new WorkerChoiceStrategyContext( fixedPool ) + expect( + workerChoiceStrategyContext.workerChoiceStrategies.get( + WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN + ).isDynamicPool + ).toBe(false) workerChoiceStrategyContext.setWorkerChoiceStrategy( - fixedPool, WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN ) - expect(workerChoiceStrategyContext.workerChoiceStrategy).toBeInstanceOf( - WeightedRoundRobinWorkerChoiceStrategy - ) + expect( + workerChoiceStrategyContext.workerChoiceStrategies.get( + WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN + ) + ).toBeInstanceOf(WeightedRoundRobinWorkerChoiceStrategy) expect(workerChoiceStrategyContext.workerChoiceStrategyType).toBe( WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN ) @@ -246,13 +329,19 @@ describe('Worker choice strategy context test suite', () => { const workerChoiceStrategyContext = new WorkerChoiceStrategyContext( dynamicPool ) + expect( + workerChoiceStrategyContext.workerChoiceStrategies.get( + WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN + ).isDynamicPool + ).toBe(true) workerChoiceStrategyContext.setWorkerChoiceStrategy( - dynamicPool, WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN ) - expect(workerChoiceStrategyContext.workerChoiceStrategy).toBeInstanceOf( - WeightedRoundRobinWorkerChoiceStrategy - ) + expect( + workerChoiceStrategyContext.workerChoiceStrategies.get( + WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN + ) + ).toBeInstanceOf(WeightedRoundRobinWorkerChoiceStrategy) expect(workerChoiceStrategyContext.workerChoiceStrategyType).toBe( WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN )