blob: 8b1afb2f966a676c3774d8f21f515e66d46415a9 [file] [log] [blame]
<!DOCTYPE html>
<!--
Copyright (c) 2015 The Chromium Authors. All rights reserved.
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->
<link rel="import" href="/tracing/base/iteration_helpers.html">
<link rel="import" href="/perf_insights/value/value.html">
<script>
'use strict';
tr.exportTo('pi.r', function() {
function Results() {
this.allValues = [];
this.runIdsThatHaveFailures_ = {};
}
Results.fromDict = function(dict) {
if (dict.runs === undefined)
throw new Error('Expected: runInfo');
if (dict.values === undefined)
throw new Error('Expected: runInfo');
var runInfosById = tr.b.mapItems(dict.runs, function(runId, dict) {
return pi.v.RunInfo.fromDict(dict);
});
var results = new Results();
dict.values.forEach(function(valueDict) {
var runInfo = runInfosById[valueDict.run_id];
if (runInfo === undefined) {
debugger;
throw new Error('runInfo not found');
}
var value = pi.v.Value.fromDict(runInfo, valueDict);
results.addValue(value);
});
return results;
}
Results.prototype = {
willRun: function(runInfo) {
},
addValue: function(value) {
if (value instanceof pi.v.FailureValue)
this.runIdsThatHaveFailures_[value.runInfo.runId] = true;
this.allValues.push(value);
},
didRun: function(runInfo) {
},
didFinishAllRuns: function() {
},
get hadFailures() {
return this.failureValues.length > 0;
},
get failureValues() {
return this.allValues.filter(function(x) {
return x instanceof pi.v.FailureValue;
});
},
get failedRunInfos() {
var failedRunInfos = [];
var hasAddedRunInfo = {};
this.failureValues.forEach(function(v) {
if (hasAddedRunInfo[v.runInfo.runId])
return;
hasAddedRunInfo[v.runInfo.runId] = true;
failedRunInfos.push(v.runInfo);
});
return failedRunInfos;
},
get allRunInfos() {
var allRunInfos = [];
var hasAddedRunInfo = {};
this.allValues.forEach(function(v) {
if (hasAddedRunInfo[v.runInfo.runId])
return;
hasAddedRunInfo[v.runInfo.runId] = true;
allRunInfos.push(v.runInfo);
});
return allRunInfos;
},
doesRunContainFailure: function(runInfo) {
return this.runIdsThatHaveFailures_[runInfo.runId] === true;
},
get allValuesFromFailureFreeRuns() {
return this.allValues.filter(function(x) {
if (this.doesRunContainFailure(x.runInfo))
return false;
return true;
}, this);
},
getValuesForRunInfo: function(runInfo) {
return this.allValues.filter(function(value) {
return value.runInfo === runInfo;
});
},
getValuesFromFailureFreeRunsNamed: function(name) {
return this.allValuesFromFailureFreeRuns.filter(function(value) {
return value.name === name;
});
}
};
return {
Results: Results
};
});
</script>