refactor: partially revert ESM conversion in benchmarking code
[poolifier.git] / benchmarks / versus-external-pools / functions / function-to-bench.js
index 89e9e2acae8c9d4fc09125fdde58090a50a1f4f7..74a07d1ef1ac4f410e8fada4679f1ed64d3bcac1 100644 (file)
@@ -1,11 +1,11 @@
 /**
  * The worker function to execute during pools benchmarks.
  * NOTE: This function requires to be self-contained, thread-safe and re-entrant.
- *
  * @param {*} data The worker data.
  * @returns {*} The result.
  */
-function functionToBench (data) {
+module.exports = function functionToBench (data) {
+  const crypto = require('crypto')
   const fs = require('fs')
   const TaskTypes = {
     CPU_INTENSIVE: 'CPU_INTENSIVE',
@@ -14,7 +14,9 @@ function functionToBench (data) {
   data = data || {}
   data.taskType = data.taskType || TaskTypes.CPU_INTENSIVE
   data.taskSize = data.taskSize || 5000
-  const baseDirectory = '/tmp/poolifier-benchmarks'
+  const baseDirectory = `/tmp/poolifier-benchmarks/${crypto.randomInt(
+    281474976710655
+  )}`
   switch (data.taskType) {
     case TaskTypes.CPU_INTENSIVE:
       // CPU intensive task
@@ -27,9 +29,10 @@ function functionToBench (data) {
       return { ok: 1 }
     case TaskTypes.IO_INTENSIVE:
       // IO intensive task
-      if (fs.existsSync(baseDirectory) === false) {
-        fs.mkdirSync(baseDirectory, { recursive: true })
+      if (fs.existsSync(baseDirectory) === true) {
+        fs.rmSync(baseDirectory, { recursive: true })
       }
+      fs.mkdirSync(baseDirectory, { recursive: true })
       for (let i = 0; i < data.taskSize; i++) {
         const filePath = `${baseDirectory}/${i}`
         fs.writeFileSync(filePath, i.toString(), {
@@ -38,10 +41,9 @@ function functionToBench (data) {
         })
         fs.readFileSync(filePath, 'utf8')
       }
+      fs.rmSync(baseDirectory, { recursive: true })
       return { ok: 1 }
     default:
       throw new Error(`Unknown task type: ${data.taskType}`)
   }
 }
-
-module.exports = functionToBench