X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=benchmarks%2Fbenchmarks-utils.js;h=a0a42b95d06642cbb8e7aeb282c06e7f20720b16;hb=ef58d1c56c04f43dc88a76ef35d0127fe2bab27d;hp=678b41d7634e56254c3cfb660738aea2cf8ee20d;hpb=49d60f11b30f7cdc9aca21379272a9ae89abe927;p=poolifier.git diff --git a/benchmarks/benchmarks-utils.js b/benchmarks/benchmarks-utils.js index 678b41d7..a0a42b95 100644 --- a/benchmarks/benchmarks-utils.js +++ b/benchmarks/benchmarks-utils.js @@ -1,6 +1,12 @@ -const crypto = require('node:crypto') -const assert = require('node:assert') -const fs = require('node:fs') +const { randomInt } = require('node:crypto') +const { strictEqual } = require('node:assert') +const { + existsSync, + mkdirSync, + readFileSync, + rmSync, + writeFileSync +} = require('node:fs') const Benchmark = require('benchmark') const { DynamicClusterPool, @@ -81,9 +87,9 @@ const runPoolifierPoolBenchmark = async ( poolSize, { taskExecutions, workerData } ) => { - const pool = buildPoolifierPool(workerType, poolType, poolSize) - const suite = new Benchmark.Suite(name) return await new Promise((resolve, reject) => { + const pool = buildPoolifierPool(workerType, poolType, poolSize) + const suite = new Benchmark.Suite(name) try { for (const workerChoiceStrategy of Object.values( WorkerChoiceStrategies @@ -103,15 +109,12 @@ const runPoolifierPoolBenchmark = async ( measurement }) pool.enableTasksQueue(enableTasksQueue) - assert.strictEqual( + strictEqual( pool.opts.workerChoiceStrategy, workerChoiceStrategy ) - assert.strictEqual( - pool.opts.enableTasksQueue, - enableTasksQueue - ) - assert.strictEqual( + strictEqual(pool.opts.enableTasksQueue, enableTasksQueue) + strictEqual( pool.opts.workerChoiceStrategyOptions.measurement, measurement ) @@ -130,11 +133,11 @@ const runPoolifierPoolBenchmark = async ( async () => { pool.setWorkerChoiceStrategy(workerChoiceStrategy) pool.enableTasksQueue(enableTasksQueue) - assert.strictEqual( + strictEqual( pool.opts.workerChoiceStrategy, workerChoiceStrategy ) - assert.strictEqual(pool.opts.enableTasksQueue, enableTasksQueue) + strictEqual(pool.opts.enableTasksQueue, enableTasksQueue) await runPoolifierPool(pool, { taskExecutions, workerData @@ -148,13 +151,23 @@ const runPoolifierPoolBenchmark = async ( .on('cycle', event => { console.info(event.target.toString()) }) - .on('complete', async function () { + .on('complete', function () { console.info( 'Fastest is ' + LIST_FORMATTER.format(this.filter('fastest').map('name')) ) - await pool.destroy() - resolve() + const destroyTimeout = setTimeout(() => { + console.error('Pool destroy timeout reached (30s)') + resolve() + }, 30000) + pool + .destroy() + .then(resolve) + .catch(reject) + .finally(() => { + clearTimeout(destroyTimeout) + }) + .catch(() => {}) }) .run({ async: true }) } catch (error) { @@ -219,23 +232,21 @@ const factorial = n => { const readWriteFiles = ( n, - baseDirectory = `/tmp/poolifier-benchmarks/${crypto.randomInt( - 281474976710655 - )}` + baseDirectory = `/tmp/poolifier-benchmarks/${randomInt(281474976710655)}` ) => { - if (fs.existsSync(baseDirectory) === true) { - fs.rmSync(baseDirectory, { recursive: true }) + if (existsSync(baseDirectory) === true) { + rmSync(baseDirectory, { recursive: true }) } - fs.mkdirSync(baseDirectory, { recursive: true }) + mkdirSync(baseDirectory, { recursive: true }) for (let i = 0; i < n; i++) { const filePath = `${baseDirectory}/${i}` - fs.writeFileSync(filePath, i.toString(), { + writeFileSync(filePath, i.toString(), { encoding: 'utf8', flag: 'a' }) - fs.readFileSync(filePath, 'utf8') + readFileSync(filePath, 'utf8') } - fs.rmSync(baseDirectory, { recursive: true }) + rmSync(baseDirectory, { recursive: true }) return { ok: 1 } }