const expect = require('expect')
const { FixedClusterPool } = require('../../../lib/index')
-const numWorkers = 10
+const numberOfWorkers = 10
+const maxTasks = 500
const pool = new FixedClusterPool(
- numWorkers,
+ numberOfWorkers,
'./tests/worker/cluster/testWorker.js',
{
- errorHandler: e => console.error(e),
- onlineHandler: () => console.log('worker is online')
+ errorHandler: e => console.error(e)
}
)
const emptyPool = new FixedClusterPool(
1,
'./tests/worker/cluster/errorWorker.js',
{
- errorHandler: e => console.error(e),
- onlineHandler: () => console.log('worker is online')
+ errorHandler: e => console.error(e)
}
)
1,
'./tests/worker/cluster/asyncErrorWorker.js',
{
- errorHandler: e => console.error(e),
onlineHandler: () => console.log('worker is online')
}
)
const asyncPool = new FixedClusterPool(
1,
- './tests/worker/cluster/asyncWorker.js'
+ './tests/worker/cluster/asyncWorker.js',
+ {
+ maxTasks: maxTasks
+ }
)
describe('Fixed cluster pool test suite ', () => {
it('Choose worker round robin test', async () => {
const results = new Set()
- for (let i = 0; i < numWorkers; i++) {
+ for (let i = 0; i < numberOfWorkers; i++) {
results.add(pool.chooseWorker().id)
}
- expect(results.size).toBe(numWorkers)
+ expect(results.size).toBe(numberOfWorkers)
})
it('Verify that the function is executed in a worker cluster', async () => {
expect(usedTime).toBeGreaterThanOrEqual(2000)
})
+ it('Verify that maxTasks is set properly', async () => {
+ const worker = asyncPool.chooseWorker()
+ expect(worker.getMaxListeners()).toBe(maxTasks)
+ })
+
it('Shutdown test', async () => {
let closedWorkers = 0
pool.workers.forEach(w => {
closedWorkers++
})
})
- pool.destroy()
+ await pool.destroy()
await new Promise(resolve => setTimeout(resolve, 200))
- expect(closedWorkers).toBe(numWorkers)
+ expect(closedWorkers).toBe(numberOfWorkers)
})
it('Validations test', () => {