@oaklean/profiler-jest-environment
Version:
A jest environment to collect energy measurements on source code level during test execution.
91 lines • 9.1 kB
JavaScript
;
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVhcmRvd24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0ZWFyZG93bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdUNBQXdCO0FBRXhCLCtCQUEyQjtBQUMzQiwwREFRK0I7QUFFL0I7O1FBQ0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUN0QyxPQUFNO1FBQ1AsQ0FBQztRQUNELE1BQU0sV0FBVyxHQUFHLElBQUksaUNBQWlCLEVBQUUsQ0FBQTtRQUMzQyxXQUFXLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUE7UUFDckMsNEJBQVksQ0FBQyxHQUFHLENBQUMsa0VBQWtFLENBQUMsQ0FBQTtRQUVwRixXQUFXLENBQUMsS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUE7UUFDbkQsTUFBTSxjQUFjLEdBQUcsOEJBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtRQUNuRCxXQUFXLENBQUMsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLENBQUE7UUFDbEQsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUN0RCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUUxQyxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUN0QyxNQUFNLFNBQVMsR0FBRyxJQUFBLFdBQUksRUFBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQTtZQUMxQyxXQUFXLENBQUMsS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUE7WUFDakQsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQWdCLEVBQUUsRUFBRTtnQkFDbEQsTUFBTSxN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