80c5ec7c65b7f808e230870060bd6270da111100
[poolifier.git] / tests / pools / selection-strategies / weighted-round-robin-worker-choice-strategy.test.mjs
1 import { randomInt } from 'node:crypto'
2
3 import { expect } from 'expect'
4
5 import { FixedThreadPool } from '../../../lib/index.cjs'
6 import { InterleavedWeightedRoundRobinWorkerChoiceStrategy } from '../../../lib/pools/selection-strategies/interleaved-weighted-round-robin-worker-choice-strategy.cjs'
7 import { WeightedRoundRobinWorkerChoiceStrategy } from '../../../lib/pools/selection-strategies/weighted-round-robin-worker-choice-strategy.cjs'
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(
16 max,
17 './tests/worker-files/thread/testWorker.mjs'
18 )
19 })
20
21 after(async () => {
22 await pool.destroy()
23 })
24
25 it('Verify that WRR reset() resets internals', () => {
26 const strategy = new WeightedRoundRobinWorkerChoiceStrategy(pool)
27 strategy.nextWorkerNodeKey = randomInt(1, 281474976710656)
28 strategy.previousWorkerNodeKey = randomInt(1, 281474976710656)
29 strategy.workerNodeVirtualTaskRunTime = randomInt(1, 281474976710656)
30 expect(strategy.nextWorkerNodeKey).toBeGreaterThan(0)
31 expect(strategy.previousWorkerNodeKey).toBeGreaterThan(0)
32 expect(strategy.workerNodeVirtualTaskRunTime).toBeGreaterThan(0)
33 expect(strategy.reset()).toBe(true)
34 expect(strategy.nextWorkerNodeKey).toBe(0)
35 expect(strategy.previousWorkerNodeKey).toBe(0)
36 expect(strategy.workerNodeVirtualTaskRunTime).toBe(0)
37 })
38
39 it('Verify that IWRR reset() resets internals', () => {
40 const strategy = new InterleavedWeightedRoundRobinWorkerChoiceStrategy(pool)
41 strategy.nextWorkerNodeKey = randomInt(1, 281474976710656)
42 strategy.previousWorkerNodeKey = randomInt(1, 281474976710656)
43 strategy.roundId = randomInt(1, 281474976710656)
44 strategy.workerNodeId = randomInt(1, 281474976710656)
45 strategy.workerNodeVirtualTaskRunTime = randomInt(1, 281474976710656)
46 expect(strategy.nextWorkerNodeKey).toBeGreaterThan(0)
47 expect(strategy.previousWorkerNodeKey).toBeGreaterThan(0)
48 expect(strategy.roundId).toBeGreaterThan(0)
49 expect(strategy.workerNodeId).toBeGreaterThan(0)
50 expect(strategy.workerNodeVirtualTaskRunTime).toBeGreaterThan(0)
51 expect(strategy.reset()).toBe(true)
52 expect(strategy.nextWorkerNodeKey).toBe(0)
53 expect(strategy.previousWorkerNodeKey).toBe(0)
54 expect(strategy.roundId).toBe(0)
55 expect(strategy.workerNodeId).toBe(0)
56 expect(strategy.workerNodeVirtualTaskRunTime).toBe(0)
57 })
58 })