UNPKG

e2ed

Version:

E2E testing framework over Playwright

59 lines (58 loc) 2.6 kB
"use strict"; 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;