refactor: remove home made random integer generator
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Mon, 1 Jan 2024 12:47:42 +0000 (13:47 +0100)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Mon, 1 Jan 2024 12:47:42 +0000 (13:47 +0100)
Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
benchmarks/benchmarks-utils.cjs
benchmarks/worker-selection/least.mjs
tests/pools/selection-strategies/weighted-round-robin-worker-choice-strategy.test.mjs
tests/test-utils.cjs

index e94910984831770041715c33b301f6a68c4ec862..4dd1227b00b2362b393b47113e70a154aad6fe87 100644 (file)
@@ -186,18 +186,6 @@ const LIST_FORMATTER = new Intl.ListFormat('en-US', {
   type: 'conjunction'
 })
 
-const generateRandomInteger = (max = Number.MAX_SAFE_INTEGER, min = 0) => {
-  if (max < min || max < 0 || min < 0) {
-    throw new RangeError('Invalid interval')
-  }
-  max = Math.floor(max)
-  if (min != null && min !== 0) {
-    min = Math.ceil(min)
-    return Math.floor(Math.random() * (max - min + 1)) + min
-  }
-  return Math.floor(Math.random() * (max + 1))
-}
-
 const jsonIntegerSerialization = n => {
   for (let i = 0; i < n; i++) {
     const o = {
@@ -268,6 +256,5 @@ const executeTaskFunction = data => {
 module.exports = {
   LIST_FORMATTER,
   executeTaskFunction,
-  generateRandomInteger,
   runPoolifierPoolBenchmark
 }
index 6dd91df0e1e0e436c4921748c0e622c6c020147d..f67bebf7464f5ff7cadc394d38279bfc76e804bc 100644 (file)
@@ -1,5 +1,6 @@
+import { randomInt } from 'node:crypto'
 import Benchmark from 'benchmark'
-import { LIST_FORMATTER, generateRandomInteger } from '../benchmarks-utils.cjs'
+import { LIST_FORMATTER } from '../benchmarks-utils.cjs'
 
 function generateRandomTasksMap (
   numberOfWorkers,
@@ -7,7 +8,7 @@ function generateRandomTasksMap (
 ) {
   const tasksArray = []
   for (let i = 0; i < numberOfWorkers; i++) {
-    const task = [i, generateRandomInteger(maxNumberOfTasksPerWorker)]
+    const task = [i, randomInt(maxNumberOfTasksPerWorker)]
     tasksArray.push(task)
   }
   return new Map(tasksArray)
@@ -50,7 +51,7 @@ const defaultPivotIndexSelect = (leftIndex, rightIndex) => {
 }
 
 const randomPivotIndexSelect = (leftIndex, rightIndex) => {
-  return generateRandomInteger(rightIndex, leftIndex)
+  return randomInt(leftIndex, rightIndex)
 }
 
 function swap (array, index1, index2) {
index 0e756886f35404338f1dff2e7d2b2f7c97e58654..95f1397e6aafbd15ef66a6327fb3c0ab0ef9c75d 100644 (file)
@@ -1,7 +1,7 @@
+import { randomInt } from 'node:crypto'
 import { expect } from 'expect'
 import { FixedThreadPool } from '../../../lib/index.cjs'
 import { WeightedRoundRobinWorkerChoiceStrategy } from '../../../lib/pools/selection-strategies/weighted-round-robin-worker-choice-strategy.cjs'
-import { generateRandomInteger } from '../../test-utils.cjs'
 
 describe('Weighted round robin strategy worker choice strategy test suite', () => {
   // const min = 1
@@ -21,11 +21,8 @@ describe('Weighted round robin strategy worker choice strategy test suite', () =
 
   it('Verify that reset() resets internals', () => {
     const strategy = new WeightedRoundRobinWorkerChoiceStrategy(pool)
-    strategy.currentWorkerId = generateRandomInteger(Number.MAX_SAFE_INTEGER, 1)
-    strategy.workerVirtualTaskRunTime = generateRandomInteger(
-      Number.MAX_SAFE_INTEGER,
-      1
-    )
+    strategy.currentWorkerId = randomInt(281474976710655)
+    strategy.workerVirtualTaskRunTime = randomInt(281474976710655)
     expect(strategy.reset()).toBe(true)
     expect(strategy.nextWorkerNodeKey).toBe(0)
     expect(strategy.previousWorkerNodeKey).toBe(0)
index 6dba586641d3b1906caee80c96f38e364b3e9497..735d406af1a91d7bb02625bc58bebd56a1c94a6a 100644 (file)
@@ -55,18 +55,6 @@ const sleepTaskFunction = async (
   })
 }
 
-const generateRandomInteger = (max = Number.MAX_SAFE_INTEGER, min = 0) => {
-  if (max < min || max < 0 || min < 0) {
-    throw new RangeError('Invalid interval')
-  }
-  max = Math.floor(max)
-  if (min != null && min !== 0) {
-    min = Math.ceil(min)
-    return Math.floor(Math.random() * (max - min + 1)) + min
-  }
-  return Math.floor(Math.random() * (max + 1))
-}
-
 const jsonIntegerSerialization = n => {
   for (let i = 0; i < n; i++) {
     const o = {
@@ -116,7 +104,6 @@ module.exports = {
   executeTaskFunction,
   factorial,
   fibonacci,
-  generateRandomInteger,
   jsonIntegerSerialization,
   sleep,
   sleepTaskFunction,