X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=tests%2Fpools%2Fselection-strategies%2Fselection-strategies.test.mjs;h=127377a26118c5d5be57cf98661eb9139fe5d81f;hb=722d55a0b7bdb6b03cc523e5debef6b612c332f8;hp=4a2ace0469d1da108fe49e3c5f776ab3ad8a5825;hpb=463226a44b0370911db746052bcad0bcc7878acf;p=poolifier.git diff --git a/tests/pools/selection-strategies/selection-strategies.test.mjs b/tests/pools/selection-strategies/selection-strategies.test.mjs index 4a2ace04..127377a2 100644 --- a/tests/pools/selection-strategies/selection-strategies.test.mjs +++ b/tests/pools/selection-strategies/selection-strategies.test.mjs @@ -7,6 +7,7 @@ import { WorkerChoiceStrategies } from '../../../lib/index.js' import { CircularArray } from '../../../lib/circular-array.js' +import { sleep } from '../../test-utils.js' describe('Selection strategies test suite', () => { const min = 0 @@ -174,6 +175,26 @@ describe('Selection strategies test suite', () => { await pool.destroy() }) + it('Verify strategies wait for worker node readiness in dynamic pool', async () => { + const pool = new DynamicThreadPool( + min, + max, + './tests/worker-files/thread/testWorker.mjs' + ) + await sleep(600) + expect(pool.starting).toBe(false) + expect(pool.workerNodes.length).toBe(min) + const maxMultiplier = 10000 + const promises = new Set() + for (let i = 0; i < max * maxMultiplier; i++) { + promises.add(pool.execute()) + } + await Promise.all(promises) + expect(pool.workerNodes.length).toBe(max) + // We need to clean up the resources after our test + await pool.destroy() + }) + it('Verify ROUND_ROBIN strategy default policy', async () => { const workerChoiceStrategy = WorkerChoiceStrategies.ROUND_ROBIN let pool = new FixedThreadPool( @@ -277,8 +298,8 @@ describe('Selection strategies test suite', () => { executing: 0, queued: 0, maxQueued: 0, - stolen: 0, sequentiallyStolen: 0, + stolen: 0, failed: 0 }, runTime: { @@ -333,8 +354,8 @@ describe('Selection strategies test suite', () => { executing: 0, queued: 0, maxQueued: 0, - stolen: 0, sequentiallyStolen: 0, + stolen: 0, failed: 0 }, runTime: { @@ -559,8 +580,8 @@ describe('Selection strategies test suite', () => { executing: 0, queued: 0, maxQueued: 0, - stolen: 0, sequentiallyStolen: 0, + stolen: 0, failed: 0 }, runTime: { @@ -618,8 +639,8 @@ describe('Selection strategies test suite', () => { executing: 0, queued: 0, maxQueued: 0, - stolen: 0, sequentiallyStolen: 0, + stolen: 0, failed: 0 }, runTime: { @@ -758,8 +779,8 @@ describe('Selection strategies test suite', () => { executing: 0, queued: 0, maxQueued: 0, - stolen: 0, sequentiallyStolen: 0, + stolen: 0, failed: 0 }, runTime: expect.objectContaining({ @@ -827,8 +848,8 @@ describe('Selection strategies test suite', () => { executing: 0, queued: 0, maxQueued: 0, - stolen: 0, sequentiallyStolen: 0, + stolen: 0, failed: 0 }, runTime: expect.objectContaining({ @@ -977,8 +998,8 @@ describe('Selection strategies test suite', () => { executing: 0, queued: 0, maxQueued: 0, - stolen: 0, sequentiallyStolen: 0, + stolen: 0, failed: 0 }, runTime: { @@ -1052,8 +1073,8 @@ describe('Selection strategies test suite', () => { executing: 0, queued: 0, maxQueued: 0, - stolen: 0, sequentiallyStolen: 0, + stolen: 0, failed: 0 }, runTime: { @@ -1208,8 +1229,8 @@ describe('Selection strategies test suite', () => { executing: 0, queued: 0, maxQueued: 0, - stolen: 0, sequentiallyStolen: 0, + stolen: 0, failed: 0 }, runTime: expect.objectContaining({ @@ -1294,8 +1315,8 @@ describe('Selection strategies test suite', () => { executing: 0, queued: 0, maxQueued: 0, - stolen: 0, sequentiallyStolen: 0, + stolen: 0, failed: 0 }, runTime: expect.objectContaining({ @@ -1385,8 +1406,8 @@ describe('Selection strategies test suite', () => { executing: 0, queued: 0, maxQueued: 0, - stolen: 0, sequentiallyStolen: 0, + stolen: 0, failed: 0 }, runTime: expect.objectContaining({ @@ -1586,8 +1607,8 @@ describe('Selection strategies test suite', () => { executing: 0, queued: 0, maxQueued: 0, - stolen: 0, sequentiallyStolen: 0, + stolen: 0, failed: 0 }, runTime: expect.objectContaining({ @@ -1665,8 +1686,8 @@ describe('Selection strategies test suite', () => { executing: 0, queued: 0, maxQueued: 0, - stolen: 0, sequentiallyStolen: 0, + stolen: 0, failed: 0 }, runTime: expect.objectContaining({ @@ -1749,8 +1770,8 @@ describe('Selection strategies test suite', () => { executing: 0, queued: 0, maxQueued: 0, - stolen: 0, sequentiallyStolen: 0, + stolen: 0, failed: 0 }, runTime: expect.objectContaining({ @@ -2012,8 +2033,8 @@ describe('Selection strategies test suite', () => { executing: 0, queued: 0, maxQueued: 0, - stolen: 0, sequentiallyStolen: 0, + stolen: 0, failed: 0 }, runTime: expect.objectContaining({ @@ -2098,8 +2119,8 @@ describe('Selection strategies test suite', () => { executing: 0, queued: 0, maxQueued: 0, - stolen: 0, sequentiallyStolen: 0, + stolen: 0, failed: 0 }, runTime: expect.objectContaining({