UNPKG

1.89 kBJavaScriptView Raw
1"use strict";
2
3const os = require("os");
4const childProcess = require("child_process");
5const prettyBytes = require("pretty-bytes");
6const promisify = require("../lib/utils/promisify");
7const jetpack = require("..");
8
9const testDirPath = () => {
10 return `${os.tmpdir()}/jetpack-benchmark`;
11};
12
13const prepareJetpackTestDir = () => {
14 return jetpack.dir(testDirPath(), { empty: true });
15};
16
17const prepareFiles = (jetpackDir, creationConfig) => {
18 return new Promise((resolve, reject) => {
19 let count = 0;
20 const content = new Buffer(creationConfig.size);
21
22 const makeOneFile = () => {
23 jetpackDir.fileAsync(`${count}.txt`, { content }).then(() => {
24 count += 1;
25 if (count < creationConfig.files) {
26 makeOneFile();
27 } else {
28 resolve();
29 }
30 }, reject);
31 };
32
33 console.log(
34 `Preparing ${creationConfig.files} test files (${prettyBytes(
35 creationConfig.size
36 )} each)...`
37 );
38 makeOneFile();
39 });
40};
41
42const startTimer = startMessage => {
43 const start = Date.now();
44 process.stdout.write(`${startMessage} ... `);
45
46 const stop = () => {
47 const time = Date.now() - start;
48 console.log(`${time}ms`);
49 return time;
50 };
51
52 return stop;
53};
54
55const waitAWhile = () => {
56 return new Promise(resolve => {
57 console.log("Waiting 5s to allow hardware buffers be emptied...");
58 setTimeout(resolve, 5000);
59 });
60};
61
62const showDifferenceInfo = (jetpackTime, nativeTime) => {
63 const perc = Math.round((jetpackTime / nativeTime) * 100) - 100;
64 console.log(`Jetpack is ${perc}% slower than native`);
65};
66
67const cleanAfterTest = () => {
68 console.log("Cleaning up after test...");
69 return jetpack.removeAsync(testDirPath());
70};
71
72module.exports = {
73 prepareJetpackTestDir,
74 prepareFiles,
75 startTimer,
76 waitAWhile,
77 exec: promisify(childProcess.exec),
78 showDifferenceInfo,
79 cleanAfterTest
80};