2 class AnalysisResults {
5 this._metricToBuildMap = {};
7 this._lazilyComputedHighestTests = new LazilyEvaluatedFunction(this._computeHighestTests);
10 findResult(buildId, metricId)
12 const map = this._metricToBuildMap[metricId];
18 highestTests() { return this._lazilyComputedHighestTests.evaluate(this._metricIds); }
22 console.assert(test instanceof Test);
23 for (const metric of test.metrics()) {
24 if (metric.id() in this._metricToBuildMap)
30 _computeHighestTests(metricIds)
32 const testsInResults = new Set(metricIds.map((metricId) => Metric.findById(metricId).test()));
33 return [...testsInResults].filter((test) => !testsInResults.has(test.parentTest()));
38 console.assert(measurement.configType == 'current');
39 const metricId = measurement.metricId;
40 if (!(metricId in this._metricToBuildMap)) {
41 this._metricToBuildMap[metricId] = {};
42 this._metricIds = Object.keys(this._metricToBuildMap);
44 const map = this._metricToBuildMap[metricId];
45 console.assert(!map[measurement.buildId]);
46 map[measurement.buildId] = measurement;
49 commitSetForRequest(buildRequest)
51 if (!this._metricIds.length)
53 const result = this.findResult(buildRequest.buildId(), this._metricIds[0]);
56 return result.commitSet();
61 console.assert(metric instanceof Metric);
62 return new AnalysisResultsView(this, metric);
67 taskId = parseInt(taskId);
68 return RemoteAPI.getJSONWithStatus(`../api/measurement-set?analysisTask=${taskId}`).then(function (response) {
70 Instrumentation.startMeasuringTime('AnalysisResults', 'fetch');
72 const adaptor = new MeasurementAdaptor(response['formatMap']);
73 const results = new AnalysisResults;
74 for (const rawMeasurement of response['measurements'])
75 results.add(adaptor.applyToAnalysisResults(rawMeasurement));
77 Instrumentation.endMeasuringTime('AnalysisResults', 'fetch');
84 class AnalysisResultsView {
85 constructor(analysisResults, metric)
87 console.assert(analysisResults instanceof AnalysisResults);
88 console.assert(metric instanceof Metric);
89 this._results = analysisResults;
90 this._metric = metric;
93 metric() { return this._metric; }
95 resultForRequest(buildRequest)
97 return this._results.findResult(buildRequest.buildId(), this._metric.id());