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

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

Issue 386943007: Plumb Telemetry test name through to results object creation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Got rid of unnecessary fake Created 6 years, 4 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
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright 2012 The Chromium Authors. All rights reserved. 2 # Copyright 2012 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 import logging 5 import logging
6 import sys 6 import sys
7 import time 7 import time
8 8
9 from telemetry import benchmark 9 from telemetry import benchmark
10 from telemetry.core import browser_options 10 from telemetry.core import browser_options
11 from telemetry.core import discover 11 from telemetry.core import discover
12 from telemetry.core import wpr_modes 12 from telemetry.core import wpr_modes
13 from telemetry.page import page_measurement 13 from telemetry.page import page_measurement
14 from telemetry.page import page_runner 14 from telemetry.page import page_runner
15 from telemetry.page import page_set 15 from telemetry.page import page_set
16 from telemetry.page import page_test 16 from telemetry.page import page_test
17 from telemetry.page import profile_creator 17 from telemetry.page import profile_creator
18 from telemetry.page import test_expectations 18 from telemetry.page import test_expectations
19 from telemetry.results import page_measurement_results 19 from telemetry.results import page_measurement_results
20 from telemetry.results import results_options
20 21
21 22
22 class RecorderPageTest(page_test.PageTest): # pylint: disable=W0223 23 class RecorderPageTest(page_test.PageTest): # pylint: disable=W0223
23 def __init__(self, action_names): 24 def __init__(self, action_names):
24 super(RecorderPageTest, self).__init__() 25 super(RecorderPageTest, self).__init__()
25 self._action_names = action_names 26 self._action_names = action_names
26 self.page_test = None 27 self.page_test = None
27 28
28 def CanRunForPage(self, page): 29 def CanRunForPage(self, page):
29 return page.url.startswith('http') 30 return page.url.startswith('http')
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 107
107 def _MaybeGetInstanceOfClass(target, base_dir, cls): 108 def _MaybeGetInstanceOfClass(target, base_dir, cls):
108 if isinstance(target, cls): 109 if isinstance(target, cls):
109 return target 110 return target
110 classes = discover.DiscoverClasses(base_dir, base_dir, cls, 111 classes = discover.DiscoverClasses(base_dir, base_dir, cls,
111 index_by_class_name=True) 112 index_by_class_name=True)
112 return classes[target]() if target in classes else None 113 return classes[target]() if target in classes else None
113 114
114 115
115 class WprRecorder(object): 116 class WprRecorder(object):
116
117 def __init__(self, base_dir, target, args=None): 117 def __init__(self, base_dir, target, args=None):
118 action_names_to_run = FindAllActionNames(base_dir) 118 action_names_to_run = FindAllActionNames(base_dir)
119 self._record_page_test = RecorderPageTest(action_names_to_run) 119 self._record_page_test = RecorderPageTest(action_names_to_run)
120 self._options = self._CreateOptions() 120 self._options = self._CreateOptions()
121 121
122 self._benchmark = _MaybeGetInstanceOfClass(target, base_dir, 122 self._benchmark = _MaybeGetInstanceOfClass(target, base_dir,
123 benchmark.Benchmark) 123 benchmark.Benchmark)
124 if self._benchmark is not None: 124 if self._benchmark is not None:
125 self._record_page_test.page_test = self._benchmark.test() 125 self._record_page_test.page_test = self._benchmark.test()
126 self._parser = self._options.CreateParser(usage='%prog <PageSet|Benchmark>') 126 self._parser = self._options.CreateParser(usage='%prog <PageSet|Benchmark>')
127 self._AddCommandLineArgs() 127 self._AddCommandLineArgs()
128 self._ParseArgs(args) 128 self._ParseArgs(args)
129 self._ProcessCommandLineArgs() 129 self._ProcessCommandLineArgs()
130 self._page_set = self._GetPageSet(base_dir, target) 130 self._page_set = self._GetPageSet(base_dir, target)
131 131
132 @property 132 @property
133 def options(self): 133 def options(self):
134 return self._options 134 return self._options
135 135
136 def _CreateOptions(self): 136 def _CreateOptions(self):
137 options = browser_options.BrowserFinderOptions() 137 options = browser_options.BrowserFinderOptions()
138 options.browser_options.wpr_mode = wpr_modes.WPR_RECORD 138 options.browser_options.wpr_mode = wpr_modes.WPR_RECORD
139 options.browser_options.no_proxy_server = True 139 options.browser_options.no_proxy_server = True
140 return options 140 return options
141 141
142 def CreateResults(self):
143 if self._benchmark is not None:
144 benchmark_metadata = self._benchmark.GetMetadata()
145 else:
146 benchmark_metadata = benchmark.BenchmarkMetadata('record_wpr')
147
148 return results_options.CreateResults(benchmark_metadata, self._options)
149
142 def _AddCommandLineArgs(self): 150 def _AddCommandLineArgs(self):
143 page_runner.AddCommandLineArgs(self._parser) 151 page_runner.AddCommandLineArgs(self._parser)
144 if self._benchmark is not None: 152 if self._benchmark is not None:
145 self._benchmark.AddCommandLineArgs(self._parser) 153 self._benchmark.AddCommandLineArgs(self._parser)
146 self._benchmark.SetArgumentDefaults(self._parser) 154 self._benchmark.SetArgumentDefaults(self._parser)
147 155
148 def _ParseArgs(self, args=None): 156 def _ParseArgs(self, args=None):
149 args_to_parse = sys.argv[1:] if args is None else args 157 args_to_parse = sys.argv[1:] if args is None else args
150 self._parser.parse_args(args_to_parse) 158 self._parser.parse_args(args_to_parse)
151 159
152 def _ProcessCommandLineArgs(self): 160 def _ProcessCommandLineArgs(self):
153 page_runner.ProcessCommandLineArgs(self._parser, self._options) 161 page_runner.ProcessCommandLineArgs(self._parser, self._options)
154 if self._benchmark is not None: 162 if self._benchmark is not None:
155 self._benchmark.ProcessCommandLineArgs(self._parser, self._options) 163 self._benchmark.ProcessCommandLineArgs(self._parser, self._options)
156 164
157 def _GetPageSet(self, base_dir, target): 165 def _GetPageSet(self, base_dir, target):
158 if self._benchmark is not None: 166 if self._benchmark is not None:
159 return self._benchmark.CreatePageSet(self._options) 167 return self._benchmark.CreatePageSet(self._options)
160 ps = _MaybeGetInstanceOfClass(target, base_dir, page_set.PageSet) 168 ps = _MaybeGetInstanceOfClass(target, base_dir, page_set.PageSet)
161 if ps is None: 169 if ps is None:
162 self._parser.print_usage() 170 self._parser.print_usage()
163 sys.exit(1) 171 sys.exit(1)
164 return ps 172 return ps
165 173
166 def Record(self): 174 def Record(self, results):
167 self._page_set.wpr_archive_info.AddNewTemporaryRecording() 175 self._page_set.wpr_archive_info.AddNewTemporaryRecording()
168 self._record_page_test.CustomizeBrowserOptions(self._options) 176 self._record_page_test.CustomizeBrowserOptions(self._options)
169 return page_runner.Run(self._record_page_test, self._page_set, 177 page_runner.Run(self._record_page_test, self._page_set,
170 test_expectations.TestExpectations(), self._options) 178 test_expectations.TestExpectations(), self._options, results)
171 179
172 def HandleResults(self, results): 180 def HandleResults(self, results):
173 if results.failures or results.skipped_values: 181 if results.failures or results.skipped_values:
174 logging.warning('Some pages failed and/or were skipped. The recording ' 182 logging.warning('Some pages failed and/or were skipped. The recording '
175 'has not been updated for these pages.') 183 'has not been updated for these pages.')
176 results.PrintSummary() 184 results.PrintSummary()
177 self._page_set.wpr_archive_info.AddRecordedPages( 185 self._page_set.wpr_archive_info.AddRecordedPages(
178 results.pages_that_succeeded) 186 results.pages_that_succeeded)
179 187
180 188
181 def Main(base_dir): 189 def Main(base_dir):
182 quick_args = [a for a in sys.argv[1:] if not a.startswith('-')] 190 quick_args = [a for a in sys.argv[1:] if not a.startswith('-')]
183 if len(quick_args) != 1: 191 if len(quick_args) != 1:
184 print >> sys.stderr, 'Usage: record_wpr <PageSet|Benchmark>\n' 192 print >> sys.stderr, 'Usage: record_wpr <PageSet|Benchmark>\n'
185 sys.exit(1) 193 sys.exit(1)
186 target = quick_args.pop() 194 target = quick_args.pop()
187 wpr_recorder = WprRecorder(base_dir, target) 195 wpr_recorder = WprRecorder(base_dir, target)
188 results = wpr_recorder.Record() 196 results = wpr_recorder.CreateResults()
197 wpr_recorder.Record(results)
189 wpr_recorder.HandleResults(results) 198 wpr_recorder.HandleResults(results)
190 return min(255, len(results.failures)) 199 return min(255, len(results.failures))
OLDNEW
« no previous file with comments | « tools/telemetry/telemetry/page/profile_generator.py ('k') | tools/telemetry/telemetry/page/record_wpr_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698