1 const { TaskFunctions } = require('./test-types.cjs')
3 const waitWorkerEvents = async (pool, workerEvent, numberOfEventsToWait) => {
4 return await new Promise(resolve => {
6 if (numberOfEventsToWait === 0) {
10 for (const workerNode of pool.workerNodes) {
11 workerNode.worker.on(workerEvent, () => {
13 if (events === numberOfEventsToWait) {
21 const waitPoolEvents = async (pool, poolEvent, numberOfEventsToWait) => {
22 return await new Promise(resolve => {
24 if (numberOfEventsToWait === 0) {
28 pool.emitter?.on(poolEvent, () => {
30 if (events === numberOfEventsToWait) {
37 const sleep = async ms => {
38 return await new Promise(resolve => setTimeout(resolve, ms))
41 const sleepTaskFunction = async (
47 return await new Promise((resolve, reject) => {
51 ? reject(new Error(rejectionMessage))
58 const jsonIntegerSerialization = n => {
59 for (let i = 0; i < n; i++) {
69 * @param {number} n - The number of fibonacci numbers to generate.
70 * @returns {number} - The nth fibonacci number.
72 const fibonacci = n => {
84 * @param {number} n - The number to calculate the factorial of.
85 * @returns {number} - The factorial of n.
87 const factorial = n => {
88 if (n === 0 || n === 1) {
92 for (let i = 1; i <= n; i++) {
99 const executeTaskFunction = data => {
100 switch (data.function) {
101 case TaskFunctions.jsonIntegerSerialization:
102 return jsonIntegerSerialization(data.n || 100)
103 case TaskFunctions.fibonacci:
104 return fibonacci(data.n || 100)
105 case TaskFunctions.factorial:
106 return factorial(data.n || 100)
108 throw new Error('Unknown worker function')
116 jsonIntegerSerialization,