const { expect } = require('expect')
-const sinon = require('sinon')
+// const sinon = require('sinon')
const {
SelectionStrategiesUtils
} = require('../../../lib/pools/selection-strategies/selection-strategies-utils')
const {
LessRecentlyUsedWorkerChoiceStrategy
} = require('../../../lib/pools/selection-strategies/less-recently-used-worker-choice-strategy')
+const {
+ FairShareWorkerChoiceStrategy
+} = require('../../../lib/pools/selection-strategies/fair-share-worker-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', () => {
expect(strategy).toBeInstanceOf(LessRecentlyUsedWorkerChoiceStrategy)
})
+ it('Verify that getWorkerChoiceStrategy() can return FAIR_SHARE strategy', () => {
+ const strategy = SelectionStrategiesUtils.getWorkerChoiceStrategy(
+ pool,
+ WorkerChoiceStrategies.FAIR_SHARE
+ )
+ 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() throw error on unknown strategy', () => {
expect(() => {
SelectionStrategiesUtils.getWorkerChoiceStrategy(pool, 'UNKNOWN_STRATEGY')