@angular/benchpress
Version:
Benchpress - a framework for e2e performance tests
61 lines • 7.48 kB
JavaScript
/**
* @license
* Copyright Google LLC All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
var JsonFileReporter_1;
import { __decorate, __metadata, __param } from "tslib";
import { Inject, Injectable, InjectionToken } from '@angular/core';
import { Options } from '../common_options';
import { Reporter } from '../reporter';
import { SampleDescription } from '../sample_description';
import { formatStats, sortedProps } from './util';
/**
* A reporter that writes results into a json file.
*/
let JsonFileReporter = JsonFileReporter_1 = class JsonFileReporter extends Reporter {
constructor(_description, _path, _writeFile, _now) {
super();
this._description = _description;
this._path = _path;
this._writeFile = _writeFile;
this._now = _now;
}
reportMeasureValues(measureValues) {
return Promise.resolve(null);
}
reportSample(completeSample, validSample) {
const stats = {};
sortedProps(this._description.metrics).forEach((metricName) => {
stats[metricName] = formatStats(validSample, metricName);
});
const content = JSON.stringify({
'description': this._description,
'stats': stats,
'completeSample': completeSample,
'validSample': validSample,
}, null, 2);
const filePath = `${this._path}/${this._description.id}_${this._now().getTime()}.json`;
return this._writeFile(filePath, content);
}
};
JsonFileReporter.PATH = new InjectionToken('JsonFileReporter.path');
JsonFileReporter.PROVIDERS = [
{
provide: JsonFileReporter_1,
deps: [SampleDescription, JsonFileReporter_1.PATH, Options.WRITE_FILE, Options.NOW]
},
{ provide: JsonFileReporter_1.PATH, useValue: '.' }
];
JsonFileReporter = JsonFileReporter_1 = __decorate([
Injectable(),
__param(1, Inject(JsonFileReporter_1.PATH)),
__param(2, Inject(Options.WRITE_FILE)),
__param(3, Inject(Options.NOW)),
__metadata("design:paramtypes", [SampleDescription, String, Function,
Function])
], JsonFileReporter);
export { JsonFileReporter };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbl9maWxlX3JlcG9ydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYmVuY2hwcmVzcy9zcmMvcmVwb3J0ZXIvanNvbl9maWxlX3JlcG9ydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7O0FBRUgsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRWpFLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUUxQyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ3JDLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBRXhELE9BQU8sRUFBQyxXQUFXLEVBQUUsV0FBVyxFQUFDLE1BQU0sUUFBUSxDQUFDO0FBR2hEOztHQUVHO0FBRUgsSUFBYSxnQkFBZ0Isd0JBQTdCLE1BQWEsZ0JBQWlCLFNBQVEsUUFBUTtJQVU1QyxZQUNZLFlBQStCLEVBQXlDLEtBQWEsRUFDekQsVUFBb0IsRUFDM0IsSUFBYztRQUM3QyxLQUFLLEVBQUUsQ0FBQztRQUhFLGlCQUFZLEdBQVosWUFBWSxDQUFtQjtRQUF5QyxVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ3pELGVBQVUsR0FBVixVQUFVLENBQVU7UUFDM0IsU0FBSSxHQUFKLElBQUksQ0FBVTtJQUUvQyxDQUFDO0lBRVEsbUJBQW1CLENBQUMsYUFBNEI7UUFDdkQsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFUSxZQUFZLENBQUMsY0FBK0IsRUFBRSxXQUE0QjtRQUVqRixNQUFNLEtBQUssR0FBNEIsRUFBRSxDQUFDO1FBQzFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQzVELEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxXQUFXLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzNELENBQUMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FDMUI7WUFDRSxhQUFhLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDaEMsT0FBTyxFQUFFLEtBQUs7WUFDZCxnQkFBZ0IsRUFBRSxjQUFjO1lBQ2hDLGFBQWEsRUFBRSxXQUFXO1NBQzNCLEVBQ0QsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2IsTUFBTSxRQUFRLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDO1FBQ3ZGLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDNUMsQ0FBQztDQUNGLENBQUE7QUFyQ1EscUJBQUksR0FBRyxJQUFJLGNBQWMsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0FBQ25ELDBCQUFTLEdBQUc7SUFDakI7UUFDRSxPQUFPLEVBQUUsa0JBQWdCO1FBQ3pCLElBQUksRUFBRSxDQUFDLGlCQUFpQixFQUFFLGtCQUFnQixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUM7S0FDbEY7SUFDRCxFQUFDLE9BQU8sRUFBRSxrQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBQztDQUNoRCxDQUFDO0FBUlMsZ0JBQWdCO0lBRDVCLFVBQVUsRUFBRTtJQVltQyxXQUFBLE1BQU0sQ0FBQyxrQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUN0RSxXQUFBLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDMUIsV0FBQSxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFBO3FDQUZFLGlCQUFpQixVQUNTLFFBQVE7UUFDckIsUUFBUTtHQWJwQyxnQkFBZ0IsQ0FzQzVCO1NBdENZLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge09wdGlvbnN9IGZyb20gJy4uL2NvbW1vbl9vcHRpb25zJztcbmltcG9ydCB7TWVhc3VyZVZhbHVlc30gZnJvbSAnLi4vbWVhc3VyZV92YWx1ZXMnO1xuaW1wb3J0IHtSZXBvcnRlcn0gZnJvbSAnLi4vcmVwb3J0ZXInO1xuaW1wb3J0IHtTYW1wbGVEZXNjcmlwdGlvbn0gZnJvbSAnLi4vc2FtcGxlX2Rlc2NyaXB0aW9uJztcblxuaW1wb3J0IHtmb3JtYXRTdGF0cywgc29ydGVkUHJvcHN9IGZyb20gJy4vdXRpbCc7XG5cblxuLyoqXG4gKiBBIHJlcG9ydGVyIHRoYXQgd3JpdGVzIHJlc3VsdHMgaW50byBhIGpzb24gZmlsZS5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEpzb25GaWxlUmVwb3J0ZXIgZXh0ZW5kcyBSZXBvcnRlciB7XG4gIHN0YXRpYyBQQVRIID0gbmV3IEluamVjdGlvblRva2VuKCdKc29uRmlsZVJlcG9ydGVyLnBhdGgnKTtcbiAgc3RhdGljIFBST1ZJREVSUyA9IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBKc29uRmlsZVJlcG9ydGVyLFxuICAgICAgZGVwczogW1NhbXBsZURlc2NyaXB0aW9uLCBKc29uRmlsZVJlcG9ydGVyLlBBVEgsIE9wdGlvbnMuV1JJVEVfRklMRSwgT3B0aW9ucy5OT1ddXG4gICAgfSxcbiAgICB7cHJvdmlkZTogSnNvbkZpbGVSZXBvcnRlci5QQVRILCB1c2VWYWx1ZTogJy4nfVxuICBdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgICAgcHJpdmF0ZSBfZGVzY3JpcHRpb246IFNhbXBsZURlc2NyaXB0aW9uLCBASW5qZWN0KEpzb25GaWxlUmVwb3J0ZXIuUEFUSCkgcHJpdmF0ZSBfcGF0aDogc3RyaW5nLFxuICAgICAgQEluamVjdChPcHRpb25zLldSSVRFX0ZJTEUpIHByaXZhdGUgX3dyaXRlRmlsZTogRnVuY3Rpb24sXG4gICAgICBASW5qZWN0KE9wdGlvbnMuTk9XKSBwcml2YXRlIF9ub3c6IEZ1bmN0aW9uKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG92ZXJyaWRlIHJlcG9ydE1lYXN1cmVWYWx1ZXMobWVhc3VyZVZhbHVlczogTWVhc3VyZVZhbHVlcyk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKTtcbiAgfVxuXG4gIG92ZXJyaWRlIHJlcG9ydFNhbXBsZShjb21wbGV0ZVNhbXBsZTogTWVhc3VyZVZhbHVlc1tdLCB2YWxpZFNhbXBsZTogTWVhc3VyZVZhbHVlc1tdKTpcbiAgICAgIFByb21pc2U8YW55PiB7XG4gICAgY29uc3Qgc3RhdHM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9ID0ge307XG4gICAgc29ydGVkUHJvcHModGhpcy5fZGVzY3JpcHRpb24ubWV0cmljcykuZm9yRWFjaCgobWV0cmljTmFtZSkgPT4ge1xuICAgICAgc3RhdHNbbWV0cmljTmFtZV0gPSBmb3JtYXRTdGF0cyh2YWxpZFNhbXBsZSwgbWV0cmljTmFtZSk7XG4gICAgfSk7XG4gICAgY29uc3QgY29udGVudCA9IEpTT04uc3RyaW5naWZ5KFxuICAgICAgICB7XG4gICAgICAgICAgJ2Rlc2NyaXB0aW9uJzogdGhpcy5fZGVzY3JpcHRpb24sXG4gICAgICAgICAgJ3N0YXRzJzogc3RhdHMsXG4gICAgICAgICAgJ2NvbXBsZXRlU2FtcGxlJzogY29tcGxldGVTYW1wbGUsXG4gICAgICAgICAgJ3ZhbGlkU2FtcGxlJzogdmFsaWRTYW1wbGUsXG4gICAgICAgIH0sXG4gICAgICAgIG51bGwsIDIpO1xuICAgIGNvbnN0IGZpbGVQYXRoID0gYCR7dGhpcy5fcGF0aH0vJHt0aGlzLl9kZXNjcmlwdGlvbi5pZH1fJHt0aGlzLl9ub3coKS5nZXRUaW1lKCl9Lmpzb25gO1xuICAgIHJldHVybiB0aGlzLl93cml0ZUZpbGUoZmlsZVBhdGgsIGNvbnRlbnQpO1xuICB9XG59XG4iXX0=