X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=tests%2Fpools%2Fabstract%2Fabstract-pool.test.js;h=80f43dda845c5e4e06b5cc0448b8ef4031f3dad7;hb=184855e69fea29f1018024a34be10de2c8e3141a;hp=caf7c8f0c0ad28ad03a204dfc7ea8f9b0a569cf8;hpb=fc027381650624a242a2e7b139976d52c3aa304c;p=poolifier.git diff --git a/tests/pools/abstract/abstract-pool.test.js b/tests/pools/abstract/abstract-pool.test.js index caf7c8f0..80f43dda 100644 --- a/tests/pools/abstract/abstract-pool.test.js +++ b/tests/pools/abstract/abstract-pool.test.js @@ -5,7 +5,9 @@ const { FixedClusterPool, FixedThreadPool, PoolEvents, - WorkerChoiceStrategies + WorkerChoiceStrategies, + PoolTypes, + WorkerTypes } = require('../../../lib') const { CircularArray } = require('../../../lib/circular-array') const { Queue } = require('../../../lib/queue') @@ -82,8 +84,9 @@ describe('Abstract pool test suite', () => { numberOfWorkers, './tests/worker-files/thread/testWorker.js' ) - expect(pool.opts.enableEvents).toBe(true) expect(pool.emitter).toBeDefined() + expect(pool.opts.enableEvents).toBe(true) + expect(pool.opts.restartWorkerOnError).toBe(true) expect(pool.opts.enableTasksQueue).toBe(false) expect(pool.opts.tasksQueueOptions).toBeUndefined() expect(pool.opts.workerChoiceStrategy).toBe( @@ -109,6 +112,7 @@ describe('Abstract pool test suite', () => { weights: { 0: 300, 1: 200 } }, enableEvents: false, + restartWorkerOnError: false, enableTasksQueue: true, tasksQueueOptions: { concurrency: 2 }, messageHandler: testHandler, @@ -117,8 +121,9 @@ describe('Abstract pool test suite', () => { exitHandler: testHandler } ) - expect(pool.opts.enableEvents).toBe(false) expect(pool.emitter).toBeUndefined() + expect(pool.opts.enableEvents).toBe(false) + expect(pool.opts.restartWorkerOnError).toBe(false) expect(pool.opts.enableTasksQueue).toBe(true) expect(pool.opts.tasksQueueOptions).toStrictEqual({ concurrency: 2 }) expect(pool.opts.workerChoiceStrategy).toBe( @@ -271,6 +276,44 @@ describe('Abstract pool test suite', () => { await pool.destroy() }) + it('Verify that pool info is set', async () => { + let pool = new FixedThreadPool( + numberOfWorkers, + './tests/worker-files/thread/testWorker.js' + ) + expect(pool.info).toStrictEqual({ + type: PoolTypes.fixed, + worker: WorkerTypes.thread, + minSize: numberOfWorkers, + maxSize: numberOfWorkers, + workerNodes: numberOfWorkers, + idleWorkerNodes: numberOfWorkers, + busyWorkerNodes: 0, + runningTasks: 0, + queuedTasks: 0, + maxQueuedTasks: 0 + }) + await pool.destroy() + pool = new DynamicClusterPool( + numberOfWorkers, + numberOfWorkers * 2, + './tests/worker-files/thread/testWorker.js' + ) + expect(pool.info).toStrictEqual({ + type: PoolTypes.dynamic, + worker: WorkerTypes.cluster, + minSize: numberOfWorkers, + maxSize: numberOfWorkers * 2, + workerNodes: numberOfWorkers, + idleWorkerNodes: numberOfWorkers, + busyWorkerNodes: 0, + runningTasks: 0, + queuedTasks: 0, + maxQueuedTasks: 0 + }) + await pool.destroy() + }) + it('Simulate worker not found', async () => { const pool = new StubPoolWithRemoveAllWorker( numberOfWorkers, @@ -327,10 +370,10 @@ describe('Abstract pool test suite', () => { numberOfWorkers, './tests/worker-files/cluster/testWorker.js' ) - const promises = [] + const promises = new Set() const maxMultiplier = 2 for (let i = 0; i < numberOfWorkers * maxMultiplier; i++) { - promises.push(pool.execute()) + promises.add(pool.execute()) } for (const workerNode of pool.workerNodes) { expect(workerNode.tasksUsage).toStrictEqual({ @@ -369,13 +412,13 @@ describe('Abstract pool test suite', () => { it('Verify that worker pool tasks usage are reset at worker choice strategy change', async () => { const pool = new DynamicThreadPool( numberOfWorkers, - numberOfWorkers * 2, + numberOfWorkers, './tests/worker-files/thread/testWorker.js' ) - const promises = [] + const promises = new Set() const maxMultiplier = 2 for (let i = 0; i < numberOfWorkers * maxMultiplier; i++) { - promises.push(pool.execute()) + promises.add(pool.execute()) } await Promise.all(promises) for (const workerNode of pool.workerNodes) { @@ -422,11 +465,11 @@ describe('Abstract pool test suite', () => { numberOfWorkers, './tests/worker-files/thread/testWorker.js' ) - const promises = [] + const promises = new Set() let poolFull = 0 pool.emitter.on(PoolEvents.full, () => ++poolFull) for (let i = 0; i < numberOfWorkers * 2; i++) { - promises.push(pool.execute()) + promises.add(pool.execute()) } await Promise.all(promises) // The `full` event is triggered when the number of submitted tasks at once reach the max number of workers in the dynamic pool. @@ -440,11 +483,11 @@ describe('Abstract pool test suite', () => { numberOfWorkers, './tests/worker-files/thread/testWorker.js' ) - const promises = [] + const promises = new Set() let poolBusy = 0 pool.emitter.on(PoolEvents.busy, () => ++poolBusy) for (let i = 0; i < numberOfWorkers * 2; i++) { - promises.push(pool.execute()) + promises.add(pool.execute()) } await Promise.all(promises) // The `busy` event is triggered when the number of submitted tasks at once reach the number of fixed pool workers.