Index: dashboard/dashboard/pinpoint/models/quest/read_value.py |
diff --git a/dashboard/dashboard/pinpoint/models/quest/read_value.py b/dashboard/dashboard/pinpoint/models/quest/read_value.py |
index e61bfc56fd955877d4b7349369c87c4370fd11f5..b06eeef598bac341e9048edbd2d6c8ef20ce962d 100644 |
--- a/dashboard/dashboard/pinpoint/models/quest/read_value.py |
+++ b/dashboard/dashboard/pinpoint/models/quest/read_value.py |
@@ -23,30 +23,35 @@ class ReadChartJsonValue(quest.Quest): |
def __str__(self): |
return 'Value of ' + self._metric |
- def Start(self, isolate_hash): |
- return _ReadChartJsonValueExecution(self._metric, self._test, isolate_hash) |
+ def Start(self, isolate_hashes): |
+ return _ReadChartJsonValueExecution(self._metric, self._test, |
+ isolate_hashes) |
class _ReadChartJsonValueExecution(execution.Execution): |
- def __init__(self, metric, test, isolate_hash): |
+ def __init__(self, metric, test, isolate_hashes): |
super(_ReadChartJsonValueExecution, self).__init__() |
self._metric = metric |
self._test = test or 'summary' |
- self._isolate_hash = isolate_hash |
+ self._isolate_hashes = isolate_hashes |
def _Poll(self): |
- test_output = isolate_service.Retrieve(self._isolate_hash) |
- chartjson_isolate_hash = test_output['files']['chartjson-output.json']['h'] |
- chartjson = json.loads(isolate_service.Retrieve(chartjson_isolate_hash)) |
- chart = chartjson['charts'][self._metric][self._test] |
- if chart['type'] == 'list_of_scalar_values': |
- result_values = tuple(chart['values']) |
- elif chart['type'] == 'histogram': |
- result_values = _ResultValuesFromHistogram(chart['buckets']) |
- elif chart['type'] == 'scalar': |
- result_values = (chart['value'],) |
- self._Complete(result_values=result_values) |
+ result_values = [] |
+ |
+ for isolate_hash in self._isolate_hashes: |
+ output = isolate_service.Retrieve(isolate_hash) |
+ chartjson_isolate_hash = output['files']['chartjson-output.json']['h'] |
+ chartjson = json.loads(isolate_service.Retrieve(chartjson_isolate_hash)) |
+ chart = chartjson['charts'][self._metric][self._test] |
+ if chart['type'] == 'list_of_scalar_values': |
+ result_values += chart['values'] |
+ elif chart['type'] == 'histogram': |
+ result_values += _ResultValuesFromHistogram(chart['buckets']) |
+ elif chart['type'] == 'scalar': |
+ result_values.append(chart['value']) |
+ |
+ self._Complete(result_values=tuple(result_values)) |
def _ResultValuesFromHistogram(buckets): |
@@ -79,21 +84,27 @@ class ReadGraphJsonValue(quest.Quest): |
def __str__(self): |
return 'Value' |
- def Start(self, isolate_hash): |
- return _ReadGraphJsonValueExecution(self._chart, self._trace, isolate_hash) |
+ def Start(self, isolate_hashes): |
+ return _ReadGraphJsonValueExecution(self._chart, self._trace, |
+ isolate_hashes) |
class _ReadGraphJsonValueExecution(execution.Execution): |
- def __init__(self, chart, trace, isolate_hash): |
+ def __init__(self, chart, trace, isolate_hashes): |
super(_ReadGraphJsonValueExecution, self).__init__() |
self._chart = chart |
self._trace = trace |
- self._isolate_hash = isolate_hash |
+ self._isolate_hashes = isolate_hashes |
def _Poll(self): |
- test_output = isolate_service.Retrieve(self._isolate_hash) |
- graphjson_isolate_hash = test_output['files']['chartjson-output.json']['h'] |
- graphjson = json.loads(isolate_service.Retrieve(graphjson_isolate_hash)) |
- result_values = (float(graphjson[self._chart]['traces'][self._trace][0]),) |
- self._Complete(result_values=result_values) |
+ result_values = [] |
+ |
+ for isolate_hash in self._isolate_hashes: |
+ output = isolate_service.Retrieve(isolate_hash) |
+ graphjson_isolate_hash = output['files']['chartjson-output.json']['h'] |
+ graphjson = json.loads(isolate_service.Retrieve(graphjson_isolate_hash)) |
+ result_value = float(graphjson[self._chart]['traces'][self._trace][0]) |
+ result_values.append(result_value) |
+ |
+ self._Complete(result_values=tuple(result_values)) |