UNPKG

@angular/benchpress

Version:

Benchpress - a framework for e2e performance tests

62 lines 6.59 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 */ import { InjectionToken, Injector } from '@angular/core'; import { Metric } from '../metric'; export class MultiMetric extends Metric { constructor(_metrics) { super(); this._metrics = _metrics; } static provideWith(childTokens) { return [ { provide: _CHILDREN, useFactory: (injector) => childTokens.map(token => injector.get(token)), deps: [Injector] }, { provide: MultiMetric, useFactory: (children) => new MultiMetric(children), deps: [_CHILDREN] } ]; } /** * Starts measuring */ beginMeasure() { return Promise.all(this._metrics.map(metric => metric.beginMeasure())); } /** * Ends measuring and reports the data * since the begin call. * @param restart: Whether to restart right after this. */ endMeasure(restart) { return Promise.all(this._metrics.map(metric => metric.endMeasure(restart))) .then(values => mergeStringMaps(values)); } /** * Describes the metrics provided by this metric implementation. * (e.g. units, ...) */ describe() { return mergeStringMaps(this._metrics.map((metric) => metric.describe())); } } function mergeStringMaps(maps) { const result = {}; maps.forEach(map => { Object.keys(map).forEach(prop => { result[prop] = map[prop]; }); }); return result; } const _CHILDREN = new InjectionToken('MultiMetric.children'); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlfbWV0cmljLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYmVuY2hwcmVzcy9zcmMvbWV0cmljL211bHRpX21ldHJpYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsY0FBYyxFQUFFLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV2RCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBRWpDLE1BQU0sT0FBTyxXQUFZLFNBQVEsTUFBTTtJQWdCckMsWUFBb0IsUUFBa0I7UUFDcEMsS0FBSyxFQUFFLENBQUM7UUFEVSxhQUFRLEdBQVIsUUFBUSxDQUFVO0lBRXRDLENBQUM7SUFqQkQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxXQUFrQjtRQUNuQyxPQUFPO1lBQ0w7Z0JBQ0UsT0FBTyxFQUFFLFNBQVM7Z0JBQ2xCLFVBQVUsRUFBRSxDQUFDLFFBQWtCLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNqRixJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUM7YUFDakI7WUFDRDtnQkFDRSxPQUFPLEVBQUUsV0FBVztnQkFDcEIsVUFBVSxFQUFFLENBQUMsUUFBa0IsRUFBRSxFQUFFLENBQUMsSUFBSSxXQUFXLENBQUMsUUFBUSxDQUFDO2dCQUM3RCxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUM7YUFDbEI7U0FDRixDQUFDO0lBQ0osQ0FBQztJQU1EOztPQUVHO0lBQ00sWUFBWTtRQUNuQixPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRDs7OztPQUlHO0lBQ00sVUFBVSxDQUFDLE9BQWdCO1FBQ2xDLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQzthQUN0RSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQU0sTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ00sUUFBUTtRQUNmLE9BQU8sZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzNFLENBQUM7Q0FDRjtBQUVELFNBQVMsZUFBZSxDQUFDLElBQStCO0lBQ3RELE1BQU0sTUFBTSxHQUE0QixFQUFFLENBQUM7SUFDM0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUNqQixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUM5QixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxjQUFjLENBQUMsc0JBQXNCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0luamVjdGlvblRva2VuLCBJbmplY3Rvcn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7TWV0cmljfSBmcm9tICcuLi9tZXRyaWMnO1xuXG5leHBvcnQgY2xhc3MgTXVsdGlNZXRyaWMgZXh0ZW5kcyBNZXRyaWMge1xuICBzdGF0aWMgcHJvdmlkZVdpdGgoY2hpbGRUb2tlbnM6IGFueVtdKTogYW55W10ge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHByb3ZpZGU6IF9DSElMRFJFTixcbiAgICAgICAgdXNlRmFjdG9yeTogKGluamVjdG9yOiBJbmplY3RvcikgPT4gY2hpbGRUb2tlbnMubWFwKHRva2VuID0+IGluamVjdG9yLmdldCh0b2tlbikpLFxuICAgICAgICBkZXBzOiBbSW5qZWN0b3JdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBwcm92aWRlOiBNdWx0aU1ldHJpYyxcbiAgICAgICAgdXNlRmFjdG9yeTogKGNoaWxkcmVuOiBNZXRyaWNbXSkgPT4gbmV3IE11bHRpTWV0cmljKGNoaWxkcmVuKSxcbiAgICAgICAgZGVwczogW19DSElMRFJFTl1cbiAgICAgIH1cbiAgICBdO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfbWV0cmljczogTWV0cmljW10pIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0cyBtZWFzdXJpbmdcbiAgICovXG4gIG92ZXJyaWRlIGJlZ2luTWVhc3VyZSgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBQcm9taXNlLmFsbCh0aGlzLl9tZXRyaWNzLm1hcChtZXRyaWMgPT4gbWV0cmljLmJlZ2luTWVhc3VyZSgpKSk7XG4gIH1cblxuICAvKipcbiAgICogRW5kcyBtZWFzdXJpbmcgYW5kIHJlcG9ydHMgdGhlIGRhdGFcbiAgICogc2luY2UgdGhlIGJlZ2luIGNhbGwuXG4gICAqIEBwYXJhbSByZXN0YXJ0OiBXaGV0aGVyIHRvIHJlc3RhcnQgcmlnaHQgYWZ0ZXIgdGhpcy5cbiAgICovXG4gIG92ZXJyaWRlIGVuZE1lYXN1cmUocmVzdGFydDogYm9vbGVhbik6IFByb21pc2U8e1trZXk6IHN0cmluZ106IGFueX0+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwodGhpcy5fbWV0cmljcy5tYXAobWV0cmljID0+IG1ldHJpYy5lbmRNZWFzdXJlKHJlc3RhcnQpKSlcbiAgICAgICAgLnRoZW4odmFsdWVzID0+IG1lcmdlU3RyaW5nTWFwcyg8YW55PnZhbHVlcykpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc2NyaWJlcyB0aGUgbWV0cmljcyBwcm92aWRlZCBieSB0aGlzIG1ldHJpYyBpbXBsZW1lbnRhdGlvbi5cbiAgICogKGUuZy4gdW5pdHMsIC4uLilcbiAgICovXG4gIG92ZXJyaWRlIGRlc2NyaWJlKCk6IHtba2V5OiBzdHJpbmddOiBhbnl9IHtcbiAgICByZXR1cm4gbWVyZ2VTdHJpbmdNYXBzKHRoaXMuX21ldHJpY3MubWFwKChtZXRyaWMpID0+IG1ldHJpYy5kZXNjcmliZSgpKSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWVyZ2VTdHJpbmdNYXBzKG1hcHM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9W10pOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSB7XG4gIGNvbnN0IHJlc3VsdDoge1trZXk6IHN0cmluZ106IHN0cmluZ30gPSB7fTtcbiAgbWFwcy5mb3JFYWNoKG1hcCA9PiB7XG4gICAgT2JqZWN0LmtleXMobWFwKS5mb3JFYWNoKHByb3AgPT4ge1xuICAgICAgcmVzdWx0W3Byb3BdID0gbWFwW3Byb3BdO1xuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuY29uc3QgX0NISUxEUkVOID0gbmV3IEluamVjdGlvblRva2VuKCdNdWx0aU1ldHJpYy5jaGlsZHJlbicpO1xuIl19