fix: fix worker options handling
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Mon, 11 Dec 2023 14:20:33 +0000 (15:20 +0100)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Mon, 11 Dec 2023 14:20:33 +0000 (15:20 +0100)
Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
src/worker/abstract-worker.ts
src/worker/thread-worker.ts
tests/pools/cluster/dynamic.test.mjs
tests/pools/thread/dynamic.test.mjs

index 15259106cfe59e1e73d7ec3a613da27a262c62a8..ae95dcf825c40640b019cbc8027123ae9b2257b0 100644 (file)
@@ -79,7 +79,6 @@ export abstract class AbstractWorker<
   /**
    * Constructs a new poolifier worker.
    *
-   * @param type - The type of async event.
    * @param isMain - Whether this is the main worker or not.
    * @param mainWorker - Reference to main worker.
    * @param taskFunctions - Task function(s) processed by the worker when the pool's `execution` function is invoked. The first function is the default function.
index fdbab44ed5f1356e6502a814f56e3a94ef54215d..756550e3337d1e8ef66071dd6dd21c77a5679f45 100644 (file)
@@ -30,7 +30,7 @@ export class ThreadWorker<
   /**
    * Message port used to communicate with the main worker.
    */
-  private port!: MessagePort
+  private port?: MessagePort
   /**
    * Constructs a new poolifier thread worker.
    *
@@ -41,7 +41,7 @@ export class ThreadWorker<
     taskFunctions: TaskFunction<Data, Response> | TaskFunctions<Data, Response>,
     opts: WorkerOptions = {}
   ) {
-    super(isMainThread, parentPort as MessagePort, taskFunctions)
+    super(isMainThread, parentPort as MessagePort, taskFunctions, opts)
   }
 
   /** @inheritDoc */
@@ -81,7 +81,7 @@ export class ThreadWorker<
 
   /** @inheritDoc */
   protected sendToMainWorker (message: MessageValue<Response>): void {
-    this.port.postMessage({ ...message, workerId: this.id })
+    this.port?.postMessage({ ...message, workerId: this.id })
   }
 
   /**
index 93f995fcb4cfefd215ea90e348ec1e4023643745..6e8580e9d7cf07449c26d2fa74476b486b3178fe 100644 (file)
@@ -37,10 +37,10 @@ describe('Dynamic cluster pool test suite', () => {
     expect(poolBusy).toBe(1)
     const numberOfExitEvents = await waitWorkerEvents(pool, 'exit', max - min)
     expect(numberOfExitEvents).toBe(max - min)
+    expect(pool.workerNodes.length).toBe(min)
   })
 
   it('Verify scale worker up and down is working', async () => {
-    expect(pool.workerNodes.length).toBe(min)
     for (let i = 0; i < max * 2; i++) {
       pool.execute()
     }
index bf7f95278e861e0f1239d0ea36d0645399e56c3e..efcc417e9a2ff5b98db606638efff112bfdc54ed 100644 (file)
@@ -37,10 +37,10 @@ describe('Dynamic thread pool test suite', () => {
     expect(poolBusy).toBe(1)
     const numberOfExitEvents = await waitWorkerEvents(pool, 'exit', max - min)
     expect(numberOfExitEvents).toBe(max - min)
+    expect(pool.workerNodes.length).toBe(min)
   })
 
   it('Verify scale thread up and down is working', async () => {
-    expect(pool.workerNodes.length).toBe(min)
     for (let i = 0; i < max * 2; i++) {
       pool.execute()
     }