OLD | NEW |
1 # Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 import codecs | 5 import codecs |
6 import optparse | 6 import optparse |
7 import os | 7 import os |
8 import sys | 8 import sys |
9 import time | 9 import time |
10 | 10 |
11 from py_utils import cloud_storage # pylint: disable=import-error | 11 from py_utils import cloud_storage # pylint: disable=import-error |
12 | 12 |
13 from telemetry.core import util | 13 from telemetry.core import util |
14 from telemetry.internal.results import chart_json_output_formatter | 14 from telemetry.internal.results import chart_json_output_formatter |
| 15 from telemetry.internal.results import csv_output_formatter |
15 from telemetry.internal.results import csv_pivot_table_output_formatter | 16 from telemetry.internal.results import csv_pivot_table_output_formatter |
16 from telemetry.internal.results import gtest_progress_reporter | 17 from telemetry.internal.results import gtest_progress_reporter |
17 from telemetry.internal.results import histogram_set_json_output_formatter | 18 from telemetry.internal.results import histogram_set_json_output_formatter |
18 from telemetry.internal.results import html_output_formatter | 19 from telemetry.internal.results import html_output_formatter |
| 20 from telemetry.internal.results import json_3_output_formatter |
19 from telemetry.internal.results import json_output_formatter | 21 from telemetry.internal.results import json_output_formatter |
20 from telemetry.internal.results import json_3_output_formatter | |
21 from telemetry.internal.results import legacy_html_output_formatter | 22 from telemetry.internal.results import legacy_html_output_formatter |
22 from telemetry.internal.results import page_test_results | 23 from telemetry.internal.results import page_test_results |
23 from telemetry.internal.results import progress_reporter | 24 from telemetry.internal.results import progress_reporter |
24 | 25 |
25 # Allowed output formats. The default is the first item in the list. | 26 # Allowed output formats. The default is the first item in the list. |
26 | 27 |
27 _OUTPUT_FORMAT_CHOICES = ( | 28 _OUTPUT_FORMAT_CHOICES = ( |
28 'html', 'gtest', 'json', 'json-test-results', | 29 'chartjson', |
29 'chartjson', 'csv-pivot-table', 'histograms', 'legacy-html', 'none') | 30 'csv', |
| 31 'csv-pivot-table', |
| 32 'gtest', |
| 33 'histograms', |
| 34 'html', |
| 35 'json', |
| 36 'json-test-results', |
| 37 'legacy-html', |
| 38 'none', |
| 39 ) |
30 | 40 |
31 | 41 |
32 # Filenames to use for given output formats. | 42 # Filenames to use for given output formats. |
33 _OUTPUT_FILENAME_LOOKUP = { | 43 _OUTPUT_FILENAME_LOOKUP = { |
| 44 'chartjson': 'results-chart.json', |
| 45 'csv': 'results.csv', |
| 46 'csv-pivot-table': 'results-pivot-table.csv', |
| 47 'histograms': 'histograms.json', |
34 'html': 'results.html', | 48 'html': 'results.html', |
35 'json': 'results.json', | 49 'json': 'results.json', |
36 'json-test-results': 'test-results.json', | 50 'json-test-results': 'test-results.json', |
37 'chartjson': 'results-chart.json', | |
38 'csv-pivot-table': 'results-pivot-table.csv', | |
39 'histograms': 'histograms.json', | |
40 'legacy-html': 'legacy-results.html' | 51 'legacy-html': 'legacy-results.html' |
41 } | 52 } |
42 | 53 |
43 | 54 |
44 def AddResultsOptions(parser): | 55 def AddResultsOptions(parser): |
45 group = optparse.OptionGroup(parser, 'Results options') | 56 group = optparse.OptionGroup(parser, 'Results options') |
46 group.add_option( | 57 group.add_option( |
47 '--output-format', | 58 '--output-format', |
48 action='append', | 59 action='append', |
49 dest='output_formats', | 60 dest='output_formats', |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
109 def _GetOutputStream(output_format, output_dir): | 120 def _GetOutputStream(output_format, output_dir): |
110 assert output_format in _OUTPUT_FORMAT_CHOICES, 'Must specify a valid format.' | 121 assert output_format in _OUTPUT_FORMAT_CHOICES, 'Must specify a valid format.' |
111 assert output_format not in ('gtest', 'none'), ( | 122 assert output_format not in ('gtest', 'none'), ( |
112 'Cannot set stream for \'gtest\' or \'none\' output formats.') | 123 'Cannot set stream for \'gtest\' or \'none\' output formats.') |
113 | 124 |
114 assert output_format in _OUTPUT_FILENAME_LOOKUP, ( | 125 assert output_format in _OUTPUT_FILENAME_LOOKUP, ( |
115 'No known filename for the \'%s\' output format' % output_format) | 126 'No known filename for the \'%s\' output format' % output_format) |
116 output_file = os.path.join(output_dir, _OUTPUT_FILENAME_LOOKUP[output_format]) | 127 output_file = os.path.join(output_dir, _OUTPUT_FILENAME_LOOKUP[output_format]) |
117 | 128 |
118 # TODO(eakuefner): Factor this hack out after we rewrite HTMLOutputFormatter. | 129 # TODO(eakuefner): Factor this hack out after we rewrite HTMLOutputFormatter. |
119 if output_format == 'html' or output_format == 'legacy-html': | 130 if output_format in ['html', 'legacy-html', 'csv']: |
120 open(output_file, 'a').close() # Create file if it doesn't exist. | 131 open(output_file, 'a').close() # Create file if it doesn't exist. |
121 return codecs.open(output_file, mode='r+', encoding='utf-8') | 132 return codecs.open(output_file, mode='r+', encoding='utf-8') |
122 else: | 133 else: |
123 return open(output_file, mode='w+') | 134 return open(output_file, mode='w+') |
124 | 135 |
125 | 136 |
126 def _GetProgressReporter(output_skipped_tests_summary, suppress_gtest_report): | 137 def _GetProgressReporter(output_skipped_tests_summary, suppress_gtest_report): |
127 if suppress_gtest_report: | 138 if suppress_gtest_report: |
128 return progress_reporter.ProgressReporter() | 139 return progress_reporter.ProgressReporter() |
129 | 140 |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
164 elif output_format == 'json': | 175 elif output_format == 'json': |
165 output_formatters.append(json_output_formatter.JsonOutputFormatter( | 176 output_formatters.append(json_output_formatter.JsonOutputFormatter( |
166 output_stream, benchmark_metadata)) | 177 output_stream, benchmark_metadata)) |
167 elif output_format == 'json-test-results': | 178 elif output_format == 'json-test-results': |
168 output_formatters.append(json_3_output_formatter.JsonOutputFormatter( | 179 output_formatters.append(json_3_output_formatter.JsonOutputFormatter( |
169 output_stream)) | 180 output_stream)) |
170 elif output_format == 'chartjson': | 181 elif output_format == 'chartjson': |
171 output_formatters.append( | 182 output_formatters.append( |
172 chart_json_output_formatter.ChartJsonOutputFormatter( | 183 chart_json_output_formatter.ChartJsonOutputFormatter( |
173 output_stream, benchmark_metadata)) | 184 output_stream, benchmark_metadata)) |
| 185 elif output_format == 'csv': |
| 186 output_formatters.append( |
| 187 csv_output_formatter.CsvOutputFormatter( |
| 188 output_stream, options.reset_results)) |
174 elif output_format == 'histograms': | 189 elif output_format == 'histograms': |
175 output_formatters.append( | 190 output_formatters.append( |
176 histogram_set_json_output_formatter.HistogramSetJsonOutputFormatter( | 191 histogram_set_json_output_formatter.HistogramSetJsonOutputFormatter( |
177 output_stream, benchmark_metadata, options.reset_results)) | 192 output_stream, benchmark_metadata, options.reset_results)) |
178 elif output_format == 'legacy-html': | 193 elif output_format == 'legacy-html': |
179 output_formatters.append( | 194 output_formatters.append( |
180 legacy_html_output_formatter.LegacyHtmlOutputFormatter( | 195 legacy_html_output_formatter.LegacyHtmlOutputFormatter( |
181 output_stream, benchmark_metadata, options.reset_results, | 196 output_stream, benchmark_metadata, options.reset_results, |
182 options.browser_type, options.results_label)) | 197 options.browser_type, options.results_label)) |
183 else: | 198 else: |
(...skipping 14 matching lines...) Expand all Loading... |
198 output_dir=options.output_dir, | 213 output_dir=options.output_dir, |
199 value_can_be_added_predicate=value_can_be_added_predicate, | 214 value_can_be_added_predicate=value_can_be_added_predicate, |
200 benchmark_enabled=benchmark_enabled) | 215 benchmark_enabled=benchmark_enabled) |
201 | 216 |
202 results.telemetry_info.benchmark_name = benchmark_metadata.name | 217 results.telemetry_info.benchmark_name = benchmark_metadata.name |
203 results.telemetry_info.benchmark_start_epoch = time.time() | 218 results.telemetry_info.benchmark_start_epoch = time.time() |
204 if options.results_label: | 219 if options.results_label: |
205 results.telemetry_info.label = options.results_label | 220 results.telemetry_info.label = options.results_label |
206 | 221 |
207 return results | 222 return results |
OLD | NEW |