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 optparse | 5 import optparse |
6 import os | 6 import os |
7 import sys | 7 import sys |
8 | 8 |
9 from telemetry.core import util | 9 from telemetry.core import util |
10 from telemetry.page import page_measurement | 10 from telemetry.page import page_measurement |
11 from telemetry.results import buildbot_page_measurement_results | 11 from telemetry.results import buildbot_page_measurement_results |
12 from telemetry.results import csv_page_measurement_results | 12 from telemetry.results import csv_output_formatter |
13 from telemetry.results import gtest_test_results | 13 from telemetry.results import gtest_test_results |
14 from telemetry.results import html_page_measurement_results | 14 from telemetry.results import html_page_measurement_results |
15 from telemetry.results import page_measurement_results | 15 from telemetry.results import page_measurement_results |
| 16 from telemetry.results import page_test_results |
16 | 17 |
17 | 18 |
18 # Allowed output formats. The default is the first item in the list. | 19 # Allowed output formats. The default is the first item in the list. |
19 _OUTPUT_FORMAT_CHOICES = ('html', 'buildbot', 'csv', 'gtest', 'none') | 20 _OUTPUT_FORMAT_CHOICES = ('html', 'buildbot', 'csv', 'gtest', 'none') |
20 | 21 |
21 | 22 |
22 def AddResultsOptions(parser): | 23 def AddResultsOptions(parser): |
23 group = optparse.OptionGroup(parser, 'Results options') | 24 group = optparse.OptionGroup(parser, 'Results options') |
24 group.add_option('--output-format', | 25 group.add_option('--output-format', |
25 default=_OUTPUT_FORMAT_CHOICES[0], | 26 default=_OUTPUT_FORMAT_CHOICES[0], |
(...skipping 29 matching lines...) Expand all Loading... |
55 output_file = os.path.expanduser(options.output_file) | 56 output_file = os.path.expanduser(options.output_file) |
56 open(output_file, 'a').close() # Create file if it doesn't exist. | 57 open(output_file, 'a').close() # Create file if it doesn't exist. |
57 output_stream = open(output_file, 'r+') | 58 output_stream = open(output_file, 'r+') |
58 else: | 59 else: |
59 output_stream = sys.stdout | 60 output_stream = sys.stdout |
60 if not hasattr(options, 'output_format'): | 61 if not hasattr(options, 'output_format'): |
61 options.output_format = _OUTPUT_FORMAT_CHOICES[0] | 62 options.output_format = _OUTPUT_FORMAT_CHOICES[0] |
62 if not hasattr(options, 'output_trace_tag'): | 63 if not hasattr(options, 'output_trace_tag'): |
63 options.output_trace_tag = '' | 64 options.output_trace_tag = '' |
64 | 65 |
| 66 output_formatters = [] |
65 if options.output_format == 'none': | 67 if options.output_format == 'none': |
66 return page_measurement_results.PageMeasurementResults( | 68 return page_measurement_results.PageMeasurementResults( |
67 output_stream, trace_tag=options.output_trace_tag) | 69 output_stream, trace_tag=options.output_trace_tag) |
68 elif options.output_format == 'csv': | 70 elif options.output_format == 'csv': |
69 return csv_page_measurement_results.CsvPageMeasurementResults(output_stream) | 71 output_formatters.append( |
| 72 csv_output_formatter.CsvOutputFormatter(output_stream)) |
70 elif options.output_format == 'buildbot': | 73 elif options.output_format == 'buildbot': |
71 return buildbot_page_measurement_results.BuildbotPageMeasurementResults( | 74 return buildbot_page_measurement_results.BuildbotPageMeasurementResults( |
72 output_stream, trace_tag=options.output_trace_tag) | 75 output_stream, trace_tag=options.output_trace_tag) |
73 elif options.output_format == 'gtest': | 76 elif options.output_format == 'gtest': |
74 return gtest_test_results.GTestTestResults(output_stream) | 77 return gtest_test_results.GTestTestResults(output_stream) |
75 elif options.output_format == 'html': | 78 elif options.output_format == 'html': |
76 return html_page_measurement_results.HtmlPageMeasurementResults( | 79 return html_page_measurement_results.HtmlPageMeasurementResults( |
77 output_stream, test.__class__.__name__, options.reset_results, | 80 output_stream, test.__class__.__name__, options.reset_results, |
78 options.upload_results, options.browser_type, | 81 options.upload_results, options.browser_type, |
79 options.results_label, trace_tag=options.output_trace_tag) | 82 options.results_label, trace_tag=options.output_trace_tag) |
| 83 |
| 84 if len(output_formatters) > 0: |
| 85 return page_test_results.PageTestResults( |
| 86 output_formatters=output_formatters) |
80 else: | 87 else: |
81 # Should never be reached. The parser enforces the choices. | 88 # Should never be reached. The parser enforces the choices. |
82 raise Exception('Invalid --output-format "%s". Valid choices are: %s' | 89 raise Exception('Invalid --output-format "%s". Valid choices are: %s' |
83 % (options.output_format, | 90 % (options.output_format, |
84 ', '.join(_OUTPUT_FORMAT_CHOICES))) | 91 ', '.join(_OUTPUT_FORMAT_CHOICES))) |
OLD | NEW |