test: add more event emitter tests
[poolifier.git] / tests / pools / abstract-pool.test.js
index 3860a0eb95fc4f50de2ea9ff28813860faafd9b6..e6572cc1851a74a028e0a6a39f5478153fc57d32 100644 (file)
@@ -1,4 +1,4 @@
-const { EventEmitter } = require('node:events')
+const { EventEmitterAsyncResource } = require('node:events')
 const { expect } = require('expect')
 const sinon = require('sinon')
 const {
@@ -79,7 +79,13 @@ describe('Abstract pool test suite', () => {
   })
 
   it('Verify that numberOfWorkers is checked', () => {
-    expect(() => new FixedThreadPool()).toThrowError(
+    expect(
+      () =>
+        new FixedThreadPool(
+          undefined,
+          './tests/worker-files/thread/testWorker.js'
+        )
+    ).toThrowError(
       new Error(
         'Cannot instantiate a pool without specifying the number of workers'
       )
@@ -180,7 +186,7 @@ describe('Abstract pool test suite', () => {
       numberOfWorkers,
       './tests/worker-files/thread/testWorker.js'
     )
-    expect(pool.emitter).toBeInstanceOf(EventEmitter)
+    expect(pool.emitter).toBeInstanceOf(EventEmitterAsyncResource)
     expect(pool.opts).toStrictEqual({
       startWorkers: true,
       enableEvents: true,
@@ -1096,6 +1102,7 @@ describe('Abstract pool test suite', () => {
       numberOfWorkers,
       './tests/worker-files/cluster/testWorker.js'
     )
+    expect(pool.emitter.eventNames()).toStrictEqual([])
     let poolInfo
     let poolReady = 0
     pool.emitter.on(PoolEvents.ready, info => {
@@ -1103,6 +1110,7 @@ describe('Abstract pool test suite', () => {
       poolInfo = info
     })
     await waitPoolEvents(pool, PoolEvents.ready, 1)
+    expect(pool.emitter.eventNames()).toStrictEqual([PoolEvents.ready])
     expect(poolReady).toBe(1)
     expect(poolInfo).toStrictEqual({
       version,
@@ -1128,6 +1136,7 @@ describe('Abstract pool test suite', () => {
       numberOfWorkers,
       './tests/worker-files/thread/testWorker.js'
     )
+    expect(pool.emitter.eventNames()).toStrictEqual([])
     const promises = new Set()
     let poolBusy = 0
     let poolInfo
@@ -1135,6 +1144,7 @@ describe('Abstract pool test suite', () => {
       ++poolBusy
       poolInfo = info
     })
+    expect(pool.emitter.eventNames()).toStrictEqual([PoolEvents.busy])
     for (let i = 0; i < numberOfWorkers * 2; i++) {
       promises.add(pool.execute())
     }
@@ -1167,6 +1177,7 @@ describe('Abstract pool test suite', () => {
       numberOfWorkers,
       './tests/worker-files/thread/testWorker.js'
     )
+    expect(pool.emitter.eventNames()).toStrictEqual([])
     const promises = new Set()
     let poolFull = 0
     let poolInfo
@@ -1174,6 +1185,7 @@ describe('Abstract pool test suite', () => {
       ++poolFull
       poolInfo = info
     })
+    expect(pool.emitter.eventNames()).toStrictEqual([PoolEvents.full])
     for (let i = 0; i < numberOfWorkers * 2; i++) {
       promises.add(pool.execute())
     }
@@ -1207,6 +1219,7 @@ describe('Abstract pool test suite', () => {
       }
     )
     sinon.stub(pool, 'hasBackPressure').returns(true)
+    expect(pool.emitter.eventNames()).toStrictEqual([])
     const promises = new Set()
     let poolBackPressure = 0
     let poolInfo
@@ -1214,6 +1227,7 @@ describe('Abstract pool test suite', () => {
       ++poolBackPressure
       poolInfo = info
     })
+    expect(pool.emitter.eventNames()).toStrictEqual([PoolEvents.backPressure])
     for (let i = 0; i < numberOfWorkers + 1; i++) {
       promises.add(pool.execute())
     }