numberOfWorkers,
'./tests/worker-files/thread/testWorker.js',
{
- enableTasksQueue: true,
- tasksQueueOptions: { concurrency: 0 }
+ workerChoiceStrategy: 'invalidStrategy'
}
)
- ).toThrowError("Invalid worker tasks concurrency '0'")
+ ).toThrowError("Invalid worker choice strategy 'invalidStrategy'")
expect(
() =>
new FixedThreadPool(
numberOfWorkers,
'./tests/worker-files/thread/testWorker.js',
{
- workerChoiceStrategy: 'invalidStrategy'
+ workerChoiceStrategyOptions: 'invalidOptions'
}
)
- ).toThrowError("Invalid worker choice strategy 'invalidStrategy'")
+ ).toThrowError(
+ 'Invalid worker choice strategy options: must be a plain object'
+ )
expect(
() =>
new FixedThreadPool(
).toThrowError(
'Invalid worker choice strategy options: must have a weight for each worker node'
)
+ expect(
+ () =>
+ new FixedThreadPool(
+ numberOfWorkers,
+ './tests/worker-files/thread/testWorker.js',
+ {
+ workerChoiceStrategyOptions: { measurement: 'invalidMeasurement' }
+ }
+ )
+ ).toThrowError(
+ "Invalid worker choice strategy options: invalid measurement 'invalidMeasurement'"
+ )
+ expect(
+ () =>
+ new FixedThreadPool(
+ numberOfWorkers,
+ './tests/worker-files/thread/testWorker.js',
+ {
+ enableTasksQueue: true,
+ tasksQueueOptions: { concurrency: 0 }
+ }
+ )
+ ).toThrowError("Invalid worker tasks concurrency '0'")
+ expect(
+ () =>
+ new FixedThreadPool(
+ numberOfWorkers,
+ './tests/worker-files/thread/testWorker.js',
+ {
+ enableTasksQueue: true,
+ tasksQueueOptions: 'invalidTasksQueueOptions'
+ }
+ )
+ ).toThrowError('Invalid tasks queue options: must be a plain object')
+ expect(
+ () =>
+ new FixedThreadPool(
+ numberOfWorkers,
+ './tests/worker-files/thread/testWorker.js',
+ {
+ enableTasksQueue: true,
+ tasksQueueOptions: { concurrency: 0.2 }
+ }
+ )
+ ).toThrowError('Invalid worker tasks concurrency: must be an integer')
})
it('Verify that worker choice strategy options can be set', async () => {
median: false
}
})
+ expect(() =>
+ pool.setWorkerChoiceStrategyOptions('invalidWorkerChoiceStrategyOptions')
+ ).toThrowError(
+ 'Invalid worker choice strategy options: must be a plain object'
+ )
+ expect(() =>
+ pool.setWorkerChoiceStrategyOptions({ weights: {} })
+ ).toThrowError(
+ 'Invalid worker choice strategy options: must have a weight for each worker node'
+ )
+ expect(() =>
+ pool.setWorkerChoiceStrategyOptions({ measurement: 'invalidMeasurement' })
+ ).toThrowError(
+ "Invalid worker choice strategy options: invalid measurement 'invalidMeasurement'"
+ )
await pool.destroy()
})
expect(pool.opts.tasksQueueOptions).toStrictEqual({ concurrency: 1 })
pool.setTasksQueueOptions({ concurrency: 2 })
expect(pool.opts.tasksQueueOptions).toStrictEqual({ concurrency: 2 })
+ expect(() =>
+ pool.setTasksQueueOptions('invalidTasksQueueOptions')
+ ).toThrowError('Invalid tasks queue options: must be a plain object')
expect(() => pool.setTasksQueueOptions({ concurrency: 0 })).toThrowError(
"Invalid worker tasks concurrency '0'"
)
+ expect(() => pool.setTasksQueueOptions({ concurrency: 0.2 })).toThrowError(
+ 'Invalid worker tasks concurrency: must be an integer'
+ )
await pool.destroy()
})
executed: 0,
executing: 0,
queued: 0,
+ maxQueued: 0,
failed: 0
},
runTime: {
expect(workerNode.tasksQueue).toBeDefined()
expect(workerNode.tasksQueue).toBeInstanceOf(Queue)
expect(workerNode.tasksQueue.size).toBe(0)
+ expect(workerNode.tasksQueue.maxSize).toBe(0)
}
await pool.destroy()
})
executed: 0,
executing: maxMultiplier,
queued: 0,
+ maxQueued: 0,
failed: 0
},
runTime: {
executed: maxMultiplier,
executing: 0,
queued: 0,
+ maxQueued: 0,
failed: 0
},
runTime: {
executed: expect.any(Number),
executing: 0,
queued: 0,
+ maxQueued: 0,
failed: 0
},
runTime: {
executed: 0,
executing: 0,
queued: 0,
+ maxQueued: 0,
failed: 0
},
runTime: {
const result2 = await pool.execute(data, 'factorial')
expect(result2).toBe(3628800)
const result3 = await pool.execute(data, 'fibonacci')
- expect(result3).toBe(89)
+ expect(result3).toBe(55)
})
})