Merge pull request #65 from pioardi/dependabot/npm_and_yarn/standard-16.0.2
[poolifier.git] / tests / dynamic.test.js
index 3784c65110b5161cbd9bb9a25b8eff0c0047d9ec..15195012be80f25db7750f80de1fbebdf5614765 100644 (file)
@@ -3,7 +3,7 @@ const DynamicThreadPool = require('../lib/dynamic')
 const min = 1
 const max = 3
 const pool = new DynamicThreadPool(min, max,
-  './tests/testWorker.js',
+  './tests/workers/testWorker.js',
   { errorHandler: (e) => console.error(e), onlineHandler: () => console.log('worker is online') })
 
 describe('Dynamic thread pool test suite ', () => {
@@ -32,6 +32,21 @@ describe('Dynamic thread pool test suite ', () => {
     expect(closedThreads).toBe(max - min)
   })
 
+  it('Verify scale thread up and down is working', async () => {
+    expect(pool.workers.length).toBe(min)
+    for (let i = 0; i < max * 10; i++) {
+      pool.execute({ test: 'test' })
+    }
+    expect(pool.workers.length).toBe(max)
+    await new Promise(resolve => setTimeout(resolve, 1000))
+    expect(pool.workers.length).toBe(min)
+    for (let i = 0; i < max * 10; i++) {
+      pool.execute({ test: 'test' })
+    }
+    expect(pool.workers.length).toBe(max)
+    await new Promise(resolve => setTimeout(resolve, 1000))
+    expect(pool.workers.length).toBe(min)
+  })
   it('Shutdown test', async () => {
     let closedThreads = 0
     pool.workers.forEach(w => {
@@ -39,8 +54,7 @@ describe('Dynamic thread pool test suite ', () => {
         closedThreads++
       })
     })
-    pool.destroy()
-    await new Promise(resolve => setTimeout(resolve, 2000))
+    await pool.destroy()
     expect(closedThreads).toBe(min)
   })
 
@@ -57,7 +71,7 @@ describe('Dynamic thread pool test suite ', () => {
   })
 
   it('Should work even without opts in input', async () => {
-    const pool1 = new DynamicThreadPool(1, 1, './tests/testWorker.js')
+    const pool1 = new DynamicThreadPool(1, 1, './tests/workers/testWorker.js')
     const res = await pool1.execute({ test: 'test' })
     expect(res).toBeFalsy()
   })