1 const { expect
} = require('expect')
2 // const sinon = require('sinon')
4 getWorkerChoiceStrategy
5 } = require('../../../lib/pools/selection-strategies/selection-strategies-utils')
9 } = require('../../../lib/index')
11 RoundRobinWorkerChoiceStrategy
12 } = require('../../../lib/pools/selection-strategies/round-robin-worker-choice-strategy')
14 LessRecentlyUsedWorkerChoiceStrategy
15 } = require('../../../lib/pools/selection-strategies/less-recently-used-worker-choice-strategy')
17 FairShareWorkerChoiceStrategy
18 } = require('../../../lib/pools/selection-strategies/fair-share-worker-choice-strategy')
20 WeightedRoundRobinWorkerChoiceStrategy
21 } = require('../../../lib/pools/selection-strategies/weighted-round-robin-worker-choice-strategy')
23 describe('Selection strategies utils test suite', () => {
28 pool
= new FixedThreadPool(max
, './tests/worker-files/thread/testWorker.js')
39 it('Verify that getWorkerChoiceStrategy() default return ROUND_ROBIN strategy', () => {
40 const strategy
= getWorkerChoiceStrategy(pool
)
41 expect(strategy
).toBeInstanceOf(RoundRobinWorkerChoiceStrategy
)
44 it('Verify that getWorkerChoiceStrategy() can return ROUND_ROBIN strategy', () => {
45 const strategy
= getWorkerChoiceStrategy(
47 WorkerChoiceStrategies
.ROUND_ROBIN
49 expect(strategy
).toBeInstanceOf(RoundRobinWorkerChoiceStrategy
)
52 it('Verify that getWorkerChoiceStrategy() can return LESS_RECENTLY_USED strategy', () => {
53 const strategy
= getWorkerChoiceStrategy(
55 WorkerChoiceStrategies
.LESS_RECENTLY_USED
57 expect(strategy
).toBeInstanceOf(LessRecentlyUsedWorkerChoiceStrategy
)
60 it('Verify that getWorkerChoiceStrategy() can return FAIR_SHARE strategy', () => {
61 const strategy
= getWorkerChoiceStrategy(
63 WorkerChoiceStrategies
.FAIR_SHARE
65 expect(strategy
).toBeInstanceOf(FairShareWorkerChoiceStrategy
)
68 it('Verify that getWorkerChoiceStrategy() can return WEIGHTED_ROUND_ROBIN strategy', () => {
69 const strategy
= getWorkerChoiceStrategy(
71 WorkerChoiceStrategies
.WEIGHTED_ROUND_ROBIN
73 expect(strategy
).toBeInstanceOf(WeightedRoundRobinWorkerChoiceStrategy
)
76 it('Verify that getWorkerChoiceStrategy() throw error on unknown strategy', () => {
78 getWorkerChoiceStrategy(pool
, 'UNKNOWN_STRATEGY')
80 new Error("Worker choice strategy 'UNKNOWN_STRATEGY' not found")