X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=tests%2Fpools%2Fselection-strategies%2Fselection-strategies.test.js;h=9a85c3ff9de048b9f401a7ca2530b710528219e0;hb=de037b034ea2cbc5530d45dd24685fde95a66155;hp=e8d9d66b751e305b79ce2e5147eedb3eb6bcb48a;hpb=138d29a820e8a61d10ba03fe42c5d77596ef788c;p=poolifier.git diff --git a/tests/pools/selection-strategies/selection-strategies.test.js b/tests/pools/selection-strategies/selection-strategies.test.js index e8d9d66b..9a85c3ff 100644 --- a/tests/pools/selection-strategies/selection-strategies.test.js +++ b/tests/pools/selection-strategies/selection-strategies.test.js @@ -18,6 +18,9 @@ describe('Selection strategies test suite', () => { expect(WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN).toBe( 'WEIGHTED_ROUND_ROBIN' ) + expect(WorkerChoiceStrategies.INTERLEAVED_WEIGHTED_ROUND_ROBIN).toBe( + 'INTERLEAVED_WEIGHTED_ROUND_ROBIN' + ) }) it('Verify ROUND_ROBIN strategy is the default at pool creation', async () => { @@ -80,12 +83,12 @@ describe('Selection strategies test suite', () => { expect( pool.workerChoiceStrategyContext.workerChoiceStrategies.get( workerChoiceStrategy - ).workersVirtualTaskTimestamp + ).workersVirtualTaskEndTimestamp ).toBeInstanceOf(Array) expect( pool.workerChoiceStrategyContext.workerChoiceStrategies.get( workerChoiceStrategy - ).workersVirtualTaskTimestamp.length + ).workersVirtualTaskEndTimestamp.length ).toBe(0) } else if ( workerChoiceStrategy === WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN @@ -153,12 +156,10 @@ describe('Selection strategies test suite', () => { { workerChoiceStrategy: WorkerChoiceStrategies.ROUND_ROBIN } ) // TODO: Create a better test to cover `RoundRobinWorkerChoiceStrategy#choose` - const promises = [] const maxMultiplier = 2 for (let i = 0; i < max * maxMultiplier; i++) { - promises.push(pool.execute()) + await pool.execute() } - await Promise.all(promises) // We need to clean up the resources after our test await pool.destroy() }) @@ -171,12 +172,10 @@ describe('Selection strategies test suite', () => { { workerChoiceStrategy: WorkerChoiceStrategies.ROUND_ROBIN } ) // TODO: Create a better test to cover `RoundRobinWorkerChoiceStrategy#choose` - const promises = [] const maxMultiplier = 2 for (let i = 0; i < max * maxMultiplier; i++) { - promises.push(pool.execute()) + await pool.execute() } - await Promise.all(promises) // We need to clean up the resources after our test await pool.destroy() }) @@ -190,7 +189,7 @@ describe('Selection strategies test suite', () => { ) let results = new Set() for (let i = 0; i < max; i++) { - results.add(pool.chooseWorkerNode()[1].worker.id) + results.add(pool.workerNodes[pool.chooseWorkerNode()].worker.id) } expect(results.size).toBe(max) await pool.destroy() @@ -201,7 +200,7 @@ describe('Selection strategies test suite', () => { ) results = new Set() for (let i = 0; i < max; i++) { - results.add(pool.chooseWorkerNode()[1].worker.threadId) + results.add(pool.workerNodes[pool.chooseWorkerNode()].worker.threadId) } expect(results.size).toBe(max) await pool.destroy() @@ -290,12 +289,10 @@ describe('Selection strategies test suite', () => { { workerChoiceStrategy: WorkerChoiceStrategies.LESS_USED } ) // TODO: Create a better test to cover `LessUsedWorkerChoiceStrategy#choose` - const promises = [] const maxMultiplier = 2 for (let i = 0; i < max * maxMultiplier; i++) { - promises.push(pool.execute()) + await pool.execute() } - await Promise.all(promises) // We need to clean up the resources after our test await pool.destroy() }) @@ -308,12 +305,10 @@ describe('Selection strategies test suite', () => { { workerChoiceStrategy: WorkerChoiceStrategies.LESS_USED } ) // TODO: Create a better test to cover `LessUsedWorkerChoiceStrategy#choose` - const promises = [] const maxMultiplier = 2 for (let i = 0; i < max * maxMultiplier; i++) { - promises.push(pool.execute()) + await pool.execute() } - await Promise.all(promises) // We need to clean up the resources after our test await pool.destroy() }) @@ -361,12 +356,10 @@ describe('Selection strategies test suite', () => { { workerChoiceStrategy: WorkerChoiceStrategies.LESS_BUSY } ) // TODO: Create a better test to cover `LessBusyWorkerChoiceStrategy#choose` - const promises = [] const maxMultiplier = 2 for (let i = 0; i < max * maxMultiplier; i++) { - promises.push(pool.execute()) + await pool.execute() } - await Promise.all(promises) // We need to clean up the resources after our test await pool.destroy() }) @@ -379,12 +372,10 @@ describe('Selection strategies test suite', () => { { workerChoiceStrategy: WorkerChoiceStrategies.LESS_BUSY } ) // TODO: Create a better test to cover `LessBusyWorkerChoiceStrategy#choose` - const promises = [] const maxMultiplier = 2 for (let i = 0; i < max * maxMultiplier; i++) { - promises.push(pool.execute()) + await pool.execute() } - await Promise.all(promises) // We need to clean up the resources after our test await pool.destroy() }) @@ -432,12 +423,10 @@ describe('Selection strategies test suite', () => { { workerChoiceStrategy: WorkerChoiceStrategies.FAIR_SHARE } ) // TODO: Create a better test to cover `FairShareChoiceStrategy#choose` - const promises = [] const maxMultiplier = 2 for (let i = 0; i < max * maxMultiplier; i++) { - promises.push(pool.execute()) + await pool.execute() } - await Promise.all(promises) for (const workerNode of pool.workerNodes) { expect(workerNode.tasksUsage.avgRunTime).toBeDefined() expect(workerNode.tasksUsage.avgRunTime).toBeGreaterThanOrEqual(0) @@ -447,7 +436,7 @@ describe('Selection strategies test suite', () => { expect( pool.workerChoiceStrategyContext.workerChoiceStrategies.get( pool.workerChoiceStrategyContext.workerChoiceStrategy - ).workersVirtualTaskTimestamp.length + ).workersVirtualTaskEndTimestamp.length ).toBe(pool.workerNodes.length) // We need to clean up the resources after our test await pool.destroy() @@ -461,12 +450,10 @@ describe('Selection strategies test suite', () => { { workerChoiceStrategy: WorkerChoiceStrategies.FAIR_SHARE } ) // TODO: Create a better test to cover `FairShareChoiceStrategy#choose` - const promises = [] const maxMultiplier = 2 for (let i = 0; i < max * maxMultiplier; i++) { - promises.push(pool.execute()) + await pool.execute() } - await Promise.all(promises) for (const workerNode of pool.workerNodes) { expect(workerNode.tasksUsage.avgRunTime).toBeDefined() expect(workerNode.tasksUsage.avgRunTime).toBeGreaterThanOrEqual(0) @@ -476,7 +463,7 @@ describe('Selection strategies test suite', () => { expect( pool.workerChoiceStrategyContext.workerChoiceStrategies.get( pool.workerChoiceStrategyContext.workerChoiceStrategy - ).workersVirtualTaskTimestamp.length + ).workersVirtualTaskEndTimestamp.length ).toBe(pool.workerNodes.length) // We need to clean up the resources after our test await pool.destroy() @@ -495,12 +482,10 @@ describe('Selection strategies test suite', () => { } ) // TODO: Create a better test to cover `FairShareChoiceStrategy#choose` - const promises = [] const maxMultiplier = 2 for (let i = 0; i < max * maxMultiplier; i++) { - promises.push(pool.execute()) + await pool.execute() } - await Promise.all(promises) for (const workerNode of pool.workerNodes) { expect(workerNode.tasksUsage.avgRunTime).toBeDefined() expect(workerNode.tasksUsage.avgRunTime).toBe(0) @@ -510,7 +495,7 @@ describe('Selection strategies test suite', () => { expect( pool.workerChoiceStrategyContext.workerChoiceStrategies.get( pool.workerChoiceStrategyContext.workerChoiceStrategy - ).workersVirtualTaskTimestamp.length + ).workersVirtualTaskEndTimestamp.length ).toBe(pool.workerNodes.length) // We need to clean up the resources after our test await pool.destroy() @@ -525,31 +510,31 @@ describe('Selection strategies test suite', () => { expect( pool.workerChoiceStrategyContext.workerChoiceStrategies.get( workerChoiceStrategy - ).workersVirtualTaskTimestamp + ).workersVirtualTaskEndTimestamp ).toBeInstanceOf(Array) expect( pool.workerChoiceStrategyContext.workerChoiceStrategies.get( workerChoiceStrategy - ).workersVirtualTaskTimestamp.length + ).workersVirtualTaskEndTimestamp.length ).toBe(0) pool.workerChoiceStrategyContext.workerChoiceStrategies.get( workerChoiceStrategy - ).workersVirtualTaskTimestamp[0] = 0 + ).workersVirtualTaskEndTimestamp[0] = performance.now() expect( pool.workerChoiceStrategyContext.workerChoiceStrategies.get( workerChoiceStrategy - ).workersVirtualTaskTimestamp.length + ).workersVirtualTaskEndTimestamp.length ).toBe(1) pool.setWorkerChoiceStrategy(workerChoiceStrategy) expect( pool.workerChoiceStrategyContext.workerChoiceStrategies.get( workerChoiceStrategy - ).workersVirtualTaskTimestamp + ).workersVirtualTaskEndTimestamp ).toBeInstanceOf(Array) expect( pool.workerChoiceStrategyContext.workerChoiceStrategies.get( workerChoiceStrategy - ).workersVirtualTaskTimestamp.length + ).workersVirtualTaskEndTimestamp.length ).toBe(0) await pool.destroy() pool = new DynamicThreadPool( @@ -560,31 +545,31 @@ describe('Selection strategies test suite', () => { expect( pool.workerChoiceStrategyContext.workerChoiceStrategies.get( workerChoiceStrategy - ).workersVirtualTaskTimestamp + ).workersVirtualTaskEndTimestamp ).toBeInstanceOf(Array) expect( pool.workerChoiceStrategyContext.workerChoiceStrategies.get( workerChoiceStrategy - ).workersVirtualTaskTimestamp.length + ).workersVirtualTaskEndTimestamp.length ).toBe(0) pool.workerChoiceStrategyContext.workerChoiceStrategies.get( workerChoiceStrategy - ).workersVirtualTaskTimestamp[0] = 0 + ).workersVirtualTaskEndTimestamp[0] = performance.now() expect( pool.workerChoiceStrategyContext.workerChoiceStrategies.get( workerChoiceStrategy - ).workersVirtualTaskTimestamp.length + ).workersVirtualTaskEndTimestamp.length ).toBe(1) pool.setWorkerChoiceStrategy(workerChoiceStrategy) expect( pool.workerChoiceStrategyContext.workerChoiceStrategies.get( workerChoiceStrategy - ).workersVirtualTaskTimestamp + ).workersVirtualTaskEndTimestamp ).toBeInstanceOf(Array) expect( pool.workerChoiceStrategyContext.workerChoiceStrategies.get( workerChoiceStrategy - ).workersVirtualTaskTimestamp.length + ).workersVirtualTaskEndTimestamp.length ).toBe(0) // We need to clean up the resources after our test await pool.destroy() @@ -633,12 +618,10 @@ describe('Selection strategies test suite', () => { { workerChoiceStrategy: WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN } ) // TODO: Create a better test to cover `WeightedRoundRobinWorkerChoiceStrategy#choose` - const promises = [] const maxMultiplier = 2 for (let i = 0; i < max * maxMultiplier; i++) { - promises.push(pool.execute()) + await pool.execute() } - await Promise.all(promises) for (const workerNode of pool.workerNodes) { expect(workerNode.tasksUsage.avgRunTime).toBeDefined() expect(workerNode.tasksUsage.avgRunTime).toBeGreaterThanOrEqual(0) @@ -667,12 +650,10 @@ describe('Selection strategies test suite', () => { { workerChoiceStrategy: WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN } ) // TODO: Create a better test to cover `WeightedRoundRobinWorkerChoiceStrategy#choose` - const promises = [] const maxMultiplier = 2 for (let i = 0; i < max * maxMultiplier; i++) { - promises.push(pool.execute()) + await pool.execute() } - await Promise.all(promises) for (const workerNode of pool.workerNodes) { expect(workerNode.tasksUsage.avgRunTime).toBeDefined() expect(workerNode.tasksUsage.avgRunTime).toBeGreaterThanOrEqual(0) @@ -706,12 +687,10 @@ describe('Selection strategies test suite', () => { } ) // TODO: Create a better test to cover `WeightedRoundRobinWorkerChoiceStrategy#choose` - const promises = [] const maxMultiplier = 2 for (let i = 0; i < max * maxMultiplier; i++) { - promises.push(pool.execute()) + await pool.execute() } - await Promise.all(promises) for (const workerNode of pool.workerNodes) { expect(workerNode.tasksUsage.avgRunTime).toBeDefined() expect(workerNode.tasksUsage.avgRunTime).toBe(0)