X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=tests%2Fpools%2Fabstract%2Fabstract-pool.test.js;h=45371a31325e6cea532e87edd9b0c9c0fccd78dd;hb=ce3bdc7fa682f86fdb6f4cd57fe0ac3afe3af0de;hp=e85f112797c3267c79f11bf5d43132b2bbe85ff6;hpb=a788de39a01b042deb0707c2e92af99181b933d2;p=poolifier.git diff --git a/tests/pools/abstract/abstract-pool.test.js b/tests/pools/abstract/abstract-pool.test.js index e85f1127..45371a31 100644 --- a/tests/pools/abstract/abstract-pool.test.js +++ b/tests/pools/abstract/abstract-pool.test.js @@ -193,7 +193,9 @@ describe('Abstract pool test suite', () => { medWaitTime: false }) } - expect(pool.workerChoiceStrategyContext.getTaskStatistics()).toStrictEqual({ + expect( + pool.workerChoiceStrategyContext.getTaskStatisticsRequirements() + ).toStrictEqual({ runTime: true, avgRunTime: true, medRunTime: false, @@ -210,7 +212,9 @@ describe('Abstract pool test suite', () => { .workerChoiceStrategies) { expect(workerChoiceStrategy.opts).toStrictEqual({ medRunTime: true }) } - expect(pool.workerChoiceStrategyContext.getTaskStatistics()).toStrictEqual({ + expect( + pool.workerChoiceStrategyContext.getTaskStatisticsRequirements() + ).toStrictEqual({ runTime: true, avgRunTime: false, medRunTime: true, @@ -227,7 +231,9 @@ describe('Abstract pool test suite', () => { .workerChoiceStrategies) { expect(workerChoiceStrategy.opts).toStrictEqual({ medRunTime: false }) } - expect(pool.workerChoiceStrategyContext.getTaskStatistics()).toStrictEqual({ + expect( + pool.workerChoiceStrategyContext.getTaskStatisticsRequirements() + ).toStrictEqual({ runTime: true, avgRunTime: true, medRunTime: false, @@ -286,9 +292,11 @@ describe('Abstract pool test suite', () => { workerNodes: numberOfWorkers, idleWorkerNodes: numberOfWorkers, busyWorkerNodes: 0, - runningTasks: 0, + executedTasks: 0, + executingTasks: 0, queuedTasks: 0, - maxQueuedTasks: 0 + maxQueuedTasks: 0, + failedTasks: 0 }) await pool.destroy() pool = new DynamicClusterPool( @@ -304,9 +312,11 @@ describe('Abstract pool test suite', () => { workerNodes: numberOfWorkers, idleWorkerNodes: numberOfWorkers, busyWorkerNodes: 0, - runningTasks: 0, + executedTasks: 0, + executingTasks: 0, queuedTasks: 0, - maxQueuedTasks: 0 + maxQueuedTasks: 0, + failedTasks: 0 }) await pool.destroy() }) @@ -332,18 +342,25 @@ describe('Abstract pool test suite', () => { './tests/worker-files/cluster/testWorker.js' ) for (const workerNode of pool.workerNodes) { - expect(workerNode.tasksUsage).toStrictEqual({ - ran: 0, - running: 0, - runTime: 0, - runTimeHistory: expect.any(CircularArray), - avgRunTime: 0, - medRunTime: 0, - waitTime: 0, - waitTimeHistory: expect.any(CircularArray), - avgWaitTime: 0, - medWaitTime: 0, - error: 0, + expect(workerNode.workerUsage).toStrictEqual({ + tasks: { + executed: 0, + executing: 0, + queued: 0, + failed: 0 + }, + runTime: { + aggregation: 0, + average: 0, + median: 0, + history: expect.any(CircularArray) + }, + waitTime: { + aggregation: 0, + average: 0, + median: 0, + history: expect.any(CircularArray) + }, elu: undefined }) } @@ -374,35 +391,49 @@ describe('Abstract pool test suite', () => { promises.add(pool.execute()) } for (const workerNode of pool.workerNodes) { - expect(workerNode.tasksUsage).toStrictEqual({ - ran: 0, - running: maxMultiplier, - runTime: 0, - runTimeHistory: expect.any(CircularArray), - avgRunTime: 0, - medRunTime: 0, - waitTime: 0, - waitTimeHistory: expect.any(CircularArray), - avgWaitTime: 0, - medWaitTime: 0, - error: 0, + expect(workerNode.workerUsage).toStrictEqual({ + tasks: { + executed: 0, + executing: maxMultiplier, + queued: 0, + failed: 0 + }, + runTime: { + aggregation: 0, + average: 0, + median: 0, + history: expect.any(CircularArray) + }, + waitTime: { + aggregation: 0, + average: 0, + median: 0, + history: expect.any(CircularArray) + }, elu: undefined }) } await Promise.all(promises) for (const workerNode of pool.workerNodes) { - expect(workerNode.tasksUsage).toStrictEqual({ - ran: maxMultiplier, - running: 0, - runTime: 0, - runTimeHistory: expect.any(CircularArray), - avgRunTime: 0, - medRunTime: 0, - waitTime: 0, - waitTimeHistory: expect.any(CircularArray), - avgWaitTime: 0, - medWaitTime: 0, - error: 0, + expect(workerNode.workerUsage).toStrictEqual({ + tasks: { + executed: maxMultiplier, + executing: 0, + queued: 0, + failed: 0 + }, + runTime: { + aggregation: 0, + average: 0, + median: 0, + history: expect.any(CircularArray) + }, + waitTime: { + aggregation: 0, + average: 0, + median: 0, + history: expect.any(CircularArray) + }, elu: undefined }) } @@ -422,41 +453,57 @@ describe('Abstract pool test suite', () => { } await Promise.all(promises) for (const workerNode of pool.workerNodes) { - expect(workerNode.tasksUsage).toStrictEqual({ - ran: expect.any(Number), - running: 0, - runTime: 0, - runTimeHistory: expect.any(CircularArray), - avgRunTime: 0, - medRunTime: 0, - waitTime: 0, - waitTimeHistory: expect.any(CircularArray), - avgWaitTime: 0, - medWaitTime: 0, - error: 0, + expect(workerNode.workerUsage).toStrictEqual({ + tasks: { + executed: expect.any(Number), + executing: 0, + queued: 0, + failed: 0 + }, + runTime: { + aggregation: 0, + average: 0, + median: 0, + history: expect.any(CircularArray) + }, + waitTime: { + aggregation: 0, + average: 0, + median: 0, + history: expect.any(CircularArray) + }, elu: undefined }) - expect(workerNode.tasksUsage.ran).toBeGreaterThan(0) - expect(workerNode.tasksUsage.ran).toBeLessThanOrEqual(maxMultiplier) + expect(workerNode.workerUsage.tasks.executed).toBeGreaterThan(0) + expect(workerNode.workerUsage.tasks.executed).toBeLessThanOrEqual( + maxMultiplier + ) } pool.setWorkerChoiceStrategy(WorkerChoiceStrategies.FAIR_SHARE) for (const workerNode of pool.workerNodes) { - expect(workerNode.tasksUsage).toStrictEqual({ - ran: 0, - running: 0, - runTime: 0, - runTimeHistory: expect.any(CircularArray), - avgRunTime: 0, - medRunTime: 0, - waitTime: 0, - waitTimeHistory: expect.any(CircularArray), - avgWaitTime: 0, - medWaitTime: 0, - error: 0, + expect(workerNode.workerUsage).toStrictEqual({ + tasks: { + executed: 0, + executing: 0, + queued: 0, + failed: 0 + }, + runTime: { + aggregation: 0, + average: 0, + median: 0, + history: expect.any(CircularArray) + }, + waitTime: { + aggregation: 0, + average: 0, + median: 0, + history: expect.any(CircularArray) + }, elu: undefined }) - expect(workerNode.tasksUsage.runTimeHistory.length).toBe(0) - expect(workerNode.tasksUsage.waitTimeHistory.length).toBe(0) + expect(workerNode.workerUsage.runTime.history.length).toBe(0) + expect(workerNode.workerUsage.waitTime.history.length).toBe(0) } await pool.destroy() }) @@ -469,7 +516,11 @@ describe('Abstract pool test suite', () => { ) const promises = new Set() let poolFull = 0 - pool.emitter.on(PoolEvents.full, () => ++poolFull) + let poolInfo + pool.emitter.on(PoolEvents.full, info => { + ++poolFull + poolInfo = info + }) for (let i = 0; i < numberOfWorkers * 2; i++) { promises.add(pool.execute()) } @@ -477,6 +528,20 @@ describe('Abstract pool test suite', () => { // The `full` event is triggered when the number of submitted tasks at once reach the max number of workers in the dynamic pool. // So in total numberOfWorkers * 2 times for a loop submitting up to numberOfWorkers * 2 tasks to the dynamic pool with min = max = numberOfWorkers. expect(poolFull).toBe(numberOfWorkers * 2) + expect(poolInfo).toStrictEqual({ + type: PoolTypes.dynamic, + worker: WorkerTypes.thread, + minSize: expect.any(Number), + maxSize: expect.any(Number), + workerNodes: expect.any(Number), + idleWorkerNodes: expect.any(Number), + busyWorkerNodes: expect.any(Number), + executedTasks: expect.any(Number), + executingTasks: expect.any(Number), + queuedTasks: expect.any(Number), + maxQueuedTasks: expect.any(Number), + failedTasks: expect.any(Number) + }) await pool.destroy() }) @@ -487,7 +552,11 @@ describe('Abstract pool test suite', () => { ) const promises = new Set() let poolBusy = 0 - pool.emitter.on(PoolEvents.busy, () => ++poolBusy) + let poolInfo + pool.emitter.on(PoolEvents.busy, info => { + ++poolBusy + poolInfo = info + }) for (let i = 0; i < numberOfWorkers * 2; i++) { promises.add(pool.execute()) } @@ -495,6 +564,20 @@ describe('Abstract pool test suite', () => { // The `busy` event is triggered when the number of submitted tasks at once reach the number of fixed pool workers. // So in total numberOfWorkers + 1 times for a loop submitting up to numberOfWorkers * 2 tasks to the fixed pool. expect(poolBusy).toBe(numberOfWorkers + 1) + expect(poolInfo).toStrictEqual({ + type: PoolTypes.fixed, + worker: WorkerTypes.thread, + minSize: expect.any(Number), + maxSize: expect.any(Number), + workerNodes: expect.any(Number), + idleWorkerNodes: expect.any(Number), + busyWorkerNodes: expect.any(Number), + executedTasks: expect.any(Number), + executingTasks: expect.any(Number), + queuedTasks: expect.any(Number), + maxQueuedTasks: expect.any(Number), + failedTasks: expect.any(Number) + }) await pool.destroy() })