Index: tools/telemetry/telemetry/page/results_options.py |
diff --git a/tools/telemetry/telemetry/page/results_options.py b/tools/telemetry/telemetry/page/results_options.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b745ec38d3418f0389a7637740bae81011bbdfbc |
--- /dev/null |
+++ b/tools/telemetry/telemetry/page/results_options.py |
@@ -0,0 +1,84 @@ |
+# Copyright (c) 2013 The Chromium Authors. All rights reserved. |
+# Use of this source code is governed by a BSD-style license that can be |
+# found in the LICENSE file. |
+ |
+import optparse |
+import os |
+import sys |
+ |
+from telemetry.core import util |
+from telemetry.page import block_page_measurement_results |
+from telemetry.page import buildbot_page_measurement_results |
+from telemetry.page import csv_page_measurement_results |
+from telemetry.page import gtest_test_results |
+from telemetry.page import html_page_measurement_results |
+from telemetry.page import page_measurement |
+from telemetry.page import page_measurement_results |
+ |
+ |
+# Allowed output formats. The default is the first item in the list. |
+_OUTPUT_FORMAT_CHOICES = ('html', 'buildbot', 'block', 'csv', 'gtest', 'none') |
+ |
+ |
+def AddResultsOptions(parser): |
+ group = optparse.OptionGroup(parser, 'Results options') |
+ group.add_option('--output-format', |
+ default=_OUTPUT_FORMAT_CHOICES[0], |
+ choices=_OUTPUT_FORMAT_CHOICES, |
+ help='Output format. Defaults to "%%default". ' |
+ 'Can be %s.' % ', '.join(_OUTPUT_FORMAT_CHOICES)) |
+ group.add_option('-o', '--output', |
+ dest='output_file', |
+ help='Redirects output to a file. Defaults to stdout.') |
+ group.add_option('--output-trace-tag', |
+ default='', |
+ help='Append a tag to the key of each result trace.') |
+ group.add_option('--reset-html-results', action='store_true', |
+ help='Delete all stored runs in HTML output') |
+ parser.add_option_group(group) |
+ |
+ |
+def PrepareResults(test, options): |
+ if not isinstance(test, page_measurement.PageMeasurement): |
+ # Sort of hacky. The default for non-Measurements should be "gtest." |
+ if options.output_format != 'none': |
+ options.output_format = 'gtest' |
+ |
+ if options.output_format == 'html' and not options.output_file: |
+ options.output_file = os.path.join(util.GetBaseDir(), 'results.html') |
+ |
+ if hasattr(options, 'output_file') and options.output_file: |
+ output_file = os.path.expanduser(options.output_file) |
+ open(output_file, 'a').close() # Create file if it doesn't exist. |
+ output_stream = open(output_file, 'r+') |
+ else: |
+ output_stream = sys.stdout |
+ if not hasattr(options, 'output_format'): |
+ options.output_format = _OUTPUT_FORMAT_CHOICES[0] |
+ if not hasattr(options, 'output_trace_tag'): |
+ options.output_trace_tag = '' |
+ |
+ if options.output_format == 'none': |
+ return page_measurement_results.PageMeasurementResults( |
+ trace_tag=options.output_trace_tag) |
+ elif options.output_format == 'csv': |
+ return csv_page_measurement_results.CsvPageMeasurementResults( |
+ output_stream, |
+ test.results_are_the_same_on_every_page) |
+ elif options.output_format == 'block': |
+ return block_page_measurement_results.BlockPageMeasurementResults( |
+ output_stream) |
+ elif options.output_format == 'buildbot': |
+ return buildbot_page_measurement_results.BuildbotPageMeasurementResults( |
+ trace_tag=options.output_trace_tag) |
+ elif options.output_format == 'gtest': |
+ return gtest_test_results.GTestTestResults(output_stream) |
+ elif options.output_format == 'html': |
+ return html_page_measurement_results.HtmlPageMeasurementResults( |
+ output_stream, test.__class__.__name__, options.reset_html_results, |
+ options.browser_type, trace_tag=options.output_trace_tag) |
+ else: |
+ # Should never be reached. The parser enforces the choices. |
+ raise Exception('Invalid --output-format "%s". Valid choices are: %s' |
+ % (options.output_format, |
+ ', '.join(_OUTPUT_FORMAT_CHOICES))) |