X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;ds=sidebyside;f=tests%2Fdynamic.test.js;h=67f5504100841f2a998a4c8f7927324980b62fbf;hb=5c5b24ee8a3461b7b2eb5832fdac4efb9bf3449f;hp=7c5eec12e8b0496e3f3a3c9fbc0ba11cc08d0abc;hpb=b755d5beab080feedc652bac13e376b902321040;p=poolifier.git diff --git a/tests/dynamic.test.js b/tests/dynamic.test.js index 7c5eec12..67f55041 100644 --- a/tests/dynamic.test.js +++ b/tests/dynamic.test.js @@ -1,10 +1,11 @@ const expect = require('expect') const DynamicThreadPool = require('../lib/dynamic') const min = 1 -const max = 10 -const pool = new DynamicThreadPool(min, max, - './tests/testWorker.js', - { errorHandler: (e) => console.error(e), onlineHandler: () => console.log('worker is online') }) +const max = 3 +const pool = new DynamicThreadPool(min, max, './tests/workers/testWorker.js', { + errorHandler: e => console.error(e), + onlineHandler: () => console.log('worker is online') +}) describe('Dynamic thread pool test suite ', () => { it('Verify that the function is executed in a worker thread', async () => { @@ -18,7 +19,7 @@ describe('Dynamic thread pool test suite ', () => { let closedThreads = 0 let fullPool = 0 pool.emitter.on('FullPool', () => fullPool++) - for (let i = 0; i < (max * 3); i++) { + for (let i = 0; i < max * 2; i++) { promises.push(pool.execute({ test: 'test' })) } expect(pool.workers.length).toBe(max) @@ -28,10 +29,25 @@ describe('Dynamic thread pool test suite ', () => { }) }) expect(fullPool > 1).toBeTruthy() - await new Promise(resolve => setTimeout(resolve, 1000 * 2)) + await new Promise(resolve => setTimeout(resolve, 2000)) 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 +55,7 @@ describe('Dynamic thread pool test suite ', () => { closedThreads++ }) }) - pool.destroy() - await new Promise(resolve => setTimeout(resolve, 1000)) + await pool.destroy() expect(closedThreads).toBe(min) }) @@ -57,7 +72,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() })