From c15273f20d0ee8b7b34321f07d7f14e60d1ed895 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Mon, 10 Oct 2022 14:49:44 +0200 Subject: [PATCH] Fix tests with WRR worker choice strategy MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Jérôme Benoit --- .../selection-strategies-utils.test.js | 36 ++++++---- .../worker-choice-strategy-context.test.js | 71 +++++++++++-------- 2 files changed, 64 insertions(+), 43 deletions(-) diff --git a/tests/pools/selection-strategies/selection-strategies-utils.test.js b/tests/pools/selection-strategies/selection-strategies-utils.test.js index 1a60d119..ac1836e7 100644 --- a/tests/pools/selection-strategies/selection-strategies-utils.test.js +++ b/tests/pools/selection-strategies/selection-strategies-utils.test.js @@ -1,5 +1,5 @@ const { expect } = require('expect') -const sinon = require('sinon') +// const sinon = require('sinon') const { SelectionStrategiesUtils } = require('../../../lib/pools/selection-strategies/selection-strategies-utils') @@ -16,18 +16,24 @@ const { const { FairShareWorkerChoiceStrategy } = require('../../../lib/pools/selection-strategies/fair-share-worker-choice-strategy') -// const { -// WeightedRoundRobinWorkerChoiceStrategy -// } = require('../../../lib/pools/selection-strategies/weighted-round-robin-choice-strategy') +const { + WeightedRoundRobinWorkerChoiceStrategy +} = require('../../../lib/pools/selection-strategies/weighted-round-robin-choice-strategy') describe('Selection strategies utils test suite', () => { + const max = 3 let pool - beforeEach(() => { - pool = sinon.createStubInstance(FixedThreadPool) + + before(() => { + pool = new FixedThreadPool(max, './tests/worker-files/thread/testWorker.js') }) - afterEach(() => { - sinon.restore() + // afterEach(() => { + // sinon.restore() + // }) + + after(() => { + pool.destroy() }) it('Verify that getWorkerChoiceStrategy() default return ROUND_ROBIN strategy', () => { @@ -59,13 +65,13 @@ describe('Selection strategies utils test suite', () => { expect(strategy).toBeInstanceOf(FairShareWorkerChoiceStrategy) }) - // it('Verify that getWorkerChoiceStrategy() can return WEIGHTED_ROUND_ROBIN strategy', () => { - // const strategy = SelectionStrategiesUtils.getWorkerChoiceStrategy( - // pool, - // WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN - // ) - // expect(strategy).toBeInstanceOf(WeightedRoundRobinWorkerChoiceStrategy) - // }) + it('Verify that getWorkerChoiceStrategy() can return WEIGHTED_ROUND_ROBIN strategy', () => { + const strategy = SelectionStrategiesUtils.getWorkerChoiceStrategy( + pool, + WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN + ) + expect(strategy).toBeInstanceOf(WeightedRoundRobinWorkerChoiceStrategy) + }) it('Verify that getWorkerChoiceStrategy() throw error on unknown strategy', () => { expect(() => { diff --git a/tests/pools/selection-strategies/worker-choice-strategy-context.test.js b/tests/pools/selection-strategies/worker-choice-strategy-context.test.js index 017d7db2..ae608fda 100644 --- a/tests/pools/selection-strategies/worker-choice-strategy-context.test.js +++ b/tests/pools/selection-strategies/worker-choice-strategy-context.test.js @@ -17,24 +17,39 @@ const { const { FairShareWorkerChoiceStrategy } = require('../../../lib/pools/selection-strategies/fair-share-worker-choice-strategy') -// const { -// WeightedRoundRobinWorkerChoiceStrategy -// } = require('../../../lib/pools/selection-strategies/weighted-round-robin-choice-strategy') +const { + WeightedRoundRobinWorkerChoiceStrategy +} = require('../../../lib/pools/selection-strategies/weighted-round-robin-choice-strategy') const { DynamicPoolWorkerChoiceStrategy } = require('../../../lib/pools/selection-strategies/dynamic-pool-worker-choice-strategy') describe('Worker choice strategy context test suite', () => { + const min = 1 + const max = 3 let fixedPool, dynamicPool - beforeEach(() => { - fixedPool = sinon.createStubInstance(FixedThreadPool) - dynamicPool = sinon.createStubInstance(DynamicThreadPool) + + before(() => { + fixedPool = new FixedThreadPool( + max, + './tests/worker-files/thread/testWorker.js' + ) + dynamicPool = new DynamicThreadPool( + min, + max, + './tests/worker-files/thread/testWorker.js' + ) }) afterEach(() => { sinon.restore() }) + after(() => { + fixedPool.destroy() + dynamicPool.destroy() + }) + it('Verify that execute() return the worker chosen by the strategy with fixed pool', () => { const workerChoiceStrategyContext = new WorkerChoiceStrategyContext( fixedPool @@ -143,27 +158,27 @@ describe('Worker choice strategy context test suite', () => { ) }) - // it('Verify that setWorkerChoiceStrategy() works with WEIGHTED_ROUND_ROBIN and fixed pool', () => { - // const workerChoiceStrategyContext = new WorkerChoiceStrategyContext( - // fixedPool - // ) - // workerChoiceStrategyContext.setWorkerChoiceStrategy( - // WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN - // ) - // expect(workerChoiceStrategyContext.workerChoiceStrategy).toBeInstanceOf( - // WeightedRoundRobinWorkerChoiceStrategy - // ) - // }) + it('Verify that setWorkerChoiceStrategy() works with WEIGHTED_ROUND_ROBIN and fixed pool', () => { + const workerChoiceStrategyContext = new WorkerChoiceStrategyContext( + fixedPool + ) + workerChoiceStrategyContext.setWorkerChoiceStrategy( + WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN + ) + expect(workerChoiceStrategyContext.workerChoiceStrategy).toBeInstanceOf( + WeightedRoundRobinWorkerChoiceStrategy + ) + }) - // it('Verify that setWorkerChoiceStrategy() works with WEIGHTED_ROUND_ROBIN and dynamic pool', () => { - // const workerChoiceStrategyContext = new WorkerChoiceStrategyContext( - // dynamicPool - // ) - // workerChoiceStrategyContext.setWorkerChoiceStrategy( - // WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN - // ) - // expect(workerChoiceStrategyContext.workerChoiceStrategy).toBeInstanceOf( - // DynamicPoolWorkerChoiceStrategy - // ) - // }) + it('Verify that setWorkerChoiceStrategy() works with WEIGHTED_ROUND_ROBIN and dynamic pool', () => { + const workerChoiceStrategyContext = new WorkerChoiceStrategyContext( + dynamicPool + ) + workerChoiceStrategyContext.setWorkerChoiceStrategy( + WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN + ) + expect(workerChoiceStrategyContext.workerChoiceStrategy).toBeInstanceOf( + DynamicPoolWorkerChoiceStrategy + ) + }) }) -- 2.34.1