+import { randomInt } from 'node:crypto'
+
import { expect } from 'expect'
-import { restore } from 'sinon'
-import { FixedThreadPool } from '../../../lib/index.js'
-import { WeightedRoundRobinWorkerChoiceStrategy } from '../../../lib/pools/selection-strategies/weighted-round-robin-worker-choice-strategy.js'
-import { generateRandomInteger } from '../../test-utils.js'
+
+import { FixedThreadPool } from '../../../lib/index.cjs'
+import { InterleavedWeightedRoundRobinWorkerChoiceStrategy } from '../../../lib/pools/selection-strategies/interleaved-weighted-round-robin-worker-choice-strategy.cjs'
+import { WeightedRoundRobinWorkerChoiceStrategy } from '../../../lib/pools/selection-strategies/weighted-round-robin-worker-choice-strategy.cjs'
describe('Weighted round robin strategy worker choice strategy test suite', () => {
// const min = 1
let pool
before(() => {
- pool = new FixedThreadPool(max, './tests/worker-files/thread/testWorker.js')
- })
-
- afterEach(() => {
- restore()
+ pool = new FixedThreadPool(
+ max,
+ './tests/worker-files/thread/testWorker.mjs'
+ )
})
after(async () => {
await pool.destroy()
})
- it('Verify that reset() resets internals', () => {
+ it('Verify that WRR reset() resets internals', () => {
const strategy = new WeightedRoundRobinWorkerChoiceStrategy(pool)
- strategy.currentWorkerId = generateRandomInteger(Number.MAX_SAFE_INTEGER, 1)
- strategy.workerVirtualTaskRunTime = generateRandomInteger(
- Number.MAX_SAFE_INTEGER,
- 1
- )
+ strategy.nextWorkerNodeKey = randomInt(1, 281474976710656)
+ strategy.previousWorkerNodeKey = randomInt(1, 281474976710656)
+ strategy.workerNodeVirtualTaskRunTime = randomInt(1, 281474976710656)
+ expect(strategy.nextWorkerNodeKey).toBeGreaterThan(0)
+ expect(strategy.previousWorkerNodeKey).toBeGreaterThan(0)
+ expect(strategy.workerNodeVirtualTaskRunTime).toBeGreaterThan(0)
+ expect(strategy.reset()).toBe(true)
+ expect(strategy.nextWorkerNodeKey).toBe(0)
+ expect(strategy.previousWorkerNodeKey).toBe(0)
+ expect(strategy.workerNodeVirtualTaskRunTime).toBe(0)
+ })
+
+ it('Verify that IWRR reset() resets internals', () => {
+ const strategy = new InterleavedWeightedRoundRobinWorkerChoiceStrategy(pool)
+ strategy.nextWorkerNodeKey = randomInt(1, 281474976710656)
+ strategy.previousWorkerNodeKey = randomInt(1, 281474976710656)
+ strategy.roundId = randomInt(1, 281474976710656)
+ strategy.workerNodeId = randomInt(1, 281474976710656)
+ strategy.workerNodeVirtualTaskRunTime = randomInt(1, 281474976710656)
+ expect(strategy.nextWorkerNodeKey).toBeGreaterThan(0)
+ expect(strategy.previousWorkerNodeKey).toBeGreaterThan(0)
+ expect(strategy.roundId).toBeGreaterThan(0)
+ expect(strategy.workerNodeId).toBeGreaterThan(0)
+ expect(strategy.workerNodeVirtualTaskRunTime).toBeGreaterThan(0)
expect(strategy.reset()).toBe(true)
expect(strategy.nextWorkerNodeKey).toBe(0)
expect(strategy.previousWorkerNodeKey).toBe(0)
+ expect(strategy.roundId).toBe(0)
+ expect(strategy.workerNodeId).toBe(0)
expect(strategy.workerNodeVirtualTaskRunTime).toBe(0)
})
})