fix: fix pool statuses semantic
[poolifier.git] / tests / pools / cluster / fixed.test.js
index 60dac4017c72781b6b1e33a78169910438e3030a..f71529a911949f285d0c54ebd8be5b27d67d0e3d 100644 (file)
@@ -1,7 +1,7 @@
 const { expect } = require('expect')
 const { FixedClusterPool, PoolEvents } = require('../../../lib')
 const { WorkerFunctions } = require('../../test-types')
-const TestUtils = require('../../test-utils')
+const { waitPoolEvents, waitWorkerEvents } = require('../../test-utils')
 
 describe('Fixed cluster pool test suite', () => {
   const numberOfWorkers = 6
@@ -74,10 +74,24 @@ describe('Fixed cluster pool test suite', () => {
 
   it('Verify that is possible to invoke the execute() method without input', async () => {
     const result = await pool.execute()
-    expect(result).toBe(false)
+    expect(result).toStrictEqual({ ok: 1 })
   })
 
-  it("Verify that 'busy' event is emitted", async () => {
+  it("Verify that 'ready' event is emitted", async () => {
+    const pool1 = new FixedClusterPool(
+      numberOfWorkers,
+      './tests/worker-files/cluster/testWorker.js',
+      {
+        errorHandler: e => console.error(e)
+      }
+    )
+    let poolReady = 0
+    pool1.emitter.on(PoolEvents.ready, () => ++poolReady)
+    await waitPoolEvents(pool1, PoolEvents.ready, 1)
+    expect(poolReady).toBe(1)
+  })
+
+  it("Verify that 'busy' event is emitted", () => {
     let poolBusy = 0
     pool.emitter.on(PoolEvents.busy, () => ++poolBusy)
     for (let i = 0; i < numberOfWorkers * 2; i++) {
@@ -145,8 +159,12 @@ describe('Fixed cluster pool test suite', () => {
     }
     expect(inError).toBeDefined()
     expect(typeof inError === 'string').toBe(true)
-    expect(inError).toContain('Error Message from ClusterWorker on worker')
-    expect(taskError.data).toStrictEqual(data)
+    expect(inError).toBe('Error Message from ClusterWorker')
+    expect(taskError).toStrictEqual({
+      name: 'default',
+      message: 'Error Message from ClusterWorker',
+      data
+    })
     expect(
       errorPool.workerNodes.some(
         workerNode => workerNode.usage.tasks.failed === 1
@@ -168,10 +186,12 @@ describe('Fixed cluster pool test suite', () => {
     }
     expect(inError).toBeDefined()
     expect(typeof inError === 'string').toBe(true)
-    expect(inError).toContain(
-      'Error Message from ClusterWorker:async on worker'
-    )
-    expect(taskError.data).toStrictEqual(data)
+    expect(inError).toBe('Error Message from ClusterWorker:async')
+    expect(taskError).toStrictEqual({
+      name: 'default',
+      message: 'Error Message from ClusterWorker:async',
+      data
+    })
     expect(
       asyncErrorPool.workerNodes.some(
         workerNode => workerNode.usage.tasks.failed === 1
@@ -189,11 +209,7 @@ describe('Fixed cluster pool test suite', () => {
   })
 
   it('Shutdown test', async () => {
-    const exitPromise = TestUtils.waitWorkerEvents(
-      pool,
-      'exit',
-      numberOfWorkers
-    )
+    const exitPromise = waitWorkerEvents(pool, 'exit', numberOfWorkers)
     await pool.destroy()
     const numberOfExitEvents = await exitPromise
     expect(numberOfExitEvents).toBe(numberOfWorkers)
@@ -228,7 +244,7 @@ describe('Fixed cluster pool test suite', () => {
       './tests/worker-files/cluster/testWorker.js'
     )
     const res = await pool1.execute()
-    expect(res).toBe(false)
+    expect(res).toStrictEqual({ ok: 1 })
     // We need to clean up the resources after our test
     await pool1.destroy()
   })
@@ -237,6 +253,6 @@ describe('Fixed cluster pool test suite', () => {
     expect(
       () =>
         new FixedClusterPool(0, './tests/worker-files/cluster/testWorker.js')
-    ).toThrowError('Cannot instantiate a fixed pool with no worker')
+    ).toThrowError('Cannot instantiate a fixed pool with zero worker')
   })
 })