repositories
/
poolifier.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
refactor: cleanup worker message listener implementation
[poolifier.git]
/
tests
/
pools
/
abstract-pool.test.mjs
diff --git
a/tests/pools/abstract-pool.test.mjs
b/tests/pools/abstract-pool.test.mjs
index 09a21c9d1fb3a57fb654c5f29c44adf703c025ba..041c62a2b1277c179d689dbe182d6b382fc55cef 100644
(file)
--- a/
tests/pools/abstract-pool.test.mjs
+++ b/
tests/pools/abstract-pool.test.mjs
@@
-1,5
+1,7
@@
import { EventEmitterAsyncResource } from 'node:events'
import { EventEmitterAsyncResource } from 'node:events'
+import { dirname, join } from 'node:path'
import { readFileSync } from 'node:fs'
import { readFileSync } from 'node:fs'
+import { fileURLToPath } from 'node:url'
import { expect } from 'expect'
import { restore, stub } from 'sinon'
import {
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', () => {
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 () {
const numberOfWorkers = 2
class StubPoolWithIsMain extends FixedThreadPool {
isMain () {
@@
-36,7
+43,7
@@
describe('Abstract pool test suite', () => {
() =>
new StubPoolWithIsMain(
numberOfWorkers,
() =>
new StubPoolWithIsMain(
numberOfWorkers,
- './tests/worker-files/thread/testWorker.js',
+ './tests/worker-files/thread/testWorker.
m
js',
{
errorHandler: e => console.error(e)
}
{
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,
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.
m
js'
)
expect(pool.starting).toBe(false)
expect(pool.started).toBe(true)
)
expect(pool.starting).toBe(false)
expect(pool.started).toBe(true)
@@
-84,7
+91,7
@@
describe('Abstract pool test suite', () => {
() =>
new FixedThreadPool(
undefined,
() =>
new FixedThreadPool(
undefined,
- './tests/worker-files/thread/testWorker.js'
+ './tests/worker-files/thread/testWorker.
m
js'
)
).toThrowError(
new Error(
)
).toThrowError(
new Error(
@@
-107,7
+114,7
@@
describe('Abstract pool test suite', () => {
it('Verify that a non integer number of workers is checked', () => {
expect(
() =>
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.
m
js')
).toThrowError(
new TypeError(
'Cannot instantiate a pool with a non safe integer number of workers'
).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,
new DynamicThreadPool(
0.5,
1,
- './tests/worker-files/thread/testWorker.js'
+ './tests/worker-files/thread/testWorker.
m
js'
)
).toThrowError(
new TypeError(
)
).toThrowError(
new TypeError(
@@
-154,7
+161,11
@@
describe('Abstract pool test suite', () => {
)
expect(
() =>
)
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'
).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(
() =>
)
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'
).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,
it('Verify that pool options are checked', async () => {
let pool = new FixedThreadPool(
numberOfWorkers,
- './tests/worker-files/thread/testWorker.js'
+ './tests/worker-files/thread/testWorker.
m
js'
)
expect(pool.emitter).toBeInstanceOf(EventEmitterAsyncResource)
expect(pool.opts).toStrictEqual({
)
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,
const testHandler = () => console.info('test handler executed')
pool = new FixedThreadPool(
numberOfWorkers,
- './tests/worker-files/thread/testWorker.js',
+ './tests/worker-files/thread/testWorker.
m
js',
{
workerChoiceStrategy: WorkerChoiceStrategies.LEAST_USED,
workerChoiceStrategyOptions: {
{
workerChoiceStrategy: WorkerChoiceStrategies.LEAST_USED,
workerChoiceStrategyOptions: {
@@
-282,12
+297,12
@@
describe('Abstract pool test suite', () => {
await pool.destroy()
})
await pool.destroy()
})
- it('Verify that pool options are validated',
async
() => {
+ it('Verify that pool options are validated', () => {
expect(
() =>
new FixedThreadPool(
numberOfWorkers,
expect(
() =>
new FixedThreadPool(
numberOfWorkers,
- './tests/worker-files/thread/testWorker.js',
+ './tests/worker-files/thread/testWorker.
m
js',
{
workerChoiceStrategy: 'invalidStrategy'
}
{
workerChoiceStrategy: 'invalidStrategy'
}
@@
-299,7
+314,7
@@
describe('Abstract pool test suite', () => {
() =>
new FixedThreadPool(
numberOfWorkers,
() =>
new FixedThreadPool(
numberOfWorkers,
- './tests/worker-files/thread/testWorker.js',
+ './tests/worker-files/thread/testWorker.
m
js',
{
workerChoiceStrategyOptions: {
retries: 'invalidChoiceRetries'
{
workerChoiceStrategyOptions: {
retries: 'invalidChoiceRetries'
@@
-315,7
+330,7
@@
describe('Abstract pool test suite', () => {
() =>
new FixedThreadPool(
numberOfWorkers,
() =>
new FixedThreadPool(
numberOfWorkers,
- './tests/worker-files/thread/testWorker.js',
+ './tests/worker-files/thread/testWorker.
m
js',
{
workerChoiceStrategyOptions: {
retries: -1
{
workerChoiceStrategyOptions: {
retries: -1
@@
-331,7
+346,7
@@
describe('Abstract pool test suite', () => {
() =>
new FixedThreadPool(
numberOfWorkers,
() =>
new FixedThreadPool(
numberOfWorkers,
- './tests/worker-files/thread/testWorker.js',
+ './tests/worker-files/thread/testWorker.
m
js',
{
workerChoiceStrategyOptions: { weights: {} }
}
{
workerChoiceStrategyOptions: { weights: {} }
}
@@
-345,7
+360,7
@@
describe('Abstract pool test suite', () => {
() =>
new FixedThreadPool(
numberOfWorkers,
() =>
new FixedThreadPool(
numberOfWorkers,
- './tests/worker-files/thread/testWorker.js',
+ './tests/worker-files/thread/testWorker.
m
js',
{
workerChoiceStrategyOptions: { measurement: 'invalidMeasurement' }
}
{
workerChoiceStrategyOptions: { measurement: 'invalidMeasurement' }
}
@@
-359,7
+374,7
@@
describe('Abstract pool test suite', () => {
() =>
new FixedThreadPool(
numberOfWorkers,
() =>
new FixedThreadPool(
numberOfWorkers,
- './tests/worker-files/thread/testWorker.js',
+ './tests/worker-files/thread/testWorker.
m
js',
{
enableTasksQueue: true,
tasksQueueOptions: 'invalidTasksQueueOptions'
{
enableTasksQueue: true,
tasksQueueOptions: 'invalidTasksQueueOptions'
@@
-372,7
+387,7
@@
describe('Abstract pool test suite', () => {
() =>
new FixedThreadPool(
numberOfWorkers,
() =>
new FixedThreadPool(
numberOfWorkers,
- './tests/worker-files/thread/testWorker.js',
+ './tests/worker-files/thread/testWorker.
m
js',
{
enableTasksQueue: true,
tasksQueueOptions: { concurrency: 0 }
{
enableTasksQueue: true,
tasksQueueOptions: { concurrency: 0 }
@@
-387,7
+402,7
@@
describe('Abstract pool test suite', () => {
() =>
new FixedThreadPool(
numberOfWorkers,
() =>
new FixedThreadPool(
numberOfWorkers,
- './tests/worker-files/thread/testWorker.js',
+ './tests/worker-files/thread/testWorker.
m
js',
{
enableTasksQueue: true,
tasksQueueOptions: { concurrency: -1 }
{
enableTasksQueue: true,
tasksQueueOptions: { concurrency: -1 }
@@
-402,7
+417,7
@@
describe('Abstract pool test suite', () => {
() =>
new FixedThreadPool(
numberOfWorkers,
() =>
new FixedThreadPool(
numberOfWorkers,
- './tests/worker-files/thread/testWorker.js',
+ './tests/worker-files/thread/testWorker.
m
js',
{
enableTasksQueue: true,
tasksQueueOptions: { concurrency: 0.2 }
{
enableTasksQueue: true,
tasksQueueOptions: { concurrency: 0.2 }
@@
-415,7
+430,7
@@
describe('Abstract pool test suite', () => {
() =>
new FixedThreadPool(
numberOfWorkers,
() =>
new FixedThreadPool(
numberOfWorkers,
- './tests/worker-files/thread/testWorker.js',
+ './tests/worker-files/thread/testWorker.
m
js',
{
enableTasksQueue: true,
tasksQueueOptions: { size: 0 }
{
enableTasksQueue: true,
tasksQueueOptions: { size: 0 }
@@
-430,7
+445,7
@@
describe('Abstract pool test suite', () => {
() =>
new FixedThreadPool(
numberOfWorkers,
() =>
new FixedThreadPool(
numberOfWorkers,
- './tests/worker-files/thread/testWorker.js',
+ './tests/worker-files/thread/testWorker.
m
js',
{
enableTasksQueue: true,
tasksQueueOptions: { size: -1 }
{
enableTasksQueue: true,
tasksQueueOptions: { size: -1 }
@@
-445,7
+460,7
@@
describe('Abstract pool test suite', () => {
() =>
new FixedThreadPool(
numberOfWorkers,
() =>
new FixedThreadPool(
numberOfWorkers,
- './tests/worker-files/thread/testWorker.js',
+ './tests/worker-files/thread/testWorker.
m
js',
{
enableTasksQueue: true,
tasksQueueOptions: { size: 0.2 }
{
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,
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.
m
js',
{ workerChoiceStrategy: WorkerChoiceStrategies.FAIR_SHARE }
)
expect(pool.opts.workerChoiceStrategyOptions).toStrictEqual({
{ 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,
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.
m
js'
)
expect(pool.opts.enableTasksQueue).toBe(false)
expect(pool.opts.tasksQueueOptions).toBeUndefined()
)
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,
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.
m
js',
{ enableTasksQueue: true }
)
expect(pool.opts.tasksQueueOptions).toStrictEqual({
{ 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,
it('Verify that pool info is set', async () => {
let pool = new FixedThreadPool(
numberOfWorkers,
- './tests/worker-files/thread/testWorker.js'
+ './tests/worker-files/thread/testWorker.
m
js'
)
expect(pool.info).toStrictEqual({
version,
)
expect(pool.info).toStrictEqual({
version,
@@
-861,7
+876,7
@@
describe('Abstract pool test suite', () => {
pool = new DynamicThreadPool(
Math.floor(numberOfWorkers / 2),
numberOfWorkers,
pool = new DynamicThreadPool(
Math.floor(numberOfWorkers / 2),
numberOfWorkers,
- './tests/worker-files/thread/testWorker.js'
+ './tests/worker-files/thread/testWorker.
m
js'
)
for (const workerNode of pool.workerNodes) {
expect(workerNode).toBeInstanceOf(WorkerNode)
)
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,
pool = new DynamicThreadPool(
Math.floor(numberOfWorkers / 2),
numberOfWorkers,
- './tests/worker-files/thread/testWorker.js'
+ './tests/worker-files/thread/testWorker.
m
js'
)
for (const workerNode of pool.workerNodes) {
expect(workerNode).toBeInstanceOf(WorkerNode)
)
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,
const pool = new DynamicThreadPool(
Math.floor(numberOfWorkers / 2),
numberOfWorkers,
- './tests/worker-files/thread/testWorker.js'
+ './tests/worker-files/thread/testWorker.
m
js'
)
const promises = new Set()
const maxMultiplier = 2
)
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,
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.
m
js'
)
expect(pool.emitter.eventNames()).toStrictEqual([])
const promises = new Set()
)
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,
const pool = new DynamicThreadPool(
Math.floor(numberOfWorkers / 2),
numberOfWorkers,
- './tests/worker-files/thread/testWorker.js'
+ './tests/worker-files/thread/testWorker.
m
js'
)
expect(pool.emitter.eventNames()).toStrictEqual([])
const promises = new Set()
)
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,
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.
m
js',
{
enableTasksQueue: true
}
{
enableTasksQueue: true
}
@@
-1262,7
+1277,7
@@
describe('Abstract pool test suite', () => {
const dynamicThreadPool = new DynamicThreadPool(
Math.floor(numberOfWorkers / 2),
numberOfWorkers,
const dynamicThreadPool = new DynamicThreadPool(
Math.floor(numberOfWorkers / 2),
numberOfWorkers,
- './tests/worker-files/thread/testMultipleTaskFunctionsWorker.js'
+ './tests/worker-files/thread/testMultipleTaskFunctionsWorker.
m
js'
)
await waitPoolEvents(dynamicThreadPool, PoolEvents.ready, 1)
expect(dynamicThreadPool.hasTaskFunction(DEFAULT_TASK_NAME)).toBe(true)
)
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,
const dynamicThreadPool = new DynamicThreadPool(
Math.floor(numberOfWorkers / 2),
numberOfWorkers,
- './tests/worker-files/thread/testWorker.js'
+ './tests/worker-files/thread/testWorker.
m
js'
)
await waitPoolEvents(dynamicThreadPool, PoolEvents.ready, 1)
await expect(
)
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,
const dynamicThreadPool = new DynamicThreadPool(
Math.floor(numberOfWorkers / 2),
numberOfWorkers,
- './tests/worker-files/thread/testWorker.js'
+ './tests/worker-files/thread/testWorker.
m
js'
)
await waitPoolEvents(dynamicThreadPool, PoolEvents.ready, 1)
expect(dynamicThreadPool.listTaskFunctionNames()).toStrictEqual([
)
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,
const dynamicThreadPool = new DynamicThreadPool(
Math.floor(numberOfWorkers / 2),
numberOfWorkers,
- './tests/worker-files/thread/testMultipleTaskFunctionsWorker.js'
+ './tests/worker-files/thread/testMultipleTaskFunctionsWorker.
m
js'
)
await waitPoolEvents(dynamicThreadPool, PoolEvents.ready, 1)
expect(dynamicThreadPool.listTaskFunctionNames()).toStrictEqual([
)
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,
const dynamicThreadPool = new DynamicThreadPool(
Math.floor(numberOfWorkers / 2),
numberOfWorkers,
- './tests/worker-files/thread/testMultipleTaskFunctionsWorker.js'
+ './tests/worker-files/thread/testMultipleTaskFunctionsWorker.
m
js'
)
await waitPoolEvents(dynamicThreadPool, PoolEvents.ready, 1)
await expect(
)
await waitPoolEvents(dynamicThreadPool, PoolEvents.ready, 1)
await expect(