Commit | Line | Data |
---|---|---|
a3809289 | 1 | const { expect } = require('expect') |
c15273f2 | 2 | // const sinon = require('sinon') |
a3809289 | 3 | const { |
78cea37e | 4 | getWorkerChoiceStrategy |
a3809289 JB |
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 { | |
737c6d97 JB |
14 | LessUsedWorkerChoiceStrategy |
15 | } = require('../../../lib/pools/selection-strategies/less-used-worker-choice-strategy') | |
168c526f JB |
16 | const { |
17 | LessBusyWorkerChoiceStrategy | |
18 | } = require('../../../lib/pools/selection-strategies/less-busy-worker-choice-strategy') | |
23ff945a JB |
19 | const { |
20 | FairShareWorkerChoiceStrategy | |
21 | } = require('../../../lib/pools/selection-strategies/fair-share-worker-choice-strategy') | |
c15273f2 JB |
22 | const { |
23 | WeightedRoundRobinWorkerChoiceStrategy | |
fa6f1296 | 24 | } = require('../../../lib/pools/selection-strategies/weighted-round-robin-worker-choice-strategy') |
a3809289 JB |
25 | |
26 | describe('Selection strategies utils test suite', () => { | |
c15273f2 | 27 | const max = 3 |
a3809289 | 28 | let pool |
c15273f2 JB |
29 | |
30 | before(() => { | |
31 | pool = new FixedThreadPool(max, './tests/worker-files/thread/testWorker.js') | |
a3809289 JB |
32 | }) |
33 | ||
c15273f2 JB |
34 | // afterEach(() => { |
35 | // sinon.restore() | |
36 | // }) | |
37 | ||
fd7ebd49 JB |
38 | after(async () => { |
39 | await pool.destroy() | |
a3809289 JB |
40 | }) |
41 | ||
42 | it('Verify that getWorkerChoiceStrategy() default return ROUND_ROBIN strategy', () => { | |
78cea37e | 43 | const strategy = getWorkerChoiceStrategy(pool) |
a3809289 JB |
44 | expect(strategy).toBeInstanceOf(RoundRobinWorkerChoiceStrategy) |
45 | }) | |
46 | ||
47 | it('Verify that getWorkerChoiceStrategy() can return ROUND_ROBIN strategy', () => { | |
78cea37e | 48 | const strategy = getWorkerChoiceStrategy( |
a3809289 JB |
49 | pool, |
50 | WorkerChoiceStrategies.ROUND_ROBIN | |
51 | ) | |
52 | expect(strategy).toBeInstanceOf(RoundRobinWorkerChoiceStrategy) | |
53 | }) | |
54 | ||
737c6d97 | 55 | it('Verify that getWorkerChoiceStrategy() can return LESS_USED strategy', () => { |
78cea37e | 56 | const strategy = getWorkerChoiceStrategy( |
a3809289 | 57 | pool, |
737c6d97 | 58 | WorkerChoiceStrategies.LESS_USED |
a3809289 | 59 | ) |
737c6d97 | 60 | expect(strategy).toBeInstanceOf(LessUsedWorkerChoiceStrategy) |
a3809289 JB |
61 | }) |
62 | ||
168c526f JB |
63 | it('Verify that getWorkerChoiceStrategy() can return LESS_BUSY strategy', () => { |
64 | const strategy = getWorkerChoiceStrategy( | |
65 | pool, | |
66 | WorkerChoiceStrategies.LESS_BUSY | |
67 | ) | |
68 | expect(strategy).toBeInstanceOf(LessBusyWorkerChoiceStrategy) | |
69 | }) | |
70 | ||
23ff945a | 71 | it('Verify that getWorkerChoiceStrategy() can return FAIR_SHARE strategy', () => { |
78cea37e | 72 | const strategy = getWorkerChoiceStrategy( |
23ff945a JB |
73 | pool, |
74 | WorkerChoiceStrategies.FAIR_SHARE | |
75 | ) | |
76 | expect(strategy).toBeInstanceOf(FairShareWorkerChoiceStrategy) | |
77 | }) | |
78 | ||
c15273f2 | 79 | it('Verify that getWorkerChoiceStrategy() can return WEIGHTED_ROUND_ROBIN strategy', () => { |
78cea37e | 80 | const strategy = getWorkerChoiceStrategy( |
c15273f2 JB |
81 | pool, |
82 | WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN | |
83 | ) | |
84 | expect(strategy).toBeInstanceOf(WeightedRoundRobinWorkerChoiceStrategy) | |
85 | }) | |
23ff945a | 86 | |
a3809289 JB |
87 | it('Verify that getWorkerChoiceStrategy() throw error on unknown strategy', () => { |
88 | expect(() => { | |
78cea37e | 89 | getWorkerChoiceStrategy(pool, 'UNKNOWN_STRATEGY') |
a3809289 JB |
90 | }).toThrowError( |
91 | new Error("Worker choice strategy 'UNKNOWN_STRATEGY' not found") | |
92 | ) | |
93 | }) | |
94 | }) |