OLD | NEW |
1 #! /usr/bin/env python | 1 #! /usr/bin/env python |
2 # Copyright 2016 The Chromium Authors. All rights reserved. | 2 # Copyright 2016 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 | 5 |
6 """Instructs Chrome to load series of web pages and reports results. | 6 """Instructs Chrome to load series of web pages and reports results. |
7 | 7 |
8 When running Chrome is sandwiched between preprocessed disk caches and | 8 When running Chrome is sandwiched between preprocessed disk caches and |
9 WepPageReplay serving all connections. | 9 WepPageReplay serving all connections. |
10 """ | 10 """ |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
155 source_dir=args.source_dir, communication_dir=out_path) as server: | 155 source_dir=args.source_dir, communication_dir=out_path) as server: |
156 address = server.Address() | 156 address = server.Address() |
157 runner.url = 'http://%s/%s' % (address, args.page) | 157 runner.url = 'http://%s/%s' % (address, args.page) |
158 runner.Run() | 158 runner.Run() |
159 trace_path = os.path.join( | 159 trace_path = os.path.join( |
160 out_path, 'run', '0', sandwich_runner.TRACE_FILENAME) | 160 out_path, 'run', '0', sandwich_runner.TRACE_FILENAME) |
161 shutil.copy(trace_path, args.output) | 161 shutil.copy(trace_path, args.output) |
162 return 0 | 162 return 0 |
163 | 163 |
164 | 164 |
165 def _GenerateBenchmarkTasks(args, url, output_subdirectory): | 165 def _GenerateBenchmarkTasks(args, android_device, url, output_subdirectory): |
166 MAIN_TRANSFORMER_LIST_NAME = 'no-network-emulation' | 166 MAIN_TRANSFORMER_LIST_NAME = 'no-network-emulation' |
167 common_builder = sandwich_utils.SandwichCommonBuilder( | 167 common_builder = sandwich_utils.SandwichCommonBuilder( |
168 android_device=_GetAndroidDeviceFromArgs(args), | 168 android_device=android_device, |
169 url=url, | 169 url=url, |
170 output_directory=args.output, | 170 output_directory=args.output, |
171 output_subdirectory=output_subdirectory) | 171 output_subdirectory=output_subdirectory) |
172 if args.wpr_archive_path: | 172 if args.wpr_archive_path: |
173 common_builder.OverridePathToWprArchive(args.wpr_archive_path) | 173 common_builder.OverridePathToWprArchive(args.wpr_archive_path) |
174 else: | 174 else: |
175 common_builder.PopulateWprRecordingTask() | 175 common_builder.PopulateWprRecordingTask() |
176 | 176 |
177 def MainTransformer(runner): | 177 def MainTransformer(runner): |
178 runner.record_video = _SPEED_INDEX_MEASUREMENT in args.optional_measures | 178 runner.record_video = _SPEED_INDEX_MEASUREMENT in args.optional_measures |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
212 transformer_list = [MainTransformer, network_transformer] | 212 transformer_list = [MainTransformer, network_transformer] |
213 builder.PopulateBenchmark(enable_swr, transformer_list_name, | 213 builder.PopulateBenchmark(enable_swr, transformer_list_name, |
214 transformer_list) | 214 transformer_list) |
215 return common_builder.default_final_tasks | 215 return common_builder.default_final_tasks |
216 | 216 |
217 | 217 |
218 def _RunAllMain(args): | 218 def _RunAllMain(args): |
219 urls = ReadUrlsFromCorpus(args.corpus) | 219 urls = ReadUrlsFromCorpus(args.corpus) |
220 domain_times_encountered_per_domain = {} | 220 domain_times_encountered_per_domain = {} |
221 default_final_tasks = [] | 221 default_final_tasks = [] |
| 222 android_device = _GetAndroidDeviceFromArgs(args) |
222 for url in urls: | 223 for url in urls: |
223 domain = '.'.join(urlparse(url).netloc.split('.')[-2:]) | 224 domain = '.'.join(urlparse(url).netloc.split('.')[-2:]) |
224 domain_times_encountered = domain_times_encountered_per_domain.get( | 225 domain_times_encountered = domain_times_encountered_per_domain.get( |
225 domain, 0) | 226 domain, 0) |
226 output_subdirectory = '{}.{}'.format(domain, domain_times_encountered) | 227 output_subdirectory = '{}.{}'.format(domain, domain_times_encountered) |
227 domain_times_encountered_per_domain[domain] = domain_times_encountered + 1 | 228 domain_times_encountered_per_domain[domain] = domain_times_encountered + 1 |
228 default_final_tasks.extend( | 229 default_final_tasks.extend( |
229 _GenerateBenchmarkTasks(args, url, output_subdirectory)) | 230 _GenerateBenchmarkTasks(args, android_device, url, output_subdirectory)) |
230 return task_manager.ExecuteWithCommandLine(args, default_final_tasks) | 231 return task_manager.ExecuteWithCommandLine(args, default_final_tasks) |
231 | 232 |
232 | 233 |
233 def main(command_line_args): | 234 def main(command_line_args): |
234 logging.basicConfig(level=logging.INFO) | 235 logging.basicConfig(level=logging.INFO) |
235 devil_chromium.Initialize() | 236 devil_chromium.Initialize() |
236 | 237 |
237 args = _ArgumentParser().parse_args(command_line_args) | 238 args = _ArgumentParser().parse_args(command_line_args) |
238 OPTIONS.SetParsedArgs(args) | 239 OPTIONS.SetParsedArgs(args) |
239 | 240 |
240 if args.subcommand == 'record-test-trace': | 241 if args.subcommand == 'record-test-trace': |
241 return _RecordWebServerTestTrace(args) | 242 return _RecordWebServerTestTrace(args) |
242 if args.subcommand == 'run': | 243 if args.subcommand == 'run': |
243 return _RunAllMain(args) | 244 return _RunAllMain(args) |
244 if args.subcommand == 'collect-csv': | 245 if args.subcommand == 'collect-csv': |
245 with args.output_csv as output_file: | 246 with args.output_csv as output_file: |
246 if not csv_util.CollectCSVsFromDirectory(args.output_dir, output_file): | 247 if not csv_util.CollectCSVsFromDirectory(args.output_dir, output_file): |
247 return 1 | 248 return 1 |
248 return 0 | 249 return 0 |
249 assert False | 250 assert False |
250 | 251 |
251 | 252 |
252 if __name__ == '__main__': | 253 if __name__ == '__main__': |
253 sys.exit(main(sys.argv[1:])) | 254 sys.exit(main(sys.argv[1:])) |
OLD | NEW |