X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;ds=sidebyside;f=tests%2Fpools%2Fselection-strategies%2Fworker-choice-strategy-context.test.js;h=79bcf2a165eabfcad1c224ff83824336a0a95fec;hb=82888165d01dba6a57f5047d4a4c27c6da6025f3;hp=c571478cbba66e3810e7cb66c740dd681cc95353;hpb=d710242dd39f5dd418b0a89536a9ad88c147fe3b;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 c571478c..79bcf2a1 100644 --- a/tests/pools/selection-strategies/worker-choice-strategy-context.test.js +++ b/tests/pools/selection-strategies/worker-choice-strategy-context.test.js @@ -4,7 +4,7 @@ const { FixedThreadPool, DynamicThreadPool, WorkerChoiceStrategies -} = require('../../../lib/index') +} = require('../../../lib') const { WorkerChoiceStrategyContext } = require('../../../lib/pools/selection-strategies/worker-choice-strategy-context') @@ -112,238 +112,285 @@ describe('Worker choice strategy context test suite', () => { }) it('Verify that setWorkerChoiceStrategy() works with ROUND_ROBIN and fixed pool', () => { + const workerChoiceStrategy = WorkerChoiceStrategies.ROUND_ROBIN const workerChoiceStrategyContext = new WorkerChoiceStrategyContext( fixedPool ) expect( workerChoiceStrategyContext.workerChoiceStrategies.get( - WorkerChoiceStrategies.ROUND_ROBIN + workerChoiceStrategy ).isDynamicPool ).toBe(false) expect( workerChoiceStrategyContext.workerChoiceStrategies.get( - WorkerChoiceStrategies.ROUND_ROBIN + workerChoiceStrategy ) ).toBeInstanceOf(RoundRobinWorkerChoiceStrategy) expect(workerChoiceStrategyContext.workerChoiceStrategy).toBe( - WorkerChoiceStrategies.ROUND_ROBIN - ) - workerChoiceStrategyContext.setWorkerChoiceStrategy( - WorkerChoiceStrategies.ROUND_ROBIN + workerChoiceStrategy ) + workerChoiceStrategyContext.setWorkerChoiceStrategy(workerChoiceStrategy) expect( workerChoiceStrategyContext.workerChoiceStrategies.get( - WorkerChoiceStrategies.ROUND_ROBIN + workerChoiceStrategy ) ).toBeInstanceOf(RoundRobinWorkerChoiceStrategy) expect(workerChoiceStrategyContext.workerChoiceStrategy).toBe( - WorkerChoiceStrategies.ROUND_ROBIN + workerChoiceStrategy ) }) it('Verify that setWorkerChoiceStrategy() works with ROUND_ROBIN and dynamic pool', () => { + const workerChoiceStrategy = WorkerChoiceStrategies.ROUND_ROBIN const workerChoiceStrategyContext = new WorkerChoiceStrategyContext( dynamicPool ) expect( workerChoiceStrategyContext.workerChoiceStrategies.get( - WorkerChoiceStrategies.ROUND_ROBIN + workerChoiceStrategy ).isDynamicPool ).toBe(true) expect( workerChoiceStrategyContext.workerChoiceStrategies.get( - WorkerChoiceStrategies.ROUND_ROBIN + workerChoiceStrategy ) ).toBeInstanceOf(RoundRobinWorkerChoiceStrategy) expect(workerChoiceStrategyContext.workerChoiceStrategy).toBe( - WorkerChoiceStrategies.ROUND_ROBIN - ) - workerChoiceStrategyContext.setWorkerChoiceStrategy( - WorkerChoiceStrategies.ROUND_ROBIN + workerChoiceStrategy ) + workerChoiceStrategyContext.setWorkerChoiceStrategy(workerChoiceStrategy) expect( workerChoiceStrategyContext.workerChoiceStrategies.get( - WorkerChoiceStrategies.ROUND_ROBIN + workerChoiceStrategy ) ).toBeInstanceOf(RoundRobinWorkerChoiceStrategy) expect(workerChoiceStrategyContext.workerChoiceStrategy).toBe( - WorkerChoiceStrategies.ROUND_ROBIN + workerChoiceStrategy ) }) it('Verify that setWorkerChoiceStrategy() works with LESS_USED and fixed pool', () => { + const workerChoiceStrategy = WorkerChoiceStrategies.LESS_USED const workerChoiceStrategyContext = new WorkerChoiceStrategyContext( fixedPool ) expect( workerChoiceStrategyContext.workerChoiceStrategies.get( - WorkerChoiceStrategies.LESS_USED + workerChoiceStrategy ).isDynamicPool ).toBe(false) - workerChoiceStrategyContext.setWorkerChoiceStrategy( - WorkerChoiceStrategies.LESS_USED - ) + workerChoiceStrategyContext.setWorkerChoiceStrategy(workerChoiceStrategy) expect( workerChoiceStrategyContext.workerChoiceStrategies.get( - WorkerChoiceStrategies.LESS_USED + workerChoiceStrategy ) ).toBeInstanceOf(LessUsedWorkerChoiceStrategy) expect(workerChoiceStrategyContext.workerChoiceStrategy).toBe( - WorkerChoiceStrategies.LESS_USED + workerChoiceStrategy ) }) it('Verify that setWorkerChoiceStrategy() works with LESS_USED and dynamic pool', () => { + const workerChoiceStrategy = WorkerChoiceStrategies.LESS_USED const workerChoiceStrategyContext = new WorkerChoiceStrategyContext( dynamicPool ) expect( workerChoiceStrategyContext.workerChoiceStrategies.get( - WorkerChoiceStrategies.LESS_USED + workerChoiceStrategy ).isDynamicPool ).toBe(true) - workerChoiceStrategyContext.setWorkerChoiceStrategy( - WorkerChoiceStrategies.LESS_USED - ) + workerChoiceStrategyContext.setWorkerChoiceStrategy(workerChoiceStrategy) expect( workerChoiceStrategyContext.workerChoiceStrategies.get( - WorkerChoiceStrategies.LESS_USED + workerChoiceStrategy ) ).toBeInstanceOf(LessUsedWorkerChoiceStrategy) expect(workerChoiceStrategyContext.workerChoiceStrategy).toBe( - WorkerChoiceStrategies.LESS_USED + workerChoiceStrategy ) }) it('Verify that setWorkerChoiceStrategy() works with LESS_BUSY and fixed pool', () => { + const workerChoiceStrategy = WorkerChoiceStrategies.LESS_BUSY const workerChoiceStrategyContext = new WorkerChoiceStrategyContext( fixedPool ) expect( workerChoiceStrategyContext.workerChoiceStrategies.get( - WorkerChoiceStrategies.LESS_BUSY + workerChoiceStrategy ).isDynamicPool ).toBe(false) - workerChoiceStrategyContext.setWorkerChoiceStrategy( - WorkerChoiceStrategies.LESS_BUSY - ) + workerChoiceStrategyContext.setWorkerChoiceStrategy(workerChoiceStrategy) expect( workerChoiceStrategyContext.workerChoiceStrategies.get( - WorkerChoiceStrategies.LESS_BUSY + workerChoiceStrategy ) ).toBeInstanceOf(LessBusyWorkerChoiceStrategy) expect(workerChoiceStrategyContext.workerChoiceStrategy).toBe( - WorkerChoiceStrategies.LESS_BUSY + workerChoiceStrategy ) }) it('Verify that setWorkerChoiceStrategy() works with LESS_BUSY and dynamic pool', () => { + const workerChoiceStrategy = WorkerChoiceStrategies.LESS_BUSY const workerChoiceStrategyContext = new WorkerChoiceStrategyContext( dynamicPool ) expect( workerChoiceStrategyContext.workerChoiceStrategies.get( - WorkerChoiceStrategies.LESS_BUSY + workerChoiceStrategy ).isDynamicPool ).toBe(true) - workerChoiceStrategyContext.setWorkerChoiceStrategy( - WorkerChoiceStrategies.LESS_BUSY - ) + workerChoiceStrategyContext.setWorkerChoiceStrategy(workerChoiceStrategy) expect( workerChoiceStrategyContext.workerChoiceStrategies.get( - WorkerChoiceStrategies.LESS_BUSY + workerChoiceStrategy ) ).toBeInstanceOf(LessBusyWorkerChoiceStrategy) expect(workerChoiceStrategyContext.workerChoiceStrategy).toBe( - WorkerChoiceStrategies.LESS_BUSY + workerChoiceStrategy ) }) it('Verify that setWorkerChoiceStrategy() works with FAIR_SHARE and fixed pool', () => { + const workerChoiceStrategy = WorkerChoiceStrategies.FAIR_SHARE const workerChoiceStrategyContext = new WorkerChoiceStrategyContext( fixedPool ) expect( workerChoiceStrategyContext.workerChoiceStrategies.get( - WorkerChoiceStrategies.FAIR_SHARE + workerChoiceStrategy ).isDynamicPool ).toBe(false) - workerChoiceStrategyContext.setWorkerChoiceStrategy( - WorkerChoiceStrategies.FAIR_SHARE - ) + workerChoiceStrategyContext.setWorkerChoiceStrategy(workerChoiceStrategy) expect( workerChoiceStrategyContext.workerChoiceStrategies.get( - WorkerChoiceStrategies.FAIR_SHARE + workerChoiceStrategy ) ).toBeInstanceOf(FairShareWorkerChoiceStrategy) expect(workerChoiceStrategyContext.workerChoiceStrategy).toBe( - WorkerChoiceStrategies.FAIR_SHARE + workerChoiceStrategy ) }) it('Verify that setWorkerChoiceStrategy() works with FAIR_SHARE and dynamic pool', () => { + const workerChoiceStrategy = WorkerChoiceStrategies.FAIR_SHARE const workerChoiceStrategyContext = new WorkerChoiceStrategyContext( dynamicPool ) expect( workerChoiceStrategyContext.workerChoiceStrategies.get( - WorkerChoiceStrategies.FAIR_SHARE + workerChoiceStrategy ).isDynamicPool ).toBe(true) - workerChoiceStrategyContext.setWorkerChoiceStrategy( - WorkerChoiceStrategies.FAIR_SHARE - ) + workerChoiceStrategyContext.setWorkerChoiceStrategy(workerChoiceStrategy) expect( workerChoiceStrategyContext.workerChoiceStrategies.get( - WorkerChoiceStrategies.FAIR_SHARE + workerChoiceStrategy ) ).toBeInstanceOf(FairShareWorkerChoiceStrategy) expect(workerChoiceStrategyContext.workerChoiceStrategy).toBe( - WorkerChoiceStrategies.FAIR_SHARE + workerChoiceStrategy ) }) it('Verify that setWorkerChoiceStrategy() works with WEIGHTED_ROUND_ROBIN and fixed pool', () => { + const workerChoiceStrategy = WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN const workerChoiceStrategyContext = new WorkerChoiceStrategyContext( fixedPool ) expect( workerChoiceStrategyContext.workerChoiceStrategies.get( - WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN + workerChoiceStrategy ).isDynamicPool ).toBe(false) - workerChoiceStrategyContext.setWorkerChoiceStrategy( - WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN - ) + workerChoiceStrategyContext.setWorkerChoiceStrategy(workerChoiceStrategy) expect( workerChoiceStrategyContext.workerChoiceStrategies.get( - WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN + workerChoiceStrategy ) ).toBeInstanceOf(WeightedRoundRobinWorkerChoiceStrategy) expect(workerChoiceStrategyContext.workerChoiceStrategy).toBe( - WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN + workerChoiceStrategy ) }) it('Verify that setWorkerChoiceStrategy() works with WEIGHTED_ROUND_ROBIN and dynamic pool', () => { + const workerChoiceStrategy = WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN const workerChoiceStrategyContext = new WorkerChoiceStrategyContext( dynamicPool ) expect( workerChoiceStrategyContext.workerChoiceStrategies.get( - WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN + workerChoiceStrategy ).isDynamicPool ).toBe(true) - workerChoiceStrategyContext.setWorkerChoiceStrategy( - WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN - ) + workerChoiceStrategyContext.setWorkerChoiceStrategy(workerChoiceStrategy) expect( workerChoiceStrategyContext.workerChoiceStrategies.get( - WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN + workerChoiceStrategy ) ).toBeInstanceOf(WeightedRoundRobinWorkerChoiceStrategy) expect(workerChoiceStrategyContext.workerChoiceStrategy).toBe( - WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN + workerChoiceStrategy + ) + }) + + it('Verify that worker choice strategy options enable median run time pool statistics', () => { + const wwrWorkerChoiceStrategy = WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN + let workerChoiceStrategyContext = new WorkerChoiceStrategyContext( + 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 ) }) })