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

Side by Side Diff: tools/telemetry/telemetry/page/multi_page_benchmark_runner.py

Issue 12294002: Revert 182991 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 7 years, 10 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4 import csv
5 import logging
6 import os
7 import sys
8
9 from telemetry.core import browser_finder
10 from telemetry.core import browser_options
11 from telemetry.page import all_page_actions # pylint: disable=W0611
12 from telemetry.page import block_page_benchmark_results
13 from telemetry.page import csv_page_benchmark_results
14 from telemetry.page import multi_page_benchmark
15 from telemetry.page import page_runner
16 from telemetry.page import page_set
17 from telemetry.test import discover
18
19 def Main(benchmark_dir):
20 """Turns a MultiPageBenchmark into a command-line program.
21
22 Args:
23 benchmark_dir: Path to directory containing MultiPageBenchmarks.
24 """
25 benchmarks = discover.Discover(benchmark_dir,
26 os.path.join(benchmark_dir, '..'),
27 '',
28 multi_page_benchmark.MultiPageBenchmark)
29
30 # Naively find the benchmark. If we use the browser options parser, we run
31 # the risk of failing to parse if we use a benchmark-specific parameter.
32 benchmark_name = None
33 for arg in sys.argv:
34 if arg in benchmarks:
35 benchmark_name = arg
36
37 options = browser_options.BrowserOptions()
38 parser = options.CreateParser('%prog [options] <benchmark> <page_set>')
39
40 page_runner.PageRunner.AddCommandLineOptions(parser)
41 parser.add_option('--output-format',
42 dest='output_format',
43 default='csv',
44 help='Output format. Can be "csv" or "block". '
45 'Defaults to "%default".')
46 parser.add_option('-o', '--output',
47 dest='output_file',
48 help='Redirects output to a file. Defaults to stdout.')
49
50 benchmark = None
51 if benchmark_name is not None:
52 benchmark = benchmarks[benchmark_name]()
53 benchmark.AddCommandLineOptions(parser)
54
55 _, args = parser.parse_args()
56
57 if benchmark is None or len(args) != 2:
58 parser.print_usage()
59 import page_sets # pylint: disable=F0401
60 print >> sys.stderr, 'Available benchmarks:\n%s\n' % ',\n'.join(
61 sorted(benchmarks.keys()))
62 print >> sys.stderr, 'Available page_sets:\n%s\n' % ',\n'.join(
63 sorted([os.path.relpath(f)
64 for f in page_sets.GetAllPageSetFilenames()]))
65 sys.exit(1)
66
67 ps = page_set.PageSet.FromFile(args[1])
68
69 benchmark.CustomizeBrowserOptions(options)
70 possible_browser = browser_finder.FindBrowser(options)
71 if not possible_browser:
72 print >> sys.stderr, """No browser found.\n
73 Use --browser=list to figure out which are available.\n"""
74 sys.exit(1)
75
76 if not options.output_file:
77 output_file = sys.stdout
78 elif options.output_file == '-':
79 output_file = sys.stdout
80 else:
81 output_file = open(os.path.expanduser(options.output_file), 'w')
82
83 if options.output_format == 'csv':
84 results = csv_page_benchmark_results.CsvPageBenchmarkResults(
85 csv.writer(output_file),
86 benchmark.results_are_the_same_on_every_page)
87 elif options.output_format in ('block', 'terminal-block'):
88 results = block_page_benchmark_results.BlockPageBenchmarkResults(
89 output_file)
90 else:
91 raise Exception('Invalid --output-format value: "%s". Valid values are '
92 '"csv" and "block".'
93 % options.output_format)
94
95 with page_runner.PageRunner(ps) as runner:
96 runner.Run(options, possible_browser, benchmark, results)
97 # When using an exact executable, assume it is a reference build for the
98 # purpose of outputting the perf results.
99 results.PrintSummary(options.browser_executable and '_ref' or '')
100
101 if len(results.page_failures):
102 logging.warning('Failed pages: %s', '\n'.join(
103 [failure['page'].url for failure in results.page_failures]))
104
105 if len(results.skipped_pages):
106 logging.warning('Skipped pages: %s', '\n'.join(
107 [skipped['page'].url for skipped in results.skipped_pages]))
108 return min(255, len(results.page_failures))
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698