Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / tools / telemetry / telemetry / results / json_output_formatter.py
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.results import output_formatter
8
9
10 def ResultsAsDict(page_test_results, metadata):
11   result_dict = {
12     'format_version': '0.2',
13     'benchmark_name': metadata.name,
14     'summary_values': [v.AsDict() for v in
15                        page_test_results.all_summary_values],
16     'per_page_values': [v.AsDict() for v in
17                         page_test_results.all_page_specific_values],
18     'pages': dict((p.id, p.AsDict()) for p in _GetAllPages(page_test_results))
19   }
20
21   return result_dict
22
23 def _GetAllPages(page_test_results):
24   pages = set(page_run.page for page_run in
25               page_test_results.all_page_runs)
26   return pages
27
28 class JsonOutputFormatter(output_formatter.OutputFormatter):
29   def __init__(self, output_stream, metadata):
30     super(JsonOutputFormatter, self).__init__(output_stream)
31     self._metadata = metadata
32
33   @property
34   def metadata(self):
35     return self._metadata
36
37   def Format(self, page_test_results):
38     json.dump(ResultsAsDict(page_test_results, self.metadata),
39         self.output_stream)
40     self.output_stream.write('\n')