| Index: tools/telemetry/telemetry/results/chart_json.py
|
| diff --git a/tools/telemetry/telemetry/results/chart_json.py b/tools/telemetry/telemetry/results/chart_json.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..68711ad8ac36d244fad278df832d37d45f19b867
|
| --- /dev/null
|
| +++ b/tools/telemetry/telemetry/results/chart_json.py
|
| @@ -0,0 +1,57 @@
|
| +# Copyright 2014 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.
|
| +
|
| +import collections
|
| +import itertools
|
| +
|
| +from telemetry.value import summary as summary_module
|
| +
|
| +def ResultsAsChartDict(benchmark_metadata, page_specific_values,
|
| + summary_values):
|
| + """Produces a dict for serialization to Chart JSON format from raw values.
|
| +
|
| + Chart JSON is a transformation of the basic Telemetry JSON format that
|
| + removes the page map, summarizes the raw values, and organizes the results
|
| + by chart and trace name. This function takes the key pieces of data needed to
|
| + perform this transformation (namely, lists of values and a benchmark metadata
|
| + object) and processes them into a dict which can be serialized using the json
|
| + module.
|
| +
|
| + Design doc for schema: http://goo.gl/kOtf1Y
|
| +
|
| + Args:
|
| + page_specific_values: list of page-specific values
|
| + summary_values: list of summary values
|
| + benchmark_metadata: a benchmark.BenchmarkMetadata object
|
| +
|
| + Returns:
|
| + A Chart JSON dict corresponding to the given data.
|
| + """
|
| + summary = summary_module.Summary(page_specific_values)
|
| + values = itertools.chain(
|
| + summary.interleaved_computed_per_page_values_and_summaries,
|
| + summary_values)
|
| + charts = collections.defaultdict(dict)
|
| +
|
| + for value in values:
|
| + if value.page:
|
| + chart_name, trace_name = (
|
| + value.GetChartAndTraceNameForPerPageResult())
|
| + else:
|
| + chart_name, trace_name = (
|
| + value.GetChartAndTraceNameForComputedSummaryResult(None))
|
| + if chart_name == trace_name:
|
| + trace_name = 'summary'
|
| +
|
| + assert trace_name not in charts[chart_name]
|
| +
|
| + charts[chart_name][trace_name] = value.AsDict()
|
| +
|
| + result_dict = {
|
| + 'format_version': '0.1',
|
| + 'benchmark_name': benchmark_metadata.name,
|
| + 'charts': charts
|
| + }
|
| +
|
| + return result_dict
|
|
|