const { expect } = require('expect')
+const sinon = require('sinon')
const {
DynamicClusterPool,
DynamicThreadPool,
}
})
expect(workerNode.usage.tasks.executed).toBeGreaterThan(0)
- expect(workerNode.usage.tasks.executed).toBeLessThanOrEqual(maxMultiplier)
+ expect(workerNode.usage.tasks.executed).toBeLessThanOrEqual(
+ numberOfWorkers * maxMultiplier
+ )
expect(workerNode.usage.runTime.history.length).toBe(0)
expect(workerNode.usage.waitTime.history.length).toBe(0)
expect(workerNode.usage.elu.idle.history.length).toBe(0)
await pool.destroy()
})
- it.skip("Verify that pool event emitter 'backPressure' event can register a callback", async () => {
- const pool = new DynamicThreadPool(
- Math.floor(numberOfWorkers / 2),
+ it("Verify that pool event emitter 'backPressure' event can register a callback", async () => {
+ const pool = new FixedThreadPool(
numberOfWorkers,
'./tests/worker-files/thread/testWorker.js',
{
enableTasksQueue: true
}
)
+ sinon.stub(pool, 'hasBackPressure').returns(true)
const promises = new Set()
let poolBackPressure = 0
let poolInfo
++poolBackPressure
poolInfo = info
})
- for (let i = 0; i < Math.pow(numberOfWorkers, 2); i++) {
+ for (let i = 0; i < numberOfWorkers * 2; i++) {
promises.add(pool.execute())
}
await Promise.all(promises)
- expect(poolBackPressure).toBe(1)
+ expect(poolBackPressure).toBe(2)
expect(poolInfo).toStrictEqual({
version,
- type: PoolTypes.dynamic,
+ type: PoolTypes.fixed,
worker: WorkerTypes.thread,
ready: expect.any(Boolean),
strategy: WorkerChoiceStrategies.ROUND_ROBIN,
busyWorkerNodes: expect.any(Number),
executedTasks: expect.any(Number),
executingTasks: expect.any(Number),
+ maxQueuedTasks: expect.any(Number),
+ queuedTasks: expect.any(Number),
+ backPressure: true,
failedTasks: expect.any(Number)
})
+ expect(pool.hasBackPressure.called).toBe(true)
await pool.destroy()
})