X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=tests%2Fpools%2Fabstract%2Fabstract-pool.test.js;h=658be6a9ef99ed63afb692ba864a4745ebf66f89;hb=aee467366d8c393b79e7af82c6a7ab12338ee64e;hp=a87c8934701bd442af287fcdc91e27af33eeda41;hpb=e65c6cd9a3d6ed2e5b8af95120a5aa070101e945;p=poolifier.git diff --git a/tests/pools/abstract/abstract-pool.test.js b/tests/pools/abstract/abstract-pool.test.js index a87c8934..658be6a9 100644 --- a/tests/pools/abstract/abstract-pool.test.js +++ b/tests/pools/abstract/abstract-pool.test.js @@ -1,8 +1,9 @@ const { expect } = require('expect') const { - FixedClusterPool, DynamicThreadPool, + FixedClusterPool, FixedThreadPool, + PoolEvents, WorkerChoiceStrategies } = require('../../../lib/index') @@ -14,7 +15,7 @@ describe('Abstract pool test suite', () => { class StubPoolWithRemoveAllWorker extends FixedThreadPool { removeAllWorker () { this.workers = [] - this.promiseMap.clear() + this.promiseResponseMap.clear() } } class StubPoolWithIsMain extends FixedThreadPool { @@ -145,6 +146,7 @@ describe('Abstract pool test suite', () => { expect(workerItem.tasksUsage.running).toBe(0) expect(workerItem.tasksUsage.runTime).toBe(0) expect(workerItem.tasksUsage.avgRunTime).toBe(0) + expect(workerItem.tasksUsage.error).toBe(0) } await pool.destroy() }) @@ -164,6 +166,7 @@ describe('Abstract pool test suite', () => { expect(workerItem.tasksUsage.running).toBe(numberOfWorkers * 2) expect(workerItem.tasksUsage.runTime).toBe(0) expect(workerItem.tasksUsage.avgRunTime).toBe(0) + expect(workerItem.tasksUsage.error).toBe(0) } await Promise.all(promises) for (const workerItem of pool.workers) { @@ -172,6 +175,7 @@ describe('Abstract pool test suite', () => { expect(workerItem.tasksUsage.running).toBe(0) expect(workerItem.tasksUsage.runTime).toBeGreaterThanOrEqual(0) expect(workerItem.tasksUsage.avgRunTime).toBeGreaterThanOrEqual(0) + expect(workerItem.tasksUsage.error).toBe(0) } await pool.destroy() }) @@ -193,6 +197,7 @@ describe('Abstract pool test suite', () => { expect(workerItem.tasksUsage.running).toBe(0) expect(workerItem.tasksUsage.runTime).toBeGreaterThanOrEqual(0) expect(workerItem.tasksUsage.avgRunTime).toBeGreaterThanOrEqual(0) + expect(workerItem.tasksUsage.error).toBe(0) } pool.setWorkerChoiceStrategy(WorkerChoiceStrategies.FAIR_SHARE) for (const workerItem of pool.workers) { @@ -201,10 +206,30 @@ describe('Abstract pool test suite', () => { expect(workerItem.tasksUsage.running).toBe(0) expect(workerItem.tasksUsage.runTime).toBe(0) expect(workerItem.tasksUsage.avgRunTime).toBe(0) + expect(workerItem.tasksUsage.error).toBe(0) } await pool.destroy() }) + it("Verify that pool event emitter 'full' event can register a callback", async () => { + const pool = new DynamicThreadPool( + numberOfWorkers, + numberOfWorkers, + './tests/worker-files/thread/testWorker.js' + ) + const promises = [] + let poolFull = 0 + pool.emitter.on(PoolEvents.full, () => ++poolFull) + for (let i = 0; i < numberOfWorkers * 2; i++) { + promises.push(pool.execute()) + } + await Promise.all(promises) + // The `full` event is triggered when the number of submitted tasks at once reach the number of dynamic pool workers. + // So in total numberOfWorkers + 1 times for a loop submitting up to numberOfWorkers * 2 tasks to the dynamic pool. + expect(poolFull).toBe(numberOfWorkers + 1) + await pool.destroy() + }) + it("Verify that pool event emitter 'busy' event can register a callback", async () => { const pool = new FixedThreadPool( numberOfWorkers, @@ -212,7 +237,7 @@ describe('Abstract pool test suite', () => { ) const promises = [] let poolBusy = 0 - pool.emitter.on('busy', () => poolBusy++) + pool.emitter.on(PoolEvents.busy, () => ++poolBusy) for (let i = 0; i < numberOfWorkers * 2; i++) { promises.push(pool.execute()) }