Properly integrate standard JS tools for JS and TS code
[poolifier.git] / tests / pools / selection-strategies / selection-strategies-utils.test.js
CommitLineData
a3809289 1const { expect } = require('expect')
c15273f2 2// const sinon = require('sinon')
a3809289 3const {
78cea37e 4 getWorkerChoiceStrategy
a3809289
JB
5} = require('../../../lib/pools/selection-strategies/selection-strategies-utils')
6const {
7 FixedThreadPool,
8 WorkerChoiceStrategies
9} = require('../../../lib/index')
10const {
11 RoundRobinWorkerChoiceStrategy
12} = require('../../../lib/pools/selection-strategies/round-robin-worker-choice-strategy')
13const {
14 LessRecentlyUsedWorkerChoiceStrategy
15} = require('../../../lib/pools/selection-strategies/less-recently-used-worker-choice-strategy')
23ff945a
JB
16const {
17 FairShareWorkerChoiceStrategy
18} = require('../../../lib/pools/selection-strategies/fair-share-worker-choice-strategy')
c15273f2
JB
19const {
20 WeightedRoundRobinWorkerChoiceStrategy
fa6f1296 21} = require('../../../lib/pools/selection-strategies/weighted-round-robin-worker-choice-strategy')
a3809289
JB
22
23describe('Selection strategies utils test suite', () => {
c15273f2 24 const max = 3
a3809289 25 let pool
c15273f2
JB
26
27 before(() => {
28 pool = new FixedThreadPool(max, './tests/worker-files/thread/testWorker.js')
a3809289
JB
29 })
30
c15273f2
JB
31 // afterEach(() => {
32 // sinon.restore()
33 // })
34
fd7ebd49
JB
35 after(async () => {
36 await pool.destroy()
a3809289
JB
37 })
38
39 it('Verify that getWorkerChoiceStrategy() default return ROUND_ROBIN strategy', () => {
78cea37e 40 const strategy = getWorkerChoiceStrategy(pool)
a3809289
JB
41 expect(strategy).toBeInstanceOf(RoundRobinWorkerChoiceStrategy)
42 })
43
44 it('Verify that getWorkerChoiceStrategy() can return ROUND_ROBIN strategy', () => {
78cea37e 45 const strategy = getWorkerChoiceStrategy(
a3809289
JB
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', () => {
78cea37e 53 const strategy = getWorkerChoiceStrategy(
a3809289
JB
54 pool,
55 WorkerChoiceStrategies.LESS_RECENTLY_USED
56 )
57 expect(strategy).toBeInstanceOf(LessRecentlyUsedWorkerChoiceStrategy)
58 })
59
23ff945a 60 it('Verify that getWorkerChoiceStrategy() can return FAIR_SHARE strategy', () => {
78cea37e 61 const strategy = getWorkerChoiceStrategy(
23ff945a
JB
62 pool,
63 WorkerChoiceStrategies.FAIR_SHARE
64 )
65 expect(strategy).toBeInstanceOf(FairShareWorkerChoiceStrategy)
66 })
67
c15273f2 68 it('Verify that getWorkerChoiceStrategy() can return WEIGHTED_ROUND_ROBIN strategy', () => {
78cea37e 69 const strategy = getWorkerChoiceStrategy(
c15273f2
JB
70 pool,
71 WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN
72 )
73 expect(strategy).toBeInstanceOf(WeightedRoundRobinWorkerChoiceStrategy)
74 })
23ff945a 75
a3809289
JB
76 it('Verify that getWorkerChoiceStrategy() throw error on unknown strategy', () => {
77 expect(() => {
78cea37e 78 getWorkerChoiceStrategy(pool, 'UNKNOWN_STRATEGY')
a3809289
JB
79 }).toThrowError(
80 new Error("Worker choice strategy 'UNKNOWN_STRATEGY' not found")
81 )
82 })
83})