| Index: tools/telemetry/telemetry/page/page_measurement.py
|
| diff --git a/tools/telemetry/telemetry/page/page_measurement.py b/tools/telemetry/telemetry/page/page_measurement.py
|
| index 04b941ef2db3c87b7a689e3f87b82636755af950..d81c79e35ae9dfd4de9b83570585ef2ca9a2ee3b 100644
|
| --- a/tools/telemetry/telemetry/page/page_measurement.py
|
| +++ b/tools/telemetry/telemetry/page/page_measurement.py
|
| @@ -1,6 +1,13 @@
|
| # Copyright (c) 2012 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 os
|
| +import sys
|
| +
|
| +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 page_measurement_results
|
| from telemetry.page import page_test
|
|
|
| class MeasurementFailure(page_test.Failure):
|
| @@ -49,6 +56,45 @@ class PageMeasurement(page_test.PageTest):
|
| self.MeasurePage(page, tab, results)
|
| results.DidMeasurePage()
|
|
|
| + def AddOutputOptions(self, parser):
|
| + super(PageMeasurement, self).AddOutputOptions(parser)
|
| + parser.add_option('-o', '--output',
|
| + dest='output_file',
|
| + help='Redirects output to a file. Defaults to stdout.')
|
| + parser.add_option('--output-trace-tag',
|
| + default='',
|
| + help='Append a tag to the key of each result trace.')
|
| +
|
| + @property
|
| + def output_format_choices(self):
|
| + return ['buildbot', 'block', 'csv', 'none']
|
| +
|
| + def PrepareResults(self, options):
|
| + if not options.output_file or options.output_file == '-':
|
| + output_stream = sys.stdout
|
| + else:
|
| + output_stream = open(os.path.expanduser(options.output_file), 'w')
|
| +
|
| + if options.output_format == 'csv':
|
| + return csv_page_measurement_results.CsvPageMeasurementResults(
|
| + output_stream,
|
| + self.results_are_the_same_on_every_page,
|
| + trace_tag=options.output_trace_tag)
|
| + 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 == 'none':
|
| + return page_measurement_results.PageMeasurementResults(
|
| + 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(self.output_format_choices)))
|
| +
|
| @property
|
| def results_are_the_same_on_every_page(self):
|
| """By default, measurements are assumed to output the same values for every
|
|
|