test: add least ELU tests
[poolifier.git] / tests / pools / selection-strategies / worker-choice-strategy-context.test.js
index 92b776f95f092387ee48851c0cbca6e51364ea6d..62a2bd44f558e6307e8510e7d48e4942088d82e9 100644 (file)
@@ -17,6 +17,9 @@ const {
 const {
   LeastBusyWorkerChoiceStrategy
 } = require('../../../lib/pools/selection-strategies/least-busy-worker-choice-strategy')
+const {
+  LeastEluWorkerChoiceStrategy
+} = require('../../../lib/pools/selection-strategies/least-elu-worker-choice-strategy')
 const {
   FairShareWorkerChoiceStrategy
 } = require('../../../lib/pools/selection-strategies/fair-share-worker-choice-strategy')
@@ -261,6 +264,38 @@ describe('Worker choice strategy context test suite', () => {
     )
   })
 
+  it('Verify that setWorkerChoiceStrategy() works with LEAST_ELU and fixed pool', () => {
+    const workerChoiceStrategy = WorkerChoiceStrategies.LEAST_ELU
+    const workerChoiceStrategyContext = new WorkerChoiceStrategyContext(
+      fixedPool
+    )
+    workerChoiceStrategyContext.setWorkerChoiceStrategy(workerChoiceStrategy)
+    expect(
+      workerChoiceStrategyContext.workerChoiceStrategies.get(
+        workerChoiceStrategy
+      )
+    ).toBeInstanceOf(LeastEluWorkerChoiceStrategy)
+    expect(workerChoiceStrategyContext.workerChoiceStrategy).toBe(
+      workerChoiceStrategy
+    )
+  })
+
+  it('Verify that setWorkerChoiceStrategy() works with LEAST_ELU and dynamic pool', () => {
+    const workerChoiceStrategy = WorkerChoiceStrategies.LEAST_ELU
+    const workerChoiceStrategyContext = new WorkerChoiceStrategyContext(
+      dynamicPool
+    )
+    workerChoiceStrategyContext.setWorkerChoiceStrategy(workerChoiceStrategy)
+    expect(
+      workerChoiceStrategyContext.workerChoiceStrategies.get(
+        workerChoiceStrategy
+      )
+    ).toBeInstanceOf(LeastEluWorkerChoiceStrategy)
+    expect(workerChoiceStrategyContext.workerChoiceStrategy).toBe(
+      workerChoiceStrategy
+    )
+  })
+
   it('Verify that setWorkerChoiceStrategy() works with FAIR_SHARE and fixed pool', () => {
     const workerChoiceStrategy = WorkerChoiceStrategies.FAIR_SHARE
     const workerChoiceStrategyContext = new WorkerChoiceStrategyContext(
@@ -368,108 +403,51 @@ describe('Worker choice strategy context test suite', () => {
         medRunTime: true
       }
     )
-    expect(workerChoiceStrategyContext.getRequiredStatistics().avgRunTime).toBe(
-      false
-    )
-    expect(workerChoiceStrategyContext.getRequiredStatistics().medRunTime).toBe(
-      true
-    )
-    workerChoiceStrategyContext = new WorkerChoiceStrategyContext(
-      dynamicPool,
-      wwrWorkerChoiceStrategy,
-      {
-        medRunTime: true
-      }
-    )
-    expect(workerChoiceStrategyContext.getRequiredStatistics().avgRunTime).toBe(
-      false
-    )
-    expect(workerChoiceStrategyContext.getRequiredStatistics().medRunTime).toBe(
-      true
-    )
-    const fsWorkerChoiceStrategy = WorkerChoiceStrategies.FAIR_SHARE
-    workerChoiceStrategyContext = new WorkerChoiceStrategyContext(
-      fixedPool,
-      fsWorkerChoiceStrategy,
-      {
-        medRunTime: true
-      }
-    )
-    expect(workerChoiceStrategyContext.getRequiredStatistics().avgRunTime).toBe(
-      false
-    )
-    expect(workerChoiceStrategyContext.getRequiredStatistics().medRunTime).toBe(
-      true
-    )
-    workerChoiceStrategyContext = new WorkerChoiceStrategyContext(
-      dynamicPool,
-      fsWorkerChoiceStrategy,
-      {
-        medRunTime: true
-      }
-    )
-    expect(workerChoiceStrategyContext.getRequiredStatistics().avgRunTime).toBe(
-      false
-    )
-    expect(workerChoiceStrategyContext.getRequiredStatistics().medRunTime).toBe(
-      true
-    )
-  })
-
-  it('Verify that worker choice strategy options enable median wait time pool statistics', () => {
-    const wwrWorkerChoiceStrategy = WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN
-    let workerChoiceStrategyContext = new WorkerChoiceStrategyContext(
-      fixedPool,
-      wwrWorkerChoiceStrategy,
-      {
-        medWaitTime: true
-      }
-    )
     expect(
-      workerChoiceStrategyContext.getRequiredStatistics().avgWaitTime
+      workerChoiceStrategyContext.getTaskStatisticsRequirements().avgRunTime
     ).toBe(false)
     expect(
-      workerChoiceStrategyContext.getRequiredStatistics().medWaitTime
+      workerChoiceStrategyContext.getTaskStatisticsRequirements().medRunTime
     ).toBe(true)
     workerChoiceStrategyContext = new WorkerChoiceStrategyContext(
       dynamicPool,
       wwrWorkerChoiceStrategy,
       {
-        medWaitTime: true
+        medRunTime: true
       }
     )
     expect(
-      workerChoiceStrategyContext.getRequiredStatistics().avgWaitTime
+      workerChoiceStrategyContext.getTaskStatisticsRequirements().avgRunTime
     ).toBe(false)
     expect(
-      workerChoiceStrategyContext.getRequiredStatistics().medWaitTime
+      workerChoiceStrategyContext.getTaskStatisticsRequirements().medRunTime
     ).toBe(true)
     const fsWorkerChoiceStrategy = WorkerChoiceStrategies.FAIR_SHARE
     workerChoiceStrategyContext = new WorkerChoiceStrategyContext(
       fixedPool,
       fsWorkerChoiceStrategy,
       {
-        medWaitTime: true
+        medRunTime: true
       }
     )
     expect(
-      workerChoiceStrategyContext.getRequiredStatistics().avgWaitTime
+      workerChoiceStrategyContext.getTaskStatisticsRequirements().avgRunTime
     ).toBe(false)
     expect(
-      workerChoiceStrategyContext.getRequiredStatistics().medWaitTime
+      workerChoiceStrategyContext.getTaskStatisticsRequirements().medRunTime
     ).toBe(true)
     workerChoiceStrategyContext = new WorkerChoiceStrategyContext(
       dynamicPool,
       fsWorkerChoiceStrategy,
       {
-        medWaitTime: true
+        medRunTime: true
       }
     )
     expect(
-      workerChoiceStrategyContext.getRequiredStatistics().avgWaitTime
+      workerChoiceStrategyContext.getTaskStatisticsRequirements().avgRunTime
     ).toBe(false)
     expect(
-      workerChoiceStrategyContext.getRequiredStatistics().medWaitTime
+      workerChoiceStrategyContext.getTaskStatisticsRequirements().medRunTime
     ).toBe(true)
   })
 })