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-worker-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(async () => {
+ await fixedPool.destroy()
+ await dynamicPool.destroy()
+ })
+
it('Verify that execute() return the worker chosen by the strategy with fixed pool', () => {
const workerChoiceStrategyContext = new WorkerChoiceStrategyContext(
fixedPool
}
)
workerChoiceStrategyContext.workerChoiceStrategy = WorkerChoiceStrategyStub
- const worker = workerChoiceStrategyContext.execute()
+ const chosenWorker = workerChoiceStrategyContext.execute()
expect(
- workerChoiceStrategyContext.workerChoiceStrategy.choose.calledOnce
+ workerChoiceStrategyContext.getWorkerChoiceStrategy().choose.calledOnce
).toBe(true)
- expect(worker).toBe('worker')
+ expect(chosenWorker).toBe('worker')
})
it('Verify that execute() return the worker chosen by the strategy with dynamic pool', () => {
}
)
workerChoiceStrategyContext.workerChoiceStrategy = WorkerChoiceStrategyStub
- const worker = workerChoiceStrategyContext.execute()
+ const chosenWorker = workerChoiceStrategyContext.execute()
expect(
- workerChoiceStrategyContext.workerChoiceStrategy.choose.calledOnce
+ workerChoiceStrategyContext.getWorkerChoiceStrategy().choose.calledOnce
).toBe(true)
- expect(worker).toBe('worker')
+ expect(chosenWorker).toBe('worker')
})
it('Verify that setWorkerChoiceStrategy() works with ROUND_ROBIN and fixed pool', () => {
workerChoiceStrategyContext.setWorkerChoiceStrategy(
WorkerChoiceStrategies.ROUND_ROBIN
)
- expect(workerChoiceStrategyContext.workerChoiceStrategy).toBeInstanceOf(
- RoundRobinWorkerChoiceStrategy
- )
+ expect(
+ workerChoiceStrategyContext.getWorkerChoiceStrategy()
+ ).toBeInstanceOf(RoundRobinWorkerChoiceStrategy)
})
it('Verify that setWorkerChoiceStrategy() works with ROUND_ROBIN and dynamic pool', () => {
workerChoiceStrategyContext.setWorkerChoiceStrategy(
WorkerChoiceStrategies.ROUND_ROBIN
)
- expect(workerChoiceStrategyContext.workerChoiceStrategy).toBeInstanceOf(
- DynamicPoolWorkerChoiceStrategy
- )
+ expect(
+ workerChoiceStrategyContext.getWorkerChoiceStrategy()
+ ).toBeInstanceOf(DynamicPoolWorkerChoiceStrategy)
+ expect(
+ workerChoiceStrategyContext.getWorkerChoiceStrategy().workerChoiceStrategy
+ ).toBeInstanceOf(RoundRobinWorkerChoiceStrategy)
})
it('Verify that setWorkerChoiceStrategy() works with LESS_RECENTLY_USED and fixed pool', () => {
workerChoiceStrategyContext.setWorkerChoiceStrategy(
WorkerChoiceStrategies.LESS_RECENTLY_USED
)
- expect(workerChoiceStrategyContext.workerChoiceStrategy).toBeInstanceOf(
- LessRecentlyUsedWorkerChoiceStrategy
- )
+ expect(
+ workerChoiceStrategyContext.getWorkerChoiceStrategy()
+ ).toBeInstanceOf(LessRecentlyUsedWorkerChoiceStrategy)
})
it('Verify that setWorkerChoiceStrategy() works with LESS_RECENTLY_USED and dynamic pool', () => {
workerChoiceStrategyContext.setWorkerChoiceStrategy(
WorkerChoiceStrategies.LESS_RECENTLY_USED
)
- expect(workerChoiceStrategyContext.workerChoiceStrategy).toBeInstanceOf(
- DynamicPoolWorkerChoiceStrategy
- )
+ expect(
+ workerChoiceStrategyContext.getWorkerChoiceStrategy()
+ ).toBeInstanceOf(DynamicPoolWorkerChoiceStrategy)
+ expect(
+ workerChoiceStrategyContext.getWorkerChoiceStrategy().workerChoiceStrategy
+ ).toBeInstanceOf(LessRecentlyUsedWorkerChoiceStrategy)
})
it('Verify that setWorkerChoiceStrategy() works with FAIR_SHARE and fixed pool', () => {
workerChoiceStrategyContext.setWorkerChoiceStrategy(
WorkerChoiceStrategies.FAIR_SHARE
)
- expect(workerChoiceStrategyContext.workerChoiceStrategy).toBeInstanceOf(
- FairShareWorkerChoiceStrategy
- )
+ expect(
+ workerChoiceStrategyContext.getWorkerChoiceStrategy()
+ ).toBeInstanceOf(FairShareWorkerChoiceStrategy)
})
it('Verify that setWorkerChoiceStrategy() works with FAIR_SHARE and dynamic pool', () => {
workerChoiceStrategyContext.setWorkerChoiceStrategy(
WorkerChoiceStrategies.FAIR_SHARE
)
- expect(workerChoiceStrategyContext.workerChoiceStrategy).toBeInstanceOf(
- DynamicPoolWorkerChoiceStrategy
- )
+ expect(
+ workerChoiceStrategyContext.getWorkerChoiceStrategy()
+ ).toBeInstanceOf(DynamicPoolWorkerChoiceStrategy)
+ expect(
+ workerChoiceStrategyContext.getWorkerChoiceStrategy().workerChoiceStrategy
+ ).toBeInstanceOf(FairShareWorkerChoiceStrategy)
})
- // 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.getWorkerChoiceStrategy()
+ ).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.getWorkerChoiceStrategy()
+ ).toBeInstanceOf(DynamicPoolWorkerChoiceStrategy)
+ expect(
+ workerChoiceStrategyContext.getWorkerChoiceStrategy().workerChoiceStrategy
+ ).toBeInstanceOf(WeightedRoundRobinWorkerChoiceStrategy)
+ })
})