Apply dependencies update
[poolifier.git] / tests / pools / selection-strategies / selection-strategies-utils.test.js
index dd240126392feb462f3f063bc272d942477b9886..eaac1342337eae176466a80adb06547d52e609ae 100644 (file)
@@ -1,7 +1,7 @@
 const { expect } = require('expect')
-const sinon = require('sinon')
+// const sinon = require('sinon')
 const {
-  SelectionStrategiesUtils
+  getWorkerChoiceStrategy
 } = require('../../../lib/pools/selection-strategies/selection-strategies-utils')
 const {
   FixedThreadPool,
@@ -13,24 +13,36 @@ const {
 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-worker-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(async () => {
+    await pool.destroy()
   })
 
   it('Verify that getWorkerChoiceStrategy() default return ROUND_ROBIN strategy', () => {
-    const strategy = SelectionStrategiesUtils.getWorkerChoiceStrategy(pool)
+    const strategy = getWorkerChoiceStrategy(pool)
     expect(strategy).toBeInstanceOf(RoundRobinWorkerChoiceStrategy)
   })
 
   it('Verify that getWorkerChoiceStrategy() can return ROUND_ROBIN strategy', () => {
-    const strategy = SelectionStrategiesUtils.getWorkerChoiceStrategy(
+    const strategy = getWorkerChoiceStrategy(
       pool,
       WorkerChoiceStrategies.ROUND_ROBIN
     )
@@ -38,16 +50,32 @@ describe('Selection strategies utils test suite', () => {
   })
 
   it('Verify that getWorkerChoiceStrategy() can return LESS_RECENTLY_USED strategy', () => {
-    const strategy = SelectionStrategiesUtils.getWorkerChoiceStrategy(
+    const strategy = getWorkerChoiceStrategy(
       pool,
       WorkerChoiceStrategies.LESS_RECENTLY_USED
     )
     expect(strategy).toBeInstanceOf(LessRecentlyUsedWorkerChoiceStrategy)
   })
 
+  it('Verify that getWorkerChoiceStrategy() can return FAIR_SHARE strategy', () => {
+    const strategy = getWorkerChoiceStrategy(
+      pool,
+      WorkerChoiceStrategies.FAIR_SHARE
+    )
+    expect(strategy).toBeInstanceOf(FairShareWorkerChoiceStrategy)
+  })
+
+  it('Verify that getWorkerChoiceStrategy() can return WEIGHTED_ROUND_ROBIN strategy', () => {
+    const strategy = 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')
+      getWorkerChoiceStrategy(pool, 'UNKNOWN_STRATEGY')
     }).toThrowError(
       new Error("Worker choice strategy 'UNKNOWN_STRATEGY' not found")
     )