Merge dependabot/npm_and_yarn/examples/typescript/http-server-pool/fastify-worker_thr...
[poolifier.git] / tests / pools / abstract / abstract-pool.test.js
index df109fe1982e4c511e40a73b9e5449683a18ae00..e9c65dde91de251b6228c303861696a9f8629162 100644 (file)
@@ -238,8 +238,8 @@ describe('Abstract pool test suite', () => {
       enableTasksQueue: true,
       tasksQueueOptions: {
         concurrency: 2,
-        size: 4,
-        tasksStealing: true,
+        size: Math.pow(numberOfWorkers, 2),
+        taskStealing: true,
         tasksStealingOnBackPressure: true
       },
       workerChoiceStrategy: WorkerChoiceStrategies.LEAST_USED,
@@ -630,25 +630,41 @@ describe('Abstract pool test suite', () => {
     )
     expect(pool.opts.enableTasksQueue).toBe(false)
     expect(pool.opts.tasksQueueOptions).toBeUndefined()
+    for (const workerNode of pool.workerNodes) {
+      expect(workerNode.onEmptyQueue).toBeUndefined()
+      expect(workerNode.onBackPressure).toBeUndefined()
+    }
     pool.enableTasksQueue(true)
     expect(pool.opts.enableTasksQueue).toBe(true)
     expect(pool.opts.tasksQueueOptions).toStrictEqual({
       concurrency: 1,
-      size: 4,
-      tasksStealing: true,
+      size: Math.pow(numberOfWorkers, 2),
+      taskStealing: true,
       tasksStealingOnBackPressure: true
     })
+    for (const workerNode of pool.workerNodes) {
+      expect(workerNode.onEmptyQueue).toBeInstanceOf(Function)
+      expect(workerNode.onBackPressure).toBeInstanceOf(Function)
+    }
     pool.enableTasksQueue(true, { concurrency: 2 })
     expect(pool.opts.enableTasksQueue).toBe(true)
     expect(pool.opts.tasksQueueOptions).toStrictEqual({
       concurrency: 2,
-      size: 4,
-      tasksStealing: true,
+      size: Math.pow(numberOfWorkers, 2),
+      taskStealing: true,
       tasksStealingOnBackPressure: true
     })
+    for (const workerNode of pool.workerNodes) {
+      expect(workerNode.onEmptyQueue).toBeInstanceOf(Function)
+      expect(workerNode.onBackPressure).toBeInstanceOf(Function)
+    }
     pool.enableTasksQueue(false)
     expect(pool.opts.enableTasksQueue).toBe(false)
     expect(pool.opts.tasksQueueOptions).toBeUndefined()
+    for (const workerNode of pool.workerNodes) {
+      expect(workerNode.onEmptyQueue).toBeUndefined()
+      expect(workerNode.onBackPressure).toBeUndefined()
+    }
     await pool.destroy()
   })
 
@@ -660,17 +676,54 @@ describe('Abstract pool test suite', () => {
     )
     expect(pool.opts.tasksQueueOptions).toStrictEqual({
       concurrency: 1,
-      size: 4,
-      tasksStealing: true,
+      size: Math.pow(numberOfWorkers, 2),
+      taskStealing: true,
       tasksStealingOnBackPressure: true
     })
-    pool.setTasksQueueOptions({ concurrency: 2 })
+    for (const workerNode of pool.workerNodes) {
+      expect(workerNode.tasksQueueBackPressureSize).toBe(
+        pool.opts.tasksQueueOptions.size
+      )
+      expect(workerNode.onEmptyQueue).toBeInstanceOf(Function)
+      expect(workerNode.onBackPressure).toBeInstanceOf(Function)
+    }
+    pool.setTasksQueueOptions({
+      concurrency: 2,
+      size: 2,
+      taskStealing: false,
+      tasksStealingOnBackPressure: false
+    })
     expect(pool.opts.tasksQueueOptions).toStrictEqual({
       concurrency: 2,
-      size: 4,
-      tasksStealing: true,
+      size: 2,
+      taskStealing: false,
+      tasksStealingOnBackPressure: false
+    })
+    for (const workerNode of pool.workerNodes) {
+      expect(workerNode.tasksQueueBackPressureSize).toBe(
+        pool.opts.tasksQueueOptions.size
+      )
+      expect(workerNode.onEmptyQueue).toBeUndefined()
+      expect(workerNode.onBackPressure).toBeUndefined()
+    }
+    pool.setTasksQueueOptions({
+      concurrency: 1,
+      taskStealing: true,
+      tasksStealingOnBackPressure: true
+    })
+    expect(pool.opts.tasksQueueOptions).toStrictEqual({
+      concurrency: 1,
+      size: Math.pow(numberOfWorkers, 2),
+      taskStealing: true,
       tasksStealingOnBackPressure: true
     })
+    for (const workerNode of pool.workerNodes) {
+      expect(workerNode.tasksQueueBackPressureSize).toBe(
+        pool.opts.tasksQueueOptions.size
+      )
+      expect(workerNode.onEmptyQueue).toBeInstanceOf(Function)
+      expect(workerNode.onBackPressure).toBeInstanceOf(Function)
+    }
     expect(() =>
       pool.setTasksQueueOptions('invalidTasksQueueOptions')
     ).toThrowError(