2021-05-11 10:53:01 -04:00
|
|
|
const ContentCacheManager = require('../../app/js/ContentCacheManager')
|
2024-11-08 05:21:56 -05:00
|
|
|
const fs = require('node:fs')
|
|
|
|
const crypto = require('node:crypto')
|
|
|
|
const path = require('node:path')
|
|
|
|
const os = require('node:os')
|
2021-05-11 10:53:01 -04:00
|
|
|
const async = require('async')
|
|
|
|
const _createHash = crypto.createHash
|
|
|
|
|
|
|
|
const files = process.argv.slice(2)
|
|
|
|
|
|
|
|
function test(hashType, filePath, callback) {
|
|
|
|
// override the default hash in ContentCacheManager
|
|
|
|
crypto.createHash = function (hash) {
|
|
|
|
if (hashType === 'hmac-sha1') {
|
|
|
|
return crypto.createHmac('sha1', 'a secret')
|
|
|
|
}
|
|
|
|
hash = hashType
|
|
|
|
return _createHash(hash)
|
|
|
|
}
|
|
|
|
fs.mkdtemp(path.join(os.tmpdir(), 'pdfcache'), (err, dir) => {
|
|
|
|
if (err) {
|
|
|
|
return callback(err)
|
|
|
|
}
|
|
|
|
const t0 = process.hrtime.bigint()
|
2021-07-13 07:04:48 -04:00
|
|
|
ContentCacheManager.update(dir, filePath, x => {
|
2021-05-11 10:53:01 -04:00
|
|
|
const t1 = process.hrtime.bigint()
|
|
|
|
const cold = Number(t1 - t0) / 1e6
|
2021-07-13 07:04:48 -04:00
|
|
|
ContentCacheManager.update(dir, filePath, x => {
|
2021-05-11 10:53:01 -04:00
|
|
|
const t2 = process.hrtime.bigint()
|
|
|
|
const warm = Number(t2 - t1) / 1e6
|
2022-04-26 09:29:42 -04:00
|
|
|
fs.rm(dir, { recursive: true, force: true }, err => {
|
2021-05-11 10:53:01 -04:00
|
|
|
if (err) {
|
|
|
|
return callback(err)
|
|
|
|
}
|
|
|
|
console.log(
|
2021-05-17 07:00:32 -04:00
|
|
|
'uvthreads',
|
|
|
|
process.env.UV_THREADPOOL_SIZE,
|
2021-05-11 10:53:01 -04:00
|
|
|
filePath,
|
|
|
|
'hashType',
|
|
|
|
hashType,
|
|
|
|
'cold-start',
|
|
|
|
cold.toFixed(2),
|
|
|
|
'ms',
|
|
|
|
'warm-start',
|
|
|
|
warm.toFixed(2),
|
|
|
|
'ms'
|
|
|
|
)
|
|
|
|
callback(null, [hashType, cold, warm])
|
|
|
|
})
|
|
|
|
})
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
2021-07-13 07:04:48 -04:00
|
|
|
const jobs = []
|
|
|
|
files.forEach(file => {
|
|
|
|
jobs.push(cb => {
|
2021-05-11 10:53:01 -04:00
|
|
|
test('md5', file, cb)
|
|
|
|
})
|
2021-07-13 07:04:48 -04:00
|
|
|
jobs.push(cb => {
|
2021-05-11 10:53:01 -04:00
|
|
|
test('sha1', file, cb)
|
|
|
|
})
|
2021-07-13 07:04:48 -04:00
|
|
|
jobs.push(cb => {
|
2021-05-11 10:53:01 -04:00
|
|
|
test('hmac-sha1', file, cb)
|
|
|
|
})
|
2021-07-13 07:04:48 -04:00
|
|
|
jobs.push(cb => {
|
2021-05-11 10:53:01 -04:00
|
|
|
test('sha256', file, cb)
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
2021-05-17 07:00:57 -04:00
|
|
|
async.timesSeries(10, (n, cb) => {
|
|
|
|
async.series(jobs, cb)
|
|
|
|
})
|