Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(793)

Side by Side Diff: telemetry/telemetry/internal/results/json_output_formatter.py

Issue 3004383002: Remove JsonOutputFormatter from telemetry. (Closed)
Patch Set: Created 3 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | telemetry/telemetry/internal/results/json_output_formatter_unittest.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4
5 import json
6
7 from telemetry.internal.results import output_formatter
8
9
10 def ResultsAsDict(page_test_results, benchmark_metadata):
11 """Takes PageTestResults to a dict serializable to JSON.
12
13 To serialize results as JSON we first convert them to a dict that can be
14 serialized by the json module. It also requires a benchmark_metadat object
15 for metadata to be integrated into the results (currently the benchmark
16 name). This function will also output trace files if they exist.
17
18 Args:
19 page_test_results: a PageTestResults object
20 benchmark_metadata: a benchmark.BenchmarkMetadata object
21 """
22 result_dict = {
23 'format_version': '0.2',
24 'next_version': '0.3',
25 # TODO(sullivan): benchmark_name should be removed when updating
26 # format_version to 0.3.
27 'benchmark_name': benchmark_metadata.name,
28 'benchmark_metadata': benchmark_metadata.AsDict(),
29 'summary_values': [v.AsDict() for v in
30 page_test_results.all_summary_values],
31 'per_page_values': [v.AsDict() for v in
32 page_test_results.all_page_specific_values],
33 'pages': {p.id: p.AsDict() for p in _GetAllPages(page_test_results)}
34 }
35 if page_test_results.serialized_trace_file_ids_to_paths:
36 result_dict['files'] = page_test_results.serialized_trace_file_ids_to_paths
37 return result_dict
38
39
40 def _GetAllPages(page_test_results):
41 pages = set(page_run.story for page_run in
42 page_test_results.all_page_runs)
43 return pages
44
45
46 class JsonOutputFormatter(output_formatter.OutputFormatter):
47 def __init__(self, output_stream, benchmark_metadata):
48 super(JsonOutputFormatter, self).__init__(output_stream)
49 self._benchmark_metadata = benchmark_metadata
50
51 @property
52 def benchmark_metadata(self):
53 return self._benchmark_metadata
54
55 def Format(self, page_test_results):
56 json.dump(
57 ResultsAsDict(page_test_results, self.benchmark_metadata),
58 self.output_stream, indent=2)
59 self.output_stream.write('\n')
OLDNEW
« no previous file with comments | « no previous file | telemetry/telemetry/internal/results/json_output_formatter_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698