UNPKG

@oaklean/profiler-jest-environment

Version:

A jest environment to collect energy measurements on source code level during test execution.

91 lines 9.1 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const fs = __importStar(require("fs")); const glob_1 = require("glob"); const profiler_core_1 = require("@oaklean/profiler-core"); function default_1() { return __awaiter(this, void 0, void 0, function* () { if (!process.env.ENABLE_MEASUREMENTS) { return; } const performance = new profiler_core_1.PerformanceHelper(); performance.start('jestEnv.teardown'); profiler_core_1.LoggerHelper.log('Profiler: Combine Measurements and generate an aggregated report'); performance.start('jestEnv.teardown.resolveConfig'); const profilerConfig = profiler_core_1.ProfilerConfig.autoResolve(); performance.stop('jestEnv.teardown.resolveConfig'); const outDir = profilerConfig.getOutDir().join('jest'); const globDir = outDir.join('**', '*.oak'); if (fs.existsSync(outDir.toString())) { const filePaths = (0, glob_1.sync)(globDir.toString()); performance.start('jestEnv.teardown.loadReports'); const reports = filePaths.map((filePath) => { const report = profiler_core_1.ProjectReport.loadFromFile(new profiler_core_1.UnifiedPath(filePath), 'bin'); if (!report) { throw new Error(`ProjectReport could not be found: ${filePath}`); } return report; }); performance.stop('jestEnv.teardown.loadReports'); performance.start('jestEnv.teardown.resolveEngineModule'); const engineModule = reports.length > 0 ? reports[0].globalIndex.engineModule : profiler_core_1.NodeModule.currentEngineModule(); performance.stop('jestEnv.teardown.resolveEngineModule'); const globalIndex = new profiler_core_1.GlobalIndex(engineModule); const moduleIndex = globalIndex.getModuleIndex('upsert'); performance.start('jestEnv.teardown.mergeReports'); const accumulatedProjectReport = profiler_core_1.ProjectReport.merge(moduleIndex, ...reports); performance.stop('jestEnv.teardown.mergeReports'); const accumulatedProjectReportPath = profilerConfig.getOutDir().join('jest', `accumulated-${accumulatedProjectReport.executionDetails.timestamp}.oak`); performance.start('jestEnv.teardown.exportReport'); accumulatedProjectReport.storeToFile(accumulatedProjectReportPath, 'bin', profilerConfig); performance.stop('jestEnv.teardown.exportReport'); const commitHash = accumulatedProjectReport.executionDetails.commitHash; const accumulatedProjectReportHistoryPath = profilerConfig.getOutHistoryDir().join(`${accumulatedProjectReport.projectMetaData.projectID}`, accumulatedProjectReport.executionDetails.timestamp + (commitHash ? '-' + commitHash : '') + '.oak'); performance.start('jestEnv.teardown.exportHistoryReport'); accumulatedProjectReport.storeToFile(accumulatedProjectReportHistoryPath, 'bin', profilerConfig); performance.stop('jestEnv.teardown.exportHistoryReport'); if (yield accumulatedProjectReport.shouldBeStoredInRegistry()) { performance.start('jestEnv.teardown.uploadToRegistry'); yield accumulatedProjectReport.uploadToRegistry(); performance.stop('jestEnv.teardown.uploadToRegistry'); } performance.stop('jestEnv.teardown'); performance.printReport('jestEnv.teardown'); performance.exportAndSum(outDir.join('performance.json')); } }); } exports.default = default_1; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVhcmRvd24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0ZWFyZG93bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdUNBQXdCO0FBRXhCLCtCQUEyQjtBQUMzQiwwREFRK0I7QUFFL0I7O1FBQ0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUN0QyxPQUFNO1FBQ1AsQ0FBQztRQUNELE1BQU0sV0FBVyxHQUFHLElBQUksaUNBQWlCLEVBQUUsQ0FBQTtRQUMzQyxXQUFXLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUE7UUFDckMsNEJBQVksQ0FBQyxHQUFHLENBQUMsa0VBQWtFLENBQUMsQ0FBQTtRQUVwRixXQUFXLENBQUMsS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUE7UUFDbkQsTUFBTSxjQUFjLEdBQUcsOEJBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtRQUNuRCxXQUFXLENBQUMsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLENBQUE7UUFDbEQsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUN0RCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUUxQyxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUN0QyxNQUFNLFNBQVMsR0FBRyxJQUFBLFdBQUksRUFBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQTtZQUMxQyxXQUFXLENBQUMsS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUE7WUFDakQsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQWdCLEVBQUUsRUFBRTtnQkFDbEQsTUFBTSxNQUFNLEdBQUcsNkJBQWEsQ0FBQyxZQUFZLENBQUMsSUFBSSwyQkFBVyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFBO2dCQUMzRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsUUFBUSxFQUFFLENBQUMsQ0FBQTtnQkFDakUsQ0FBQztnQkFDRCxPQUFPLE1BQU0sQ0FBQTtZQUNkLENBQUMsQ0FBQyxDQUFBO1lBQ0YsV0FBVyxDQUFDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxDQUFBO1lBRWhELFdBQVcsQ0FBQyxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQTtZQUN6RCxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLDBCQUFVLENBQUMsbUJBQW1CLEVBQUUsQ0FBQTtZQUNoSCxXQUFXLENBQUMsSUFBSSxDQUFDLHNDQUFzQyxDQUFDLENBQUE7WUFFeEQsTUFBTSxXQUFXLEdBQUcsSUFBSSwyQkFBVyxDQUFDLFlBQVksQ0FBQyxDQUFBO1lBQ2pELE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUE7WUFFeEQsV0FBVyxDQUFDLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFBO1lBQ2xELE1BQU0sd0JBQXdCLEdBQUcsNkJBQWEsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUE7WUFDN0UsV0FBVyxDQUFDLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxDQUFBO1lBRWpELE1BQU0sNEJBQTRCLEdBQUcsY0FBYyxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FDbkUsTUFBTSxFQUNOLGVBQWUsd0JBQXdCLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxNQUFNLENBQ3hFLENBQUE7WUFFRCxXQUFXLENBQUMsS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUE7WUFDbEQsd0JBQXdCLENBQUMsV0FBVyxDQUFDLDRCQUE0QixFQUFFLEtBQUssRUFBRSxjQUFjLENBQUMsQ0FBQTtZQUN6RixXQUFXLENBQUMsSUFBSSxDQUFDLCtCQUErQixDQUFDLENBQUE7WUFFakQsTUFBTSxVQUFVLEdBQUcsd0JBQXdCLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFBO1lBQ3ZFLE1BQU0sbUNBQW1DLEdBQUcsY0FBYyxDQUFDLGdCQUFnQixFQUFFLENBQUMsSUFBSSxDQUNqRixHQUFHLHdCQUF3QixDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsRUFDdkQsd0JBQXdCLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQ25HLENBQUE7WUFFRCxXQUFXLENBQUMsS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUE7WUFDekQsd0JBQXdCLENBQUMsV0FBVyxDQUFDLG1DQUFtQyxFQUFFLEtBQUssRUFBRSxjQUFjLENBQUMsQ0FBQTtZQUNoRyxXQUFXLENBQUMsSUFBSSxDQUFDLHNDQUFzQyxDQUFDLENBQUE7WUFFeEQsSUFBSSxNQUFNLHdCQUF3QixDQUFDLHdCQUF3QixFQUFFLEVBQUUsQ0FBQztnQkFDL0QsV0FBVyxDQUFDLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFBO2dCQUN0RCxNQUFNLHdCQUF3QixDQUFDLGdCQUFnQixFQUFFLENBQUE7Z0JBQ2pELFdBQVcsQ0FBQyxJQUFJLENBQUMsbUNBQW1DLENBQUMsQ0FBQTtZQUN0RCxDQUFDO1lBQ0QsV0FBVyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO1lBQ3BDLFdBQVcsQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsQ0FBQTtZQUMzQyxXQUFXLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFBO1FBQzFELENBQUM7SUFDRixDQUFDO0NBQUE7QUFqRUQsNEJBaUVDIn0=