refactor: move worker setup into worker node constructor
[poolifier.git] / tests / pools / utils.test.mjs
1 import { Worker as ThreadWorker } from 'node:worker_threads'
2 import { Worker as ClusterWorker } from 'node:cluster'
3 import { expect } from 'expect'
4 import {
5 CircularArray,
6 DEFAULT_CIRCULAR_ARRAY_SIZE
7 } from '../../lib/circular-array.js'
8 import {
9 createWorker,
10 updateMeasurementStatistics
11 } from '../../lib/pools/utils.js'
12 import { WorkerTypes } from '../../lib/index.js'
13
14 describe('Pool utils test suite', () => {
15 it('Verify updateMeasurementStatistics() behavior', () => {
16 const measurementStatistics = {
17 history: new CircularArray()
18 }
19 updateMeasurementStatistics(
20 measurementStatistics,
21 { aggregate: true, average: false, median: false },
22 0.01
23 )
24 expect(measurementStatistics).toStrictEqual({
25 aggregate: 0.01,
26 maximum: 0.01,
27 minimum: 0.01,
28 history: new CircularArray()
29 })
30 updateMeasurementStatistics(
31 measurementStatistics,
32 { aggregate: true, average: false, median: false },
33 0.02
34 )
35 expect(measurementStatistics).toStrictEqual({
36 aggregate: 0.03,
37 maximum: 0.02,
38 minimum: 0.01,
39 history: new CircularArray()
40 })
41 updateMeasurementStatistics(
42 measurementStatistics,
43 { aggregate: true, average: true, median: false },
44 0.001
45 )
46 expect(measurementStatistics).toStrictEqual({
47 aggregate: 0.031,
48 maximum: 0.02,
49 minimum: 0.001,
50 average: 0.001,
51 history: new CircularArray(DEFAULT_CIRCULAR_ARRAY_SIZE, 0.001)
52 })
53 updateMeasurementStatistics(
54 measurementStatistics,
55 { aggregate: true, average: true, median: false },
56 0.003
57 )
58 expect(measurementStatistics).toStrictEqual({
59 aggregate: 0.034,
60 maximum: 0.02,
61 minimum: 0.001,
62 average: 0.002,
63 history: new CircularArray(DEFAULT_CIRCULAR_ARRAY_SIZE, 0.001, 0.003)
64 })
65 updateMeasurementStatistics(
66 measurementStatistics,
67 { aggregate: true, average: false, median: true },
68 0.006
69 )
70 expect(measurementStatistics).toStrictEqual({
71 aggregate: 0.04,
72 maximum: 0.02,
73 minimum: 0.001,
74 median: 0.003,
75 history: new CircularArray(
76 DEFAULT_CIRCULAR_ARRAY_SIZE,
77 0.001,
78 0.003,
79 0.006
80 )
81 })
82 updateMeasurementStatistics(
83 measurementStatistics,
84 { aggregate: true, average: true, median: false },
85 0.01
86 )
87 expect(measurementStatistics).toStrictEqual({
88 aggregate: 0.05,
89 maximum: 0.02,
90 minimum: 0.001,
91 average: 0.005,
92 history: new CircularArray(
93 DEFAULT_CIRCULAR_ARRAY_SIZE,
94 0.001,
95 0.003,
96 0.006,
97 0.01
98 )
99 })
100 })
101
102 it('Verify createWorker() behavior', () => {
103 expect(
104 createWorker(
105 WorkerTypes.thread,
106 './tests/worker-files/thread/testWorker.mjs'
107 )
108 ).toBeInstanceOf(ThreadWorker)
109 expect(
110 createWorker(
111 WorkerTypes.cluster,
112 './tests/worker-files/cluster/testWorker.mjs'
113 )
114 ).toBeInstanceOf(ClusterWorker)
115 })
116 })