/
run_session.js
55 lines (48 loc) · 1.52 KB
/
run_session.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
const fs = require('fs');
const perf = require('@cliqz/webextension-emulator');
const cliqzApi = require('./cliqz-api');
const sessionFile = process.argv[2];
const Emulator = perf.default;
const timeMultiplier = 10;
const emulator = new Emulator('../build/', {
injectWebextenionPolyfill: true,
quiet: true,
chromeStoragePath: './data/storage',
indexedDBPath: './data/idb',
timeMultiplier,
});
Object.keys(perf.experimentalAPIs).forEach((api) => {
emulator.addChromeApi(api, perf.experimentalAPIs[api]);
});
emulator.addChromeApi('cliqz', cliqzApi);
emulator.createSandbox();
emulator.mock.createTab({
id: 3,
active: true,
title: 'Cliqz',
url: 'https://cliqz.com',
});
global.gc();
emulator._probe('memory.heap', process.memoryUsage().heapUsed);
process.on('unhandledRejection', (e) => {
emulator._probe('errors.promiserejection', e.message + '\n' + e.stack);
});
emulator.startExtension();
setTimeout(async () => {
global.gc();
emulator._probe('memory.heap', process.memoryUsage().heapUsed);
await emulator.emulateSession(sessionFile, new Set(['omnibox2', 'browserAction2']));
await new Promise((resolve) => setTimeout(resolve, 10000));
global.gc();
emulator._probe('memory.heap', process.memoryUsage().heapUsed);
emulator.stopExtension();
emulator.probeStorage();
console.log(JSON.stringify({
idb: perf.measureIdbSize(emulator),
...emulator.getProbeSummary()
}));
fs.appendFileSync('./diagnostics.jl', JSON.stringify(emulator.probes))
setTimeout(() => {
process.exit();
}, 1000);
}, 5000)