})
it('Verify that tasks queuing is working', async () => {
- const maxMultiplier = 10
const promises = new Set()
+ const maxMultiplier = 2
for (let i = 0; i < numberOfThreads * maxMultiplier; i++) {
promises.add(queuePool.execute())
}
expect(workerNode.tasksUsage.running).toBeLessThanOrEqual(
queuePool.opts.tasksQueueOptions.concurrency
)
- expect(workerNode.tasksUsage.run).toBe(0)
+ expect(workerNode.tasksUsage.ran).toBe(0)
expect(workerNode.tasksQueue.size).toBeGreaterThan(0)
}
- expect(queuePool.numberOfRunningTasks).toBe(numberOfThreads)
- expect(queuePool.numberOfQueuedTasks).toBe(
+ expect(queuePool.info.runningTasks).toBe(numberOfThreads)
+ expect(queuePool.info.queuedTasks).toBe(
+ numberOfThreads * maxMultiplier - numberOfThreads
+ )
+ expect(queuePool.info.maxQueuedTasks).toBe(
numberOfThreads * maxMultiplier - numberOfThreads
)
await Promise.all(promises)
for (const workerNode of queuePool.workerNodes) {
expect(workerNode.tasksUsage.running).toBe(0)
- expect(workerNode.tasksUsage.run).toBeGreaterThan(0)
+ expect(workerNode.tasksUsage.ran).toBeGreaterThan(0)
+ expect(workerNode.tasksUsage.ran).toBeLessThanOrEqual(maxMultiplier)
expect(workerNode.tasksQueue.size).toBe(0)
}
- promises.clear()
})
it('Verify that is possible to have a worker that return undefined', async () => {
it('Verify that error handling is working properly:sync', async () => {
const data = { f: 10 }
+ let taskError
+ errorPool.emitter.on(PoolEvents.taskError, e => {
+ taskError = e
+ })
let inError
try {
await errorPool.execute(data)
expect(inError.message).toBeDefined()
expect(typeof inError.message === 'string').toBe(true)
expect(inError.message).toBe('Error Message from ThreadWorker')
+ expect(taskError).toStrictEqual({
+ error: new Error('Error Message from ThreadWorker'),
+ errorData: data
+ })
expect(
errorPool.workerNodes.some(
workerNode => workerNode.tasksUsage.error === 1
it('Verify that error handling is working properly:async', async () => {
const data = { f: 10 }
+ // let taskError
+ // errorPool.emitter.on(PoolEvents.taskError, e => {
+ // taskError = e
+ // })
let inError
try {
await asyncErrorPool.execute(data)
expect(inError.message).toBeDefined()
expect(typeof inError.message === 'string').toBe(true)
expect(inError.message).toBe('Error Message from ThreadWorker:async')
+ // expect(taskError).toStrictEqual({
+ // error: new Error('Error Message from ThreadWorker:async'),
+ // errorData: data
+ // })
expect(
asyncErrorPool.workerNodes.some(
workerNode => workerNode.tasksUsage.error === 1