945f6ebad001426dae7d11b5635ae52c9a61c6b1
[poolifier.git] / tests / pools / selection-strategies / selection-strategies-utils.test.js
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')
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-worker-choice-strategy')
22
23 describe('Selection strategies utils test suite', () => {
24 const max = 3
25 let pool
26
27 before(() => {
28 pool = new FixedThreadPool(max, './tests/worker-files/thread/testWorker.js')
29 })
30
31 // afterEach(() => {
32 // sinon.restore()
33 // })
34
35 after(async () => {
36 await pool.destroy()
37 })
38
39 it('Verify that getWorkerChoiceStrategy() default return ROUND_ROBIN strategy', () => {
40 const strategy = SelectionStrategiesUtils.getWorkerChoiceStrategy(pool)
41 expect(strategy).toBeInstanceOf(RoundRobinWorkerChoiceStrategy)
42 })
43
44 it('Verify that getWorkerChoiceStrategy() can return ROUND_ROBIN strategy', () => {
45 const strategy = SelectionStrategiesUtils.getWorkerChoiceStrategy(
46 pool,
47 WorkerChoiceStrategies.ROUND_ROBIN
48 )
49 expect(strategy).toBeInstanceOf(RoundRobinWorkerChoiceStrategy)
50 })
51
52 it('Verify that getWorkerChoiceStrategy() can return LESS_RECENTLY_USED strategy', () => {
53 const strategy = SelectionStrategiesUtils.getWorkerChoiceStrategy(
54 pool,
55 WorkerChoiceStrategies.LESS_RECENTLY_USED
56 )
57 expect(strategy).toBeInstanceOf(LessRecentlyUsedWorkerChoiceStrategy)
58 })
59
60 it('Verify that getWorkerChoiceStrategy() can return FAIR_SHARE strategy', () => {
61 const strategy = SelectionStrategiesUtils.getWorkerChoiceStrategy(
62 pool,
63 WorkerChoiceStrategies.FAIR_SHARE
64 )
65 expect(strategy).toBeInstanceOf(FairShareWorkerChoiceStrategy)
66 })
67
68 it('Verify that getWorkerChoiceStrategy() can return WEIGHTED_ROUND_ROBIN strategy', () => {
69 const strategy = SelectionStrategiesUtils.getWorkerChoiceStrategy(
70 pool,
71 WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN
72 )
73 expect(strategy).toBeInstanceOf(WeightedRoundRobinWorkerChoiceStrategy)
74 })
75
76 it('Verify that getWorkerChoiceStrategy() throw error on unknown strategy', () => {
77 expect(() => {
78 SelectionStrategiesUtils.getWorkerChoiceStrategy(pool, 'UNKNOWN_STRATEGY')
79 }).toThrowError(
80 new Error("Worker choice strategy 'UNKNOWN_STRATEGY' not found")
81 )
82 })
83 })