X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=tests%2Fpools%2Fabstract-pool.test.mjs;h=041c62a2b1277c179d689dbe182d6b382fc55cef;hb=cd424e3162f5ae6be04dc156cdc8562dae16c33f;hp=09a21c9d1fb3a57fb654c5f29c44adf703c025ba;hpb=a074ffee1b46f43d0dcfba58128748c7492104dd;p=poolifier.git diff --git a/tests/pools/abstract-pool.test.mjs b/tests/pools/abstract-pool.test.mjs index 09a21c9d..041c62a2 100644 --- a/tests/pools/abstract-pool.test.mjs +++ b/tests/pools/abstract-pool.test.mjs @@ -1,5 +1,7 @@ import { EventEmitterAsyncResource } from 'node:events' +import { dirname, join } from 'node:path' import { readFileSync } from 'node:fs' +import { fileURLToPath } from 'node:url' import { expect } from 'expect' import { restore, stub } from 'sinon' import { @@ -19,7 +21,12 @@ import { waitPoolEvents } from '../test-utils.js' import { WorkerNode } from '../../lib/pools/worker-node.js' describe('Abstract pool test suite', () => { - const version = JSON.parse(readFileSync('./package.json', 'utf8')).version + const version = JSON.parse( + readFileSync( + join(dirname(fileURLToPath(import.meta.url)), '../..', 'package.json'), + 'utf8' + ) + ).version const numberOfWorkers = 2 class StubPoolWithIsMain extends FixedThreadPool { isMain () { @@ -36,7 +43,7 @@ describe('Abstract pool test suite', () => { () => new StubPoolWithIsMain( numberOfWorkers, - './tests/worker-files/thread/testWorker.js', + './tests/worker-files/thread/testWorker.mjs', { errorHandler: e => console.error(e) } @@ -51,7 +58,7 @@ describe('Abstract pool test suite', () => { it('Verify that pool statuses properties are set', async () => { const pool = new FixedThreadPool( numberOfWorkers, - './tests/worker-files/thread/testWorker.js' + './tests/worker-files/thread/testWorker.mjs' ) expect(pool.starting).toBe(false) expect(pool.started).toBe(true) @@ -84,7 +91,7 @@ describe('Abstract pool test suite', () => { () => new FixedThreadPool( undefined, - './tests/worker-files/thread/testWorker.js' + './tests/worker-files/thread/testWorker.mjs' ) ).toThrowError( new Error( @@ -107,7 +114,7 @@ describe('Abstract pool test suite', () => { it('Verify that a non integer number of workers is checked', () => { expect( () => - new FixedThreadPool(0.25, './tests/worker-files/thread/testWorker.js') + new FixedThreadPool(0.25, './tests/worker-files/thread/testWorker.mjs') ).toThrowError( new TypeError( 'Cannot instantiate a pool with a non safe integer number of workers' @@ -133,7 +140,7 @@ describe('Abstract pool test suite', () => { new DynamicThreadPool( 0.5, 1, - './tests/worker-files/thread/testWorker.js' + './tests/worker-files/thread/testWorker.mjs' ) ).toThrowError( new TypeError( @@ -154,7 +161,11 @@ describe('Abstract pool test suite', () => { ) expect( () => - new DynamicThreadPool(2, 1, './tests/worker-files/thread/testWorker.js') + new DynamicThreadPool( + 2, + 1, + './tests/worker-files/thread/testWorker.mjs' + ) ).toThrowError( new RangeError( 'Cannot instantiate a dynamic pool with a maximum pool size inferior to the minimum pool size' @@ -162,7 +173,11 @@ describe('Abstract pool test suite', () => { ) expect( () => - new DynamicThreadPool(0, 0, './tests/worker-files/thread/testWorker.js') + new DynamicThreadPool( + 0, + 0, + './tests/worker-files/thread/testWorker.mjs' + ) ).toThrowError( new RangeError( 'Cannot instantiate a dynamic pool with a maximum pool size equal to zero' @@ -185,7 +200,7 @@ describe('Abstract pool test suite', () => { it('Verify that pool options are checked', async () => { let pool = new FixedThreadPool( numberOfWorkers, - './tests/worker-files/thread/testWorker.js' + './tests/worker-files/thread/testWorker.mjs' ) expect(pool.emitter).toBeInstanceOf(EventEmitterAsyncResource) expect(pool.opts).toStrictEqual({ @@ -220,7 +235,7 @@ describe('Abstract pool test suite', () => { const testHandler = () => console.info('test handler executed') pool = new FixedThreadPool( numberOfWorkers, - './tests/worker-files/thread/testWorker.js', + './tests/worker-files/thread/testWorker.mjs', { workerChoiceStrategy: WorkerChoiceStrategies.LEAST_USED, workerChoiceStrategyOptions: { @@ -282,12 +297,12 @@ describe('Abstract pool test suite', () => { await pool.destroy() }) - it('Verify that pool options are validated', async () => { + it('Verify that pool options are validated', () => { expect( () => new FixedThreadPool( numberOfWorkers, - './tests/worker-files/thread/testWorker.js', + './tests/worker-files/thread/testWorker.mjs', { workerChoiceStrategy: 'invalidStrategy' } @@ -299,7 +314,7 @@ describe('Abstract pool test suite', () => { () => new FixedThreadPool( numberOfWorkers, - './tests/worker-files/thread/testWorker.js', + './tests/worker-files/thread/testWorker.mjs', { workerChoiceStrategyOptions: { retries: 'invalidChoiceRetries' @@ -315,7 +330,7 @@ describe('Abstract pool test suite', () => { () => new FixedThreadPool( numberOfWorkers, - './tests/worker-files/thread/testWorker.js', + './tests/worker-files/thread/testWorker.mjs', { workerChoiceStrategyOptions: { retries: -1 @@ -331,7 +346,7 @@ describe('Abstract pool test suite', () => { () => new FixedThreadPool( numberOfWorkers, - './tests/worker-files/thread/testWorker.js', + './tests/worker-files/thread/testWorker.mjs', { workerChoiceStrategyOptions: { weights: {} } } @@ -345,7 +360,7 @@ describe('Abstract pool test suite', () => { () => new FixedThreadPool( numberOfWorkers, - './tests/worker-files/thread/testWorker.js', + './tests/worker-files/thread/testWorker.mjs', { workerChoiceStrategyOptions: { measurement: 'invalidMeasurement' } } @@ -359,7 +374,7 @@ describe('Abstract pool test suite', () => { () => new FixedThreadPool( numberOfWorkers, - './tests/worker-files/thread/testWorker.js', + './tests/worker-files/thread/testWorker.mjs', { enableTasksQueue: true, tasksQueueOptions: 'invalidTasksQueueOptions' @@ -372,7 +387,7 @@ describe('Abstract pool test suite', () => { () => new FixedThreadPool( numberOfWorkers, - './tests/worker-files/thread/testWorker.js', + './tests/worker-files/thread/testWorker.mjs', { enableTasksQueue: true, tasksQueueOptions: { concurrency: 0 } @@ -387,7 +402,7 @@ describe('Abstract pool test suite', () => { () => new FixedThreadPool( numberOfWorkers, - './tests/worker-files/thread/testWorker.js', + './tests/worker-files/thread/testWorker.mjs', { enableTasksQueue: true, tasksQueueOptions: { concurrency: -1 } @@ -402,7 +417,7 @@ describe('Abstract pool test suite', () => { () => new FixedThreadPool( numberOfWorkers, - './tests/worker-files/thread/testWorker.js', + './tests/worker-files/thread/testWorker.mjs', { enableTasksQueue: true, tasksQueueOptions: { concurrency: 0.2 } @@ -415,7 +430,7 @@ describe('Abstract pool test suite', () => { () => new FixedThreadPool( numberOfWorkers, - './tests/worker-files/thread/testWorker.js', + './tests/worker-files/thread/testWorker.mjs', { enableTasksQueue: true, tasksQueueOptions: { size: 0 } @@ -430,7 +445,7 @@ describe('Abstract pool test suite', () => { () => new FixedThreadPool( numberOfWorkers, - './tests/worker-files/thread/testWorker.js', + './tests/worker-files/thread/testWorker.mjs', { enableTasksQueue: true, tasksQueueOptions: { size: -1 } @@ -445,7 +460,7 @@ describe('Abstract pool test suite', () => { () => new FixedThreadPool( numberOfWorkers, - './tests/worker-files/thread/testWorker.js', + './tests/worker-files/thread/testWorker.mjs', { enableTasksQueue: true, tasksQueueOptions: { size: 0.2 } @@ -459,7 +474,7 @@ describe('Abstract pool test suite', () => { it('Verify that pool worker choice strategy options can be set', async () => { const pool = new FixedThreadPool( numberOfWorkers, - './tests/worker-files/thread/testWorker.js', + './tests/worker-files/thread/testWorker.mjs', { workerChoiceStrategy: WorkerChoiceStrategies.FAIR_SHARE } ) expect(pool.opts.workerChoiceStrategyOptions).toStrictEqual({ @@ -633,7 +648,7 @@ describe('Abstract pool test suite', () => { it('Verify that pool tasks queue can be enabled/disabled', async () => { const pool = new FixedThreadPool( numberOfWorkers, - './tests/worker-files/thread/testWorker.js' + './tests/worker-files/thread/testWorker.mjs' ) expect(pool.opts.enableTasksQueue).toBe(false) expect(pool.opts.tasksQueueOptions).toBeUndefined() @@ -678,7 +693,7 @@ describe('Abstract pool test suite', () => { it('Verify that pool tasks queue options can be set', async () => { const pool = new FixedThreadPool( numberOfWorkers, - './tests/worker-files/thread/testWorker.js', + './tests/worker-files/thread/testWorker.mjs', { enableTasksQueue: true } ) expect(pool.opts.tasksQueueOptions).toStrictEqual({ @@ -768,7 +783,7 @@ describe('Abstract pool test suite', () => { it('Verify that pool info is set', async () => { let pool = new FixedThreadPool( numberOfWorkers, - './tests/worker-files/thread/testWorker.js' + './tests/worker-files/thread/testWorker.mjs' ) expect(pool.info).toStrictEqual({ version, @@ -861,7 +876,7 @@ describe('Abstract pool test suite', () => { pool = new DynamicThreadPool( Math.floor(numberOfWorkers / 2), numberOfWorkers, - './tests/worker-files/thread/testWorker.js' + './tests/worker-files/thread/testWorker.mjs' ) for (const workerNode of pool.workerNodes) { expect(workerNode).toBeInstanceOf(WorkerNode) @@ -890,7 +905,7 @@ describe('Abstract pool test suite', () => { pool = new DynamicThreadPool( Math.floor(numberOfWorkers / 2), numberOfWorkers, - './tests/worker-files/thread/testWorker.js' + './tests/worker-files/thread/testWorker.mjs' ) for (const workerNode of pool.workerNodes) { expect(workerNode).toBeInstanceOf(WorkerNode) @@ -1021,7 +1036,7 @@ describe('Abstract pool test suite', () => { const pool = new DynamicThreadPool( Math.floor(numberOfWorkers / 2), numberOfWorkers, - './tests/worker-files/thread/testWorker.js' + './tests/worker-files/thread/testWorker.mjs' ) const promises = new Set() const maxMultiplier = 2 @@ -1135,7 +1150,7 @@ describe('Abstract pool test suite', () => { it("Verify that pool event emitter 'busy' event can register a callback", async () => { const pool = new FixedThreadPool( numberOfWorkers, - './tests/worker-files/thread/testWorker.js' + './tests/worker-files/thread/testWorker.mjs' ) expect(pool.emitter.eventNames()).toStrictEqual([]) const promises = new Set() @@ -1176,7 +1191,7 @@ describe('Abstract pool test suite', () => { const pool = new DynamicThreadPool( Math.floor(numberOfWorkers / 2), numberOfWorkers, - './tests/worker-files/thread/testWorker.js' + './tests/worker-files/thread/testWorker.mjs' ) expect(pool.emitter.eventNames()).toStrictEqual([]) const promises = new Set() @@ -1214,7 +1229,7 @@ describe('Abstract pool test suite', () => { it("Verify that pool event emitter 'backPressure' event can register a callback", async () => { const pool = new FixedThreadPool( numberOfWorkers, - './tests/worker-files/thread/testWorker.js', + './tests/worker-files/thread/testWorker.mjs', { enableTasksQueue: true } @@ -1262,7 +1277,7 @@ describe('Abstract pool test suite', () => { const dynamicThreadPool = new DynamicThreadPool( Math.floor(numberOfWorkers / 2), numberOfWorkers, - './tests/worker-files/thread/testMultipleTaskFunctionsWorker.js' + './tests/worker-files/thread/testMultipleTaskFunctionsWorker.mjs' ) await waitPoolEvents(dynamicThreadPool, PoolEvents.ready, 1) expect(dynamicThreadPool.hasTaskFunction(DEFAULT_TASK_NAME)).toBe(true) @@ -1292,7 +1307,7 @@ describe('Abstract pool test suite', () => { const dynamicThreadPool = new DynamicThreadPool( Math.floor(numberOfWorkers / 2), numberOfWorkers, - './tests/worker-files/thread/testWorker.js' + './tests/worker-files/thread/testWorker.mjs' ) await waitPoolEvents(dynamicThreadPool, PoolEvents.ready, 1) await expect( @@ -1363,7 +1378,7 @@ describe('Abstract pool test suite', () => { const dynamicThreadPool = new DynamicThreadPool( Math.floor(numberOfWorkers / 2), numberOfWorkers, - './tests/worker-files/thread/testWorker.js' + './tests/worker-files/thread/testWorker.mjs' ) await waitPoolEvents(dynamicThreadPool, PoolEvents.ready, 1) expect(dynamicThreadPool.listTaskFunctionNames()).toStrictEqual([ @@ -1404,7 +1419,7 @@ describe('Abstract pool test suite', () => { const dynamicThreadPool = new DynamicThreadPool( Math.floor(numberOfWorkers / 2), numberOfWorkers, - './tests/worker-files/thread/testMultipleTaskFunctionsWorker.js' + './tests/worker-files/thread/testMultipleTaskFunctionsWorker.mjs' ) await waitPoolEvents(dynamicThreadPool, PoolEvents.ready, 1) expect(dynamicThreadPool.listTaskFunctionNames()).toStrictEqual([ @@ -1432,7 +1447,7 @@ describe('Abstract pool test suite', () => { const dynamicThreadPool = new DynamicThreadPool( Math.floor(numberOfWorkers / 2), numberOfWorkers, - './tests/worker-files/thread/testMultipleTaskFunctionsWorker.js' + './tests/worker-files/thread/testMultipleTaskFunctionsWorker.mjs' ) await waitPoolEvents(dynamicThreadPool, PoolEvents.ready, 1) await expect(