Commit | Line | Data |
---|---|---|
7a6a0a96 | 1 | const fs = require('fs') |
d1a9aa41 JB |
2 | const { |
3 | WorkerFunctions, | |
4 | executeWorkerFunction | |
2f8c5b5c | 5 | // eslint-disable-next-line n/no-unpublished-require |
d1a9aa41 | 6 | } = require('../../benchmarks-utils') |
7a6a0a96 JB |
7 | |
8 | const TaskTypes = { | |
9 | CPU_INTENSIVE: 'CPU_INTENSIVE', | |
10 | IO_INTENSIVE: 'IO_INTENSIVE' | |
11 | } | |
12 | ||
9f7e7a99 | 13 | module.exports = function (data) { |
6c063733 | 14 | data = data || {} |
7a6a0a96 | 15 | data.taskType = data.taskType || TaskTypes.CPU_INTENSIVE |
6c063733 | 16 | data.taskSize = data.taskSize || 5000 |
7a6a0a96 | 17 | const benchmarksFilePath = '/tmp/poolifier-benchmarks' |
6c063733 | 18 | switch (data.taskType) { |
7a6a0a96 | 19 | case TaskTypes.CPU_INTENSIVE: |
6c063733 | 20 | // CPU intensive task |
d1a9aa41 JB |
21 | data.function = data.function || WorkerFunctions.jsonIntegerSerialization |
22 | executeWorkerFunction(data) | |
6c063733 | 23 | return { ok: 1 } |
7a6a0a96 JB |
24 | case TaskTypes.IO_INTENSIVE: |
25 | // IO intensive task | |
26 | for (let i = 0; i < data.taskSize; i++) { | |
27 | fs.writeFileSync(benchmarksFilePath, i.toString(), 'utf8') | |
28 | fs.readFileSync(benchmarksFilePath, 'utf8') | |
29 | fs.unlinkSync(benchmarksFilePath) | |
30 | } | |
31 | return { ok: 1 } | |
6c063733 JB |
32 | default: |
33 | throw new Error(`Unknown task type: ${data.taskType}`) | |
9f7e7a99 | 34 | } |
35 | } |