| 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 |