e2ed
Version:
E2E testing framework over Playwright
59 lines (58 loc) • 2.6 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.startResourceUsageReading = void 0;
const node_os_1 = require("node:os");
const asserts_1 = require("./asserts");
const generalLog_1 = require("./generalLog");
const uiMode_1 = require("./uiMode");
const Mb = 1024 * 1024;
const availableCpuCount = (0, node_os_1.availableParallelism)();
let previousCores = (0, node_os_1.cpus)();
let previousCpuUsage = process.cpuUsage();
let previousTimeInMs = Date.now();
let timeoutObject;
const logResourceUsage = () => {
const cores = (0, node_os_1.cpus)();
const cpuUsage = process.cpuUsage();
const timeInMs = Date.now();
const intervalInMs = timeInMs - previousTimeInMs;
// eslint-disable-next-line @typescript-eslint/no-magic-numbers
const divisor = 10 * availableCpuCount * intervalInMs;
const cpu = ((cpuUsage.user + cpuUsage.system - previousCpuUsage.user - previousCpuUsage.system) /
divisor).toFixed(2);
const freeMemoryInMb = ((0, node_os_1.freemem)() / Mb).toFixed();
const memory = (process.memoryUsage.rss() / Mb).toFixed();
(0, asserts_1.assertValueIsTrue)(cores.length === previousCores.length, 'the number of processor cores has not changed');
const coresCpu = [];
for (let index = 0; index < cores.length; index += 1) {
const core = cores[index];
const previousCore = previousCores[index];
(0, asserts_1.assertValueIsDefined)(core, 'core is defined');
(0, asserts_1.assertValueIsDefined)(previousCore, 'previousCore is defined');
const coreCpu = ((100 * // eslint-disable-line @typescript-eslint/no-magic-numbers
(core.times.user + core.times.sys - previousCore.times.user - previousCore.times.sys)) /
intervalInMs).toFixed();
coresCpu.push(coreCpu);
}
previousCores = cores;
previousCpuUsage = cpuUsage;
previousTimeInMs = timeInMs;
(0, generalLog_1.generalLog)(`Usage: cpu=${cpu}%, memory=${memory}Mb (${freeMemoryInMb}Mb free)`, {
'cores(%)': coresCpu.join(' '),
});
};
/**
* Starts reading and logging resource usage with specified interval (once).
* @internal
*/
const startResourceUsageReading = (resourceUsageReadingInternal) => {
(0, asserts_1.assertValueIsUndefined)(timeoutObject, 'timeoutObject in not defined', {
resourceUsageReadingInternal,
});
if (uiMode_1.isUiMode) {
return;
}
timeoutObject = setInterval(logResourceUsage, resourceUsageReadingInternal);
timeoutObject.unref();
};
exports.startResourceUsageReading = startResourceUsageReading;