Commit | Line | Data |
---|---|---|
a3809289 JB |
1 | const { expect } = require('expect') |
2 | const sinon = require('sinon') | |
3 | const { | |
4 | SelectionStrategiesUtils | |
5 | } = require('../../../lib/pools/selection-strategies/selection-strategies-utils') | |
6 | const { | |
7 | FixedThreadPool, | |
8 | WorkerChoiceStrategies | |
9 | } = require('../../../lib/index') | |
10 | const { | |
11 | RoundRobinWorkerChoiceStrategy | |
12 | } = require('../../../lib/pools/selection-strategies/round-robin-worker-choice-strategy') | |
13 | const { | |
14 | LessRecentlyUsedWorkerChoiceStrategy | |
15 | } = require('../../../lib/pools/selection-strategies/less-recently-used-worker-choice-strategy') | |
23ff945a JB |
16 | const { |
17 | FairShareWorkerChoiceStrategy | |
18 | } = require('../../../lib/pools/selection-strategies/fair-share-worker-choice-strategy') | |
19 | // const { | |
20 | // WeightedRoundRobinWorkerChoiceStrategy | |
21 | // } = require('../../../lib/pools/selection-strategies/weighted-round-robin-choice-strategy') | |
a3809289 JB |
22 | |
23 | describe('Selection strategies utils test suite', () => { | |
24 | let pool | |
25 | beforeEach(() => { | |
26 | pool = sinon.createStubInstance(FixedThreadPool) | |
27 | }) | |
28 | ||
29 | afterEach(() => { | |
30 | sinon.restore() | |
31 | }) | |
32 | ||
33 | it('Verify that getWorkerChoiceStrategy() default return ROUND_ROBIN strategy', () => { | |
34 | const strategy = SelectionStrategiesUtils.getWorkerChoiceStrategy(pool) | |
35 | expect(strategy).toBeInstanceOf(RoundRobinWorkerChoiceStrategy) | |
36 | }) | |
37 | ||
38 | it('Verify that getWorkerChoiceStrategy() can return ROUND_ROBIN strategy', () => { | |
39 | const strategy = SelectionStrategiesUtils.getWorkerChoiceStrategy( | |
40 | pool, | |
41 | WorkerChoiceStrategies.ROUND_ROBIN | |
42 | ) | |
43 | expect(strategy).toBeInstanceOf(RoundRobinWorkerChoiceStrategy) | |
44 | }) | |
45 | ||
46 | it('Verify that getWorkerChoiceStrategy() can return LESS_RECENTLY_USED strategy', () => { | |
47 | const strategy = SelectionStrategiesUtils.getWorkerChoiceStrategy( | |
48 | pool, | |
49 | WorkerChoiceStrategies.LESS_RECENTLY_USED | |
50 | ) | |
51 | expect(strategy).toBeInstanceOf(LessRecentlyUsedWorkerChoiceStrategy) | |
52 | }) | |
53 | ||
23ff945a JB |
54 | it('Verify that getWorkerChoiceStrategy() can return FAIR_SHARE strategy', () => { |
55 | const strategy = SelectionStrategiesUtils.getWorkerChoiceStrategy( | |
56 | pool, | |
57 | WorkerChoiceStrategies.FAIR_SHARE | |
58 | ) | |
59 | expect(strategy).toBeInstanceOf(FairShareWorkerChoiceStrategy) | |
60 | }) | |
61 | ||
62 | // it('Verify that getWorkerChoiceStrategy() can return WEIGHTED_ROUND_ROBIN strategy', () => { | |
63 | // const strategy = SelectionStrategiesUtils.getWorkerChoiceStrategy( | |
64 | // pool, | |
65 | // WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN | |
66 | // ) | |
67 | // expect(strategy).toBeInstanceOf(WeightedRoundRobinWorkerChoiceStrategy) | |
68 | // }) | |
69 | ||
a3809289 JB |
70 | it('Verify that getWorkerChoiceStrategy() throw error on unknown strategy', () => { |
71 | expect(() => { | |
72 | SelectionStrategiesUtils.getWorkerChoiceStrategy(pool, 'UNKNOWN_STRATEGY') | |
73 | }).toThrowError( | |
74 | new Error("Worker choice strategy 'UNKNOWN_STRATEGY' not found") | |
75 | ) | |
76 | }) | |
77 | }) |