X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=tests%2Fpools%2Fselection-strategies%2Fworker-choice-strategy-context.test.js;h=df8cd25cb375a4aa50db889c7b014e4c17b22f9c;hb=dc021bcca72f8b4d185d96a301579612fba2793b;hp=92b776f95f092387ee48851c0cbca6e51364ea6d;hpb=8beab0d34afbcadd57a001a1cf3cba99b51d812c;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 92b776f9..df8cd25c 100644 --- a/tests/pools/selection-strategies/worker-choice-strategy-context.test.js +++ b/tests/pools/selection-strategies/worker-choice-strategy-context.test.js @@ -17,6 +17,9 @@ const { const { LeastBusyWorkerChoiceStrategy } = require('../../../lib/pools/selection-strategies/least-busy-worker-choice-strategy') +const { + LeastEluWorkerChoiceStrategy +} = require('../../../lib/pools/selection-strategies/least-elu-worker-choice-strategy') const { FairShareWorkerChoiceStrategy } = require('../../../lib/pools/selection-strategies/fair-share-worker-choice-strategy') @@ -88,7 +91,7 @@ describe('Worker choice strategy context test suite', () => { expect(chosenWorkerKey).toBe(0) }) - it('Verify that execute() throws error if null or undefined is returned', () => { + it('Verify that execute() throws error if null or undefined is returned after retries', () => { const workerChoiceStrategyContext = new WorkerChoiceStrategyContext( fixedPool ) @@ -112,14 +115,14 @@ describe('Worker choice strategy context test suite', () => { WorkerChoiceStrategyUndefinedStub ) expect(() => workerChoiceStrategyContext.execute()).toThrowError( - new Error('Worker node key chosen is null or undefined') + new Error('Worker node key chosen is null or undefined after 6 retries') ) workerChoiceStrategyContext.workerChoiceStrategies.set( workerChoiceStrategyContext.workerChoiceStrategy, WorkerChoiceStrategyNullStub ) expect(() => workerChoiceStrategyContext.execute()).toThrowError( - new Error('Worker node key chosen is null or undefined') + new Error('Worker node key chosen is null or undefined after 6 retries') ) }) @@ -261,6 +264,38 @@ describe('Worker choice strategy context test suite', () => { ) }) + it('Verify that setWorkerChoiceStrategy() works with LEAST_ELU and fixed pool', () => { + const workerChoiceStrategy = WorkerChoiceStrategies.LEAST_ELU + const workerChoiceStrategyContext = new WorkerChoiceStrategyContext( + fixedPool + ) + workerChoiceStrategyContext.setWorkerChoiceStrategy(workerChoiceStrategy) + expect( + workerChoiceStrategyContext.workerChoiceStrategies.get( + workerChoiceStrategy + ) + ).toBeInstanceOf(LeastEluWorkerChoiceStrategy) + expect(workerChoiceStrategyContext.workerChoiceStrategy).toBe( + workerChoiceStrategy + ) + }) + + it('Verify that setWorkerChoiceStrategy() works with LEAST_ELU and dynamic pool', () => { + const workerChoiceStrategy = WorkerChoiceStrategies.LEAST_ELU + const workerChoiceStrategyContext = new WorkerChoiceStrategyContext( + dynamicPool + ) + workerChoiceStrategyContext.setWorkerChoiceStrategy(workerChoiceStrategy) + expect( + workerChoiceStrategyContext.workerChoiceStrategies.get( + workerChoiceStrategy + ) + ).toBeInstanceOf(LeastEluWorkerChoiceStrategy) + expect(workerChoiceStrategyContext.workerChoiceStrategy).toBe( + workerChoiceStrategy + ) + }) + it('Verify that setWorkerChoiceStrategy() works with FAIR_SHARE and fixed pool', () => { const workerChoiceStrategy = WorkerChoiceStrategies.FAIR_SHARE const workerChoiceStrategyContext = new WorkerChoiceStrategyContext( @@ -365,111 +400,58 @@ describe('Worker choice strategy context test suite', () => { fixedPool, wwrWorkerChoiceStrategy, { - medRunTime: true - } - ) - expect(workerChoiceStrategyContext.getRequiredStatistics().avgRunTime).toBe( - false - ) - expect(workerChoiceStrategyContext.getRequiredStatistics().medRunTime).toBe( - true - ) - workerChoiceStrategyContext = new WorkerChoiceStrategyContext( - dynamicPool, - wwrWorkerChoiceStrategy, - { - medRunTime: true - } - ) - expect(workerChoiceStrategyContext.getRequiredStatistics().avgRunTime).toBe( - false - ) - expect(workerChoiceStrategyContext.getRequiredStatistics().medRunTime).toBe( - true - ) - const fsWorkerChoiceStrategy = WorkerChoiceStrategies.FAIR_SHARE - workerChoiceStrategyContext = new WorkerChoiceStrategyContext( - fixedPool, - fsWorkerChoiceStrategy, - { - medRunTime: true - } - ) - expect(workerChoiceStrategyContext.getRequiredStatistics().avgRunTime).toBe( - false - ) - expect(workerChoiceStrategyContext.getRequiredStatistics().medRunTime).toBe( - true - ) - workerChoiceStrategyContext = new WorkerChoiceStrategyContext( - dynamicPool, - fsWorkerChoiceStrategy, - { - medRunTime: true - } - ) - expect(workerChoiceStrategyContext.getRequiredStatistics().avgRunTime).toBe( - false - ) - expect(workerChoiceStrategyContext.getRequiredStatistics().medRunTime).toBe( - true - ) - }) - - it('Verify that worker choice strategy options enable median wait time pool statistics', () => { - const wwrWorkerChoiceStrategy = WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN - let workerChoiceStrategyContext = new WorkerChoiceStrategyContext( - fixedPool, - wwrWorkerChoiceStrategy, - { - medWaitTime: true + runTime: { median: true } } ) expect( - workerChoiceStrategyContext.getRequiredStatistics().avgWaitTime + workerChoiceStrategyContext.getTaskStatisticsRequirements().runTime + .average ).toBe(false) expect( - workerChoiceStrategyContext.getRequiredStatistics().medWaitTime + workerChoiceStrategyContext.getTaskStatisticsRequirements().runTime.median ).toBe(true) workerChoiceStrategyContext = new WorkerChoiceStrategyContext( dynamicPool, wwrWorkerChoiceStrategy, { - medWaitTime: true + runTime: { median: true } } ) expect( - workerChoiceStrategyContext.getRequiredStatistics().avgWaitTime + workerChoiceStrategyContext.getTaskStatisticsRequirements().runTime + .average ).toBe(false) expect( - workerChoiceStrategyContext.getRequiredStatistics().medWaitTime + workerChoiceStrategyContext.getTaskStatisticsRequirements().runTime.median ).toBe(true) const fsWorkerChoiceStrategy = WorkerChoiceStrategies.FAIR_SHARE workerChoiceStrategyContext = new WorkerChoiceStrategyContext( fixedPool, fsWorkerChoiceStrategy, { - medWaitTime: true + runTime: { median: true } } ) expect( - workerChoiceStrategyContext.getRequiredStatistics().avgWaitTime + workerChoiceStrategyContext.getTaskStatisticsRequirements().runTime + .average ).toBe(false) expect( - workerChoiceStrategyContext.getRequiredStatistics().medWaitTime + workerChoiceStrategyContext.getTaskStatisticsRequirements().runTime.median ).toBe(true) workerChoiceStrategyContext = new WorkerChoiceStrategyContext( dynamicPool, fsWorkerChoiceStrategy, { - medWaitTime: true + runTime: { median: true } } ) expect( - workerChoiceStrategyContext.getRequiredStatistics().avgWaitTime + workerChoiceStrategyContext.getTaskStatisticsRequirements().runTime + .average ).toBe(false) expect( - workerChoiceStrategyContext.getRequiredStatistics().medWaitTime + workerChoiceStrategyContext.getTaskStatisticsRequirements().runTime.median ).toBe(true) }) })