@angular/benchpress
Version:
Benchpress - a framework for e2e performance tests
87 lines • 12 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 ConsoleReporter_1;
import { __decorate, __metadata, __param } from "tslib";
import { Inject, Injectable, InjectionToken } from '@angular/core';
import { Reporter } from '../reporter';
import { SampleDescription } from '../sample_description';
import { formatNum, formatStats, sortedProps } from './util';
/**
* A reporter for the console
*/
let ConsoleReporter = ConsoleReporter_1 = class ConsoleReporter extends Reporter {
constructor(_columnWidth, sampleDescription, _print) {
super();
this._columnWidth = _columnWidth;
this._print = _print;
this._metricNames = sortedProps(sampleDescription.metrics);
this._printDescription(sampleDescription);
}
static _lpad(value, columnWidth, fill = ' ') {
let result = '';
for (let i = 0; i < columnWidth - value.length; i++) {
result += fill;
}
return result + value;
}
_printDescription(sampleDescription) {
this._print(`BENCHMARK ${sampleDescription.id}`);
this._print('Description:');
const props = sortedProps(sampleDescription.description);
props.forEach((prop) => {
this._print(`- ${prop}: ${sampleDescription.description[prop]}`);
});
this._print('Metrics:');
this._metricNames.forEach((metricName) => {
this._print(`- ${metricName}: ${sampleDescription.metrics[metricName]}`);
});
this._print('');
this._printStringRow(this._metricNames);
this._printStringRow(this._metricNames.map((_) => ''), '-');
}
reportMeasureValues(measureValues) {
const formattedValues = this._metricNames.map(metricName => {
const value = measureValues.values[metricName];
return formatNum(value);
});
this._printStringRow(formattedValues);
return Promise.resolve(null);
}
reportSample(completeSample, validSamples) {
this._printStringRow(this._metricNames.map((_) => ''), '=');
this._printStringRow(this._metricNames.map(metricName => formatStats(validSamples, metricName)));
return Promise.resolve(null);
}
_printStringRow(parts, fill = ' ') {
this._print(parts.map(part => ConsoleReporter_1._lpad(part, this._columnWidth, fill)).join(' | '));
}
};
ConsoleReporter.PRINT = new InjectionToken('ConsoleReporter.print');
ConsoleReporter.COLUMN_WIDTH = new InjectionToken('ConsoleReporter.columnWidth');
ConsoleReporter.PROVIDERS = [
{
provide: ConsoleReporter_1,
deps: [ConsoleReporter_1.COLUMN_WIDTH, SampleDescription, ConsoleReporter_1.PRINT]
},
{ provide: ConsoleReporter_1.COLUMN_WIDTH, useValue: 18 }, {
provide: ConsoleReporter_1.PRINT,
useValue: function (v) {
// tslint:disable-next-line:no-console
console.log(v);
}
}
];
ConsoleReporter = ConsoleReporter_1 = __decorate([
Injectable(),
__param(0, Inject(ConsoleReporter_1.COLUMN_WIDTH)),
__param(2, Inject(ConsoleReporter_1.PRINT)),
__metadata("design:paramtypes", [Number, SampleDescription,
Function])
], ConsoleReporter);
export { ConsoleReporter };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc29sZV9yZXBvcnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2JlbmNocHJlc3Mvc3JjL3JlcG9ydGVyL2NvbnNvbGVfcmVwb3J0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7QUFFSCxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFakUsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUNyQyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUV4RCxPQUFPLEVBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFHM0Q7O0dBRUc7QUFFSCxJQUFhLGVBQWUsdUJBQTVCLE1BQWEsZUFBZ0IsU0FBUSxRQUFRO0lBNEIzQyxZQUNrRCxZQUFvQixFQUNsRSxpQkFBb0MsRUFDRyxNQUFnQjtRQUN6RCxLQUFLLEVBQUUsQ0FBQztRQUh3QyxpQkFBWSxHQUFaLFlBQVksQ0FBUTtRQUUzQixXQUFNLEdBQU4sTUFBTSxDQUFVO1FBRXpELElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFqQk8sTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFhLEVBQUUsV0FBbUIsRUFBRSxJQUFJLEdBQUcsR0FBRztRQUNqRSxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ25ELE1BQU0sSUFBSSxJQUFJLENBQUM7U0FDaEI7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SSxFQUFFLENBQUMsaUJBQWUsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWUsQ0FBQyxLQUFLLENBQUM7S0FDL0U7SUFDRCxFQUFDLE9BQU8sRUFBRSxpQkFBZSxDQUFDLFlBQVksRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFDLEVBQUU7UUFDckQsT0FBTyxFQUFFLGlCQUFlLENBQUMsS0FBSztRQUM5QixRQUFRLEVBQ0osVUFBUyxDQUFNO1lBQ2Isc0NBQXNDO1lBQ3RDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakIsQ0FBQztLQUNOO0NBQ0QsQ0FBQTtBQWhCUyxlQUFlO0lBRDNCLFVBQVUsRUFBRTtJQThCTixXQUFBLE1BQU0sQ0FBQyxpQkFBZSxDQUFDLFlBQVksQ0FBQyxDQUFBO0lBRXBDLFdBQUEsTUFBTSxDQUFDLGlCQUFlLENBQUMsS0FBSyxDQUFDLENBQUE7NkNBRFgsaUJBQWlCO1FBQ1csUUFBUTtHQS9CaEQsZUFBZSxDQTBFM0I7U0ExRVksZUFBZSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNZWFzdXJlVmFsdWVzfSBmcm9tICcuLi9tZWFzdXJlX3ZhbHVlcyc7XG5pbXBvcnQge1JlcG9ydGVyfSBmcm9tICcuLi9yZXBvcnRlcic7XG5pbXBvcnQge1NhbXBsZURlc2NyaXB0aW9ufSBmcm9tICcuLi9zYW1wbGVfZGVzY3JpcHRpb24nO1xuXG5pbXBvcnQge2Zvcm1hdE51bSwgZm9ybWF0U3RhdHMsIHNvcnRlZFByb3BzfSBmcm9tICcuL3V0aWwnO1xuXG5cbi8qKlxuICogQSByZXBvcnRlciBmb3IgdGhlIGNvbnNvbGVcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbnNvbGVSZXBvcnRlciBleHRlbmRzIFJlcG9ydGVyIHtcbiAgc3RhdGljIFBSSU5UID0gbmV3IEluamVjdGlvblRva2VuKCdDb25zb2xlUmVwb3J0ZXIucHJpbnQnKTtcbiAgc3RhdGljIENPTFVNTl9XSURUSCA9IG5ldyBJbmplY3Rpb25Ub2tlbignQ29uc29sZVJlcG9ydGVyLmNvbHVtbldpZHRoJyk7XG4gIHN0YXRpYyBQUk9WSURFUlMgPSBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQ29uc29sZVJlcG9ydGVyLFxuICAgICAgZGVwczogW0NvbnNvbGVSZXBvcnRlci5DT0xVTU5fV0lEVEgsIFNhbXBsZURlc2NyaXB0aW9uLCBDb25zb2xlUmVwb3J0ZXIuUFJJTlRdXG4gICAgfSxcbiAgICB7cHJvdmlkZTogQ29uc29sZVJlcG9ydGVyLkNPTFVNTl9XSURUSCwgdXNlVmFsdWU6IDE4fSwge1xuICAgICAgcHJvdmlkZTogQ29uc29sZVJlcG9ydGVyLlBSSU5ULFxuICAgICAgdXNlVmFsdWU6XG4gICAgICAgICAgZnVuY3Rpb24odjogYW55KSB7XG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tY29uc29sZVxuICAgICAgICAgICAgY29uc29sZS5sb2codik7XG4gICAgICAgICAgfVxuICAgIH1cbiAgXTtcblxuICBwcml2YXRlIHN0YXRpYyBfbHBhZCh2YWx1ZTogc3RyaW5nLCBjb2x1bW5XaWR0aDogbnVtYmVyLCBmaWxsID0gJyAnKSB7XG4gICAgbGV0IHJlc3VsdCA9ICcnO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29sdW1uV2lkdGggLSB2YWx1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgcmVzdWx0ICs9IGZpbGw7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQgKyB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgX21ldHJpY05hbWVzOiBzdHJpbmdbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAgIEBJbmplY3QoQ29uc29sZVJlcG9ydGVyLkNPTFVNTl9XSURUSCkgcHJpdmF0ZSBfY29sdW1uV2lkdGg6IG51bWJlcixcbiAgICAgIHNhbXBsZURlc2NyaXB0aW9uOiBTYW1wbGVEZXNjcmlwdGlvbixcbiAgICAgIEBJbmplY3QoQ29uc29sZVJlcG9ydGVyLlBSSU5UKSBwcml2YXRlIF9wcmludDogRnVuY3Rpb24pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuX21ldHJpY05hbWVzID0gc29ydGVkUHJvcHMoc2FtcGxlRGVzY3JpcHRpb24ubWV0cmljcyk7XG4gICAgdGhpcy5fcHJpbnREZXNjcmlwdGlvbihzYW1wbGVEZXNjcmlwdGlvbik7XG4gIH1cblxuICBwcml2YXRlIF9wcmludERlc2NyaXB0aW9uKHNhbXBsZURlc2NyaXB0aW9uOiBTYW1wbGVEZXNjcmlwdGlvbikge1xuICAgIHRoaXMuX3ByaW50KGBCRU5DSE1BUksgJHtzYW1wbGVEZXNjcmlwdGlvbi5pZH1gKTtcbiAgICB0aGlzLl9wcmludCgnRGVzY3JpcHRpb246Jyk7XG4gICAgY29uc3QgcHJvcHMgPSBzb3J0ZWRQcm9wcyhzYW1wbGVEZXNjcmlwdGlvbi5kZXNjcmlwdGlvbik7XG4gICAgcHJvcHMuZm9yRWFjaCgocHJvcCkgPT4ge1xuICAgICAgdGhpcy5fcHJpbnQoYC0gJHtwcm9wfTogJHtzYW1wbGVEZXNjcmlwdGlvbi5kZXNjcmlwdGlvbltwcm9wXX1gKTtcbiAgICB9KTtcbiAgICB0aGlzLl9wcmludCgnTWV0cmljczonKTtcbiAgICB0aGlzLl9tZXRyaWNOYW1lcy5mb3JFYWNoKChtZXRyaWNOYW1lKSA9PiB7XG4gICAgICB0aGlzLl9wcmludChgLSAke21ldHJpY05hbWV9OiAke3NhbXBsZURlc2NyaXB0aW9uLm1ldHJpY3NbbWV0cmljTmFtZV19YCk7XG4gICAgfSk7XG4gICAgdGhpcy5fcHJpbnQoJycpO1xuICAgIHRoaXMuX3ByaW50U3RyaW5nUm93KHRoaXMuX21ldHJpY05hbWVzKTtcbiAgICB0aGlzLl9wcmludFN0cmluZ1Jvdyh0aGlzLl9tZXRyaWNOYW1lcy5tYXAoKF8pID0+ICcnKSwgJy0nKTtcbiAgfVxuXG4gIG92ZXJyaWRlIHJlcG9ydE1lYXN1cmVWYWx1ZXMobWVhc3VyZVZhbHVlczogTWVhc3VyZVZhbHVlcyk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgZm9ybWF0dGVkVmFsdWVzID0gdGhpcy5fbWV0cmljTmFtZXMubWFwKG1ldHJpY05hbWUgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSBtZWFzdXJlVmFsdWVzLnZhbHVlc1ttZXRyaWNOYW1lXTtcbiAgICAgIHJldHVybiBmb3JtYXROdW0odmFsdWUpO1xuICAgIH0pO1xuICAgIHRoaXMuX3ByaW50U3RyaW5nUm93KGZvcm1hdHRlZFZhbHVlcyk7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKTtcbiAgfVxuXG4gIG92ZXJyaWRlIHJlcG9ydFNhbXBsZShjb21wbGV0ZVNhbXBsZTogTWVhc3VyZVZhbHVlc1tdLCB2YWxpZFNhbXBsZXM6IE1lYXN1cmVWYWx1ZXNbXSk6XG4gICAgICBQcm9taXNlPGFueT4ge1xuICAgIHRoaXMuX3ByaW50U3RyaW5nUm93KHRoaXMuX21ldHJpY05hbWVzLm1hcCgoXykgPT4gJycpLCAnPScpO1xuICAgIHRoaXMuX3ByaW50U3RyaW5nUm93KFxuICAgICAgICB0aGlzLl9tZXRyaWNOYW1lcy5tYXAobWV0cmljTmFtZSA9PiBmb3JtYXRTdGF0cyh2YWxpZFNhbXBsZXMsIG1ldHJpY05hbWUpKSk7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKTtcbiAgfVxuXG4gIHByaXZhdGUgX3ByaW50U3RyaW5nUm93KHBhcnRzOiBhbnlbXSwgZmlsbCA9ICcgJykge1xuICAgIHRoaXMuX3ByaW50KFxuICAgICAgICBwYXJ0cy5tYXAocGFydCA9PiBDb25zb2xlUmVwb3J0ZXIuX2xwYWQocGFydCwgdGhpcy5fY29sdW1uV2lkdGgsIGZpbGwpKS5qb2luKCcgfCAnKSk7XG4gIH1cbn1cbiJdfQ==