1 import { Worker as ThreadWorker } from 'node:worker_threads'
2 import { Worker as ClusterWorker } from 'node:cluster'
3 import { expect } from 'expect'
6 DEFAULT_CIRCULAR_ARRAY_SIZE
7 } from '../../lib/circular-array.js'
10 getDefaultTasksQueueOptions,
11 updateMeasurementStatistics
12 } from '../../lib/pools/utils.js'
13 import { WorkerTypes } from '../../lib/index.js'
15 describe('Pool utils test suite', () => {
16 it('Verify getDefaultTasksQueueOptions() behavior', () => {
18 expect(getDefaultTasksQueueOptions(poolMaxSize)).toStrictEqual({
20 size: Math.pow(poolMaxSize, 2),
22 tasksStealingOnBackPressure: true,
23 tasksFinishedTimeout: 2000
27 it('Verify updateMeasurementStatistics() behavior', () => {
28 const measurementStatistics = {
29 history: new CircularArray()
31 updateMeasurementStatistics(
32 measurementStatistics,
33 { aggregate: true, average: false, median: false },
36 expect(measurementStatistics).toStrictEqual({
40 history: new CircularArray()
42 updateMeasurementStatistics(
43 measurementStatistics,
44 { aggregate: true, average: false, median: false },
47 expect(measurementStatistics).toStrictEqual({
51 history: new CircularArray()
53 updateMeasurementStatistics(
54 measurementStatistics,
55 { aggregate: true, average: true, median: false },
58 expect(measurementStatistics).toStrictEqual({
63 history: new CircularArray(DEFAULT_CIRCULAR_ARRAY_SIZE, 0.001)
65 updateMeasurementStatistics(
66 measurementStatistics,
67 { aggregate: true, average: true, median: false },
70 expect(measurementStatistics).toStrictEqual({
75 history: new CircularArray(DEFAULT_CIRCULAR_ARRAY_SIZE, 0.001, 0.003)
77 updateMeasurementStatistics(
78 measurementStatistics,
79 { aggregate: true, average: false, median: true },
82 expect(measurementStatistics).toStrictEqual({
87 history: new CircularArray(
88 DEFAULT_CIRCULAR_ARRAY_SIZE,
94 updateMeasurementStatistics(
95 measurementStatistics,
96 { aggregate: true, average: true, median: false },
99 expect(measurementStatistics).toStrictEqual({
104 history: new CircularArray(
105 DEFAULT_CIRCULAR_ARRAY_SIZE,
114 it('Verify createWorker() behavior', () => {
118 './tests/worker-files/thread/testWorker.mjs'
120 ).toBeInstanceOf(ThreadWorker)
124 './tests/worker-files/cluster/testWorker.mjs'
126 ).toBeInstanceOf(ClusterWorker)