test: add test for pool side hasTaskFunction()
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Sun, 17 Sep 2023 20:09:28 +0000 (22:09 +0200)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Sun, 17 Sep 2023 20:09:28 +0000 (22:09 +0200)
Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
docs/api.md
tests/pools/abstract/abstract-pool.test.js
tests/worker/abstract-worker.test.js

index 7bddac433e13c5f1d7db4f97b1cfa9c3cd9ddaae..d2cc2ba7747c31f7bdf0b0efbc204ae29919639d 100644 (file)
@@ -51,6 +51,12 @@ This method is available on both pool implementations and will start the minimum
 
 This method is available on both pool implementations and will call the terminate method on each worker.
 
+### `pool.hasTaskFunction(name)`
+
+`name` (mandatory) The task function name
+
+This method is available on both pool implementations and returns a boolean.
+
 ### `pool.listTaskFunctionNames()`
 
 This method is available on both pool implementations and returns an array of the task function names.
@@ -148,20 +154,20 @@ An object with these properties:
 
 `name` (mandatory) The task function name
 
-This method is available on both worker implementations and returns a boolean.
+This method is available on both worker implementations and returns `{ status: boolean, error?: Error }`.
 
 #### `YourWorker.addTaskFunction(name, fn)`
 
 `name` (mandatory) The task function name  
 `fn` (mandatory) The task function
 
-This method is available on both worker implementations and returns a boolean.
+This method is available on both worker implementations and returns `{ status: boolean, error?: Error }`.
 
 #### `YourWorker.removeTaskFunction(name)`
 
 `name` (mandatory) The task function name
 
-This method is available on both worker implementations and returns a boolean.
+This method is available on both worker implementations and returns `{ status: boolean, error?: Error }`.
 
 #### `YourWorker.listTaskFunctionNames()`
 
@@ -171,4 +177,4 @@ This method is available on both worker implementations and returns an array of
 
 `name` (mandatory) The task function name
 
-This method is available on both worker implementations and returns a boolean.
+This method is available on both worker implementations and returns `{ status: boolean, error?: Error }`.
index 93e7c256dabaad671a78e53bc1923418bfa6ceef..9dca322ecf036abf8ee77be3dcc7a9bcf7354e1b 100644 (file)
@@ -1243,7 +1243,7 @@ describe('Abstract pool test suite', () => {
     await pool.destroy()
   })
 
-  it('Verify that listTaskFunctions() is working', async () => {
+  it('Verify that listTaskFunctionNames() is working', async () => {
     const dynamicThreadPool = new DynamicThreadPool(
       Math.floor(numberOfWorkers / 2),
       numberOfWorkers,
@@ -1271,6 +1271,36 @@ describe('Abstract pool test suite', () => {
     await fixedClusterPool.destroy()
   })
 
+  it('Verify that hasTaskFunction() is working', async () => {
+    const dynamicThreadPool = new DynamicThreadPool(
+      Math.floor(numberOfWorkers / 2),
+      numberOfWorkers,
+      './tests/worker-files/thread/testMultipleTaskFunctionsWorker.js'
+    )
+    await waitPoolEvents(dynamicThreadPool, PoolEvents.ready, 1)
+    expect(dynamicThreadPool.hasTaskFunction(DEFAULT_TASK_NAME)).toBe(true)
+    expect(dynamicThreadPool.hasTaskFunction('jsonIntegerSerialization')).toBe(
+      true
+    )
+    expect(dynamicThreadPool.hasTaskFunction('factorial')).toBe(true)
+    expect(dynamicThreadPool.hasTaskFunction('fibonacci')).toBe(true)
+    expect(dynamicThreadPool.hasTaskFunction('unknown')).toBe(false)
+    const fixedClusterPool = new FixedClusterPool(
+      numberOfWorkers,
+      './tests/worker-files/cluster/testMultipleTaskFunctionsWorker.js'
+    )
+    await waitPoolEvents(fixedClusterPool, PoolEvents.ready, 1)
+    expect(dynamicThreadPool.hasTaskFunction(DEFAULT_TASK_NAME)).toBe(true)
+    expect(dynamicThreadPool.hasTaskFunction('jsonIntegerSerialization')).toBe(
+      true
+    )
+    expect(dynamicThreadPool.hasTaskFunction('factorial')).toBe(true)
+    expect(dynamicThreadPool.hasTaskFunction('fibonacci')).toBe(true)
+    expect(dynamicThreadPool.hasTaskFunction('unknown')).toBe(false)
+    await dynamicThreadPool.destroy()
+    await fixedClusterPool.destroy()
+  })
+
   it('Verify that multiple task functions worker is working', async () => {
     const pool = new DynamicClusterPool(
       Math.floor(numberOfWorkers / 2),
index 87a78f5d3925c026abf92c94df4b53ed25889ed3..13f3ae17aa70528bc14d259472b911f0c163bc02 100644 (file)
@@ -339,7 +339,7 @@ describe('Abstract worker test suite', () => {
     expect(worker.getMainWorker().send.calledOnce).toBe(true)
   })
 
-  it('Verify that listTaskFunctions() works', () => {
+  it('Verify that listTaskFunctionNames() works', () => {
     const fn1 = () => {
       return 1
     }