UNPKG

@angular/benchpress

Version:

Benchpress - a framework for e2e performance tests

87 lines 12 kB
/** * @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==