Improve tests coverage on worker choice strategies
[poolifier.git] / tests / pools / selection-strategies / weighted-round-robin-worker-choice-strategy.test.js
1 const { expect } = require('expect')
2 const sinon = require('sinon')
3 const { FixedThreadPool } = require('../../../lib/index')
4 const {
5 WeightedRoundRobinWorkerChoiceStrategy
6 } = require('../../../lib/pools/selection-strategies/weighted-round-robin-worker-choice-strategy')
7 const TestUtils = require('../../test-utils')
8
9 describe('Weighted round robin strategy worker choice strategy test suite', () => {
10 // const min = 1
11 const max = 3
12 let pool
13
14 before(() => {
15 pool = new FixedThreadPool(max, './tests/worker-files/thread/testWorker.js')
16 })
17
18 afterEach(() => {
19 sinon.restore()
20 })
21
22 after(async () => {
23 await pool.destroy()
24 })
25
26 it('Verify that reset() resets internals', () => {
27 const strategy = new WeightedRoundRobinWorkerChoiceStrategy(pool)
28 strategy.previousWorkerIndex = TestUtils.generateRandomInteger(
29 Number.MAX_SAFE_INTEGER
30 )
31 strategy.currentWorkerIndex = TestUtils.generateRandomInteger(
32 Number.MAX_SAFE_INTEGER
33 )
34 const workersTaskRunTimeClearStub = sinon
35 .stub(strategy.workersTaskRunTime, 'clear')
36 .returns()
37 const initWorkersTaskRunTimeStub = sinon
38 .stub(strategy, 'initWorkersTaskRunTime')
39 .returns()
40 const resetResult = strategy.reset()
41 expect(resetResult).toBe(true)
42 expect(strategy.previousWorkerIndex).toBe(0)
43 expect(strategy.currentWorkerIndex).toBe(0)
44 expect(workersTaskRunTimeClearStub.calledOnce).toBe(true)
45 expect(initWorkersTaskRunTimeStub.calledOnce).toBe(true)
46 })
47 })