6a82b05712a5f5dac09ddedc324f608c78db8b0d
1 const expect
= require('expect')
2 const { DynamicClusterPool
} = require('../../../lib/index')
5 const pool
= new DynamicClusterPool(
8 './tests/worker/cluster/testWorker.js',
10 errorHandler
: e
=> console
.error(e
),
11 onlineHandler
: () => console
.log('worker is online')
15 describe('Dynamic cluster pool test suite ', () => {
16 it('Verify that the function is executed in a worker cluster', async () => {
17 const result
= await pool
.execute({ test
: 'test' })
18 expect(result
).toBeDefined()
19 expect(result
).toBeFalsy()
22 it('Verify that new workers are created when required, max size is not exceeded and that after a while new workers will die', async () => {
26 pool
.emitter
.on('FullPool', () => fullPool
++)
27 for (let i
= 0; i
< max
* 2; i
++) {
28 promises
.push(pool
.execute({ test
: 'test' }))
30 expect(pool
.workers
.length
).toBeLessThanOrEqual(max
)
31 expect(pool
.workers
.length
).toBeGreaterThan(min
)
32 pool
.workers
.forEach(w
=> {
37 expect(fullPool
> 1).toBeTruthy()
38 await
new Promise(resolve
=> setTimeout(resolve
, 5000))
39 expect(closedWorkers
).toBe(max
- min
)
42 it('Verify scale worker up and down is working', async () => {
43 expect(pool
.workers
.length
).toBe(min
)
44 for (let i
= 0; i
< max
* 10; i
++) {
45 pool
.execute({ test
: 'test' })
47 expect(pool
.workers
.length
).toBeGreaterThan(min
)
48 await
new Promise(resolve
=> setTimeout(resolve
, 3000))
49 expect(pool
.workers
.length
).toBe(min
)
50 for (let i
= 0; i
< max
* 10; i
++) {
51 pool
.execute({ test
: 'test' })
53 expect(pool
.workers
.length
).toBeGreaterThan(min
)
54 await
new Promise(resolve
=> setTimeout(resolve
, 2000))
55 expect(pool
.workers
.length
).toBe(min
)
57 it('Shutdown test', async () => {
59 pool
.workers
.forEach(w
=> {
65 await
new Promise(resolve
=> setTimeout(resolve
, 1000))
66 expect(closedWorkers
).toBe(min
)
69 it('Validations test', () => {
72 const pool1
= new DynamicClusterPool()
77 expect(error
).toBeTruthy()
78 expect(error
.message
).toBeTruthy()
81 it('Should work even without opts in input', async () => {
82 const pool1
= new DynamicClusterPool(
85 './tests/worker/cluster/testWorker.js'
87 const res
= await pool1
.execute({ test
: 'test' })
88 expect(res
).toBeFalsy()