X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=tests%2Fdynamic.test.js;h=15195012be80f25db7750f80de1fbebdf5614765;hb=e640b5a83f70adfa3c2bdad13dfc3bba815388cc;hp=3784c65110b5161cbd9bb9a25b8eff0c0047d9ec;hpb=c719859cee641746563db75ad6725911ec6f7c28;p=poolifier.git diff --git a/tests/dynamic.test.js b/tests/dynamic.test.js index 3784c651..15195012 100644 --- a/tests/dynamic.test.js +++ b/tests/dynamic.test.js @@ -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() })