Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1778)

Unified Diff: tools/telemetry/telemetry/page/page_measurement.py

Issue 16373012: [telemetry] Simplify the way PageRunner is called. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add DidStartHTTPServer() and re-add WillRunPageSet() Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698