|
|
@@ -0,0 +1,71 @@
|
|
|
+const ContentCacheManager = require('../../app/js/ContentCacheManager')
|
|
|
+const fs = require('fs')
|
|
|
+const crypto = require('crypto')
|
|
|
+const path = require('path')
|
|
|
+const os = require('os')
|
|
|
+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()
|
|
|
+ ContentCacheManager.update(dir, filePath, (x) => {
|
|
|
+ const t1 = process.hrtime.bigint()
|
|
|
+ const cold = Number(t1 - t0) / 1e6
|
|
|
+ ContentCacheManager.update(dir, filePath, (x) => {
|
|
|
+ const t2 = process.hrtime.bigint()
|
|
|
+ const warm = Number(t2 - t1) / 1e6
|
|
|
+ fs.rmdir(dir, { recursive: true }, (err) => {
|
|
|
+ if (err) {
|
|
|
+ return callback(err)
|
|
|
+ }
|
|
|
+ console.log(
|
|
|
+ filePath,
|
|
|
+ 'hashType',
|
|
|
+ hashType,
|
|
|
+ 'cold-start',
|
|
|
+ cold.toFixed(2),
|
|
|
+ 'ms',
|
|
|
+ 'warm-start',
|
|
|
+ warm.toFixed(2),
|
|
|
+ 'ms'
|
|
|
+ )
|
|
|
+ callback(null, [hashType, cold, warm])
|
|
|
+ })
|
|
|
+ })
|
|
|
+ })
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+var jobs = []
|
|
|
+files.forEach((file) => {
|
|
|
+ jobs.push((cb) => {
|
|
|
+ test('md5', file, cb)
|
|
|
+ })
|
|
|
+ jobs.push((cb) => {
|
|
|
+ test('sha1', file, cb)
|
|
|
+ })
|
|
|
+ jobs.push((cb) => {
|
|
|
+ test('hmac-sha1', file, cb)
|
|
|
+ })
|
|
|
+ jobs.push((cb) => {
|
|
|
+ test('sha256', file, cb)
|
|
|
+ })
|
|
|
+})
|
|
|
+
|
|
|
+async.series(jobs, () => {
|
|
|
+ console.log('DONE')
|
|
|
+})
|