X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=tests%2Fpools%2Fselection-strategies%2Fweighted-round-robin-worker-choice-strategy.test.mjs;h=80c5ec7c65b7f808e230870060bd6270da111100;hb=2717674c56c2caae531507e7d4e0068f4d4c8918;hp=c659b31e7bcc2dec1db31a0a7554b1b82cb6c549;hpb=a074ffee1b46f43d0dcfba58128748c7492104dd;p=poolifier.git diff --git a/tests/pools/selection-strategies/weighted-round-robin-worker-choice-strategy.test.mjs b/tests/pools/selection-strategies/weighted-round-robin-worker-choice-strategy.test.mjs index c659b31e..80c5ec7c 100644 --- a/tests/pools/selection-strategies/weighted-round-robin-worker-choice-strategy.test.mjs +++ b/tests/pools/selection-strategies/weighted-round-robin-worker-choice-strategy.test.mjs @@ -1,8 +1,10 @@ +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 @@ -10,27 +12,47 @@ describe('Weighted round robin strategy worker choice strategy test suite', () = 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) }) })