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

Side by Side Diff: tools/android/loading/run_sandwich.py

Issue 1694253002: sandwich: Aggregates metrics per URLs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@d05
Patch Set: Addresses matt's nit Created 4 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
« no previous file with comments | « tools/android/loading/pull_sandwich_metrics_unittest.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 294 matching lines...) Expand 10 before | Expand all | Expand 10 after
305 305
306 if not os.path.isdir(args.output): 306 if not os.path.isdir(args.output):
307 try: 307 try:
308 os.makedirs(args.output) 308 os.makedirs(args.output)
309 except OSError: 309 except OSError:
310 logging.error('Cannot create directory for results: %s' % args.output) 310 logging.error('Cannot create directory for results: %s' % args.output)
311 raise 311 raise
312 else: 312 else:
313 _CleanPreviousTraces(args.output) 313 _CleanPreviousTraces(args.output)
314 314
315 run_infos = {
316 'cache-op': args.cache_op,
317 'job': args.job,
318 'urls': []
319 }
315 job_urls = _ReadUrlsFromJobDescription(args.job) 320 job_urls = _ReadUrlsFromJobDescription(args.job)
316 device = device_utils.DeviceUtils.HealthyDevices()[0] 321 device = device_utils.DeviceUtils.HealthyDevices()[0]
317 local_cache_archive_path = os.path.join(args.output, 'cache.zip') 322 local_cache_archive_path = os.path.join(args.output, 'cache.zip')
318 local_cache_directory_path = None 323 local_cache_directory_path = None
319 324
320 if args.cache_op == 'push': 325 if args.cache_op == 'push':
321 assert os.path.isfile(local_cache_archive_path) 326 assert os.path.isfile(local_cache_archive_path)
322 local_cache_directory_path = tempfile.mkdtemp(suffix='.cache') 327 local_cache_directory_path = tempfile.mkdtemp(suffix='.cache')
323 _UnzipDirectoryContent(local_cache_archive_path, local_cache_directory_path) 328 _UnzipDirectoryContent(local_cache_archive_path, local_cache_directory_path)
324 329
325 with device_setup.WprHost(device, args.wpr_archive, args.wpr_record, 330 with device_setup.WprHost(device, args.wpr_archive, args.wpr_record,
326 args.disable_wpr_script_injection) as additional_flags: 331 args.disable_wpr_script_injection) as additional_flags:
327 pages_loaded = 0
328 for _ in xrange(args.repeat): 332 for _ in xrange(args.repeat):
329 for url in job_urls: 333 for url in job_urls:
330 if args.cache_op == 'push': 334 if args.cache_op == 'push':
331 device.KillAll(_CHROME_PACKAGE, quiet=True) 335 device.KillAll(_CHROME_PACKAGE, quiet=True)
332 _PushBrowserCache(device, local_cache_directory_path) 336 _PushBrowserCache(device, local_cache_directory_path)
333 with device_setup.DeviceConnection( 337 with device_setup.DeviceConnection(
334 device=device, 338 device=device,
335 additional_flags=additional_flags) as connection: 339 additional_flags=additional_flags) as connection:
336 if (pages_loaded == 0 and args.cache_op == 'save' or 340 if (not run_infos['urls'] and args.cache_op == 'save' or
337 args.cache_op == 'clear'): 341 args.cache_op == 'clear'):
338 connection.ClearCache() 342 connection.ClearCache()
339 page_track.PageTrack(connection) 343 page_track.PageTrack(connection)
340 tracing_track = tracing.TracingTrack(connection, 344 tracing_track = tracing.TracingTrack(connection,
341 categories=pull_sandwich_metrics.CATEGORIES) 345 categories=pull_sandwich_metrics.CATEGORIES)
342 connection.SetUpMonitoring() 346 connection.SetUpMonitoring()
343 connection.SendAndIgnoreResponse('Page.navigate', {'url': url}) 347 connection.SendAndIgnoreResponse('Page.navigate', {'url': url})
344 connection.StartMonitoring() 348 connection.StartMonitoring()
345 pages_loaded += 1
346 _SaveChromeTrace(tracing_track.ToJsonDict(), args.output, 349 _SaveChromeTrace(tracing_track.ToJsonDict(), args.output,
347 str(pages_loaded)) 350 str(len(run_infos['urls'])))
351 run_infos['urls'].append(url)
348 352
349 if local_cache_directory_path: 353 if local_cache_directory_path:
350 shutil.rmtree(local_cache_directory_path) 354 shutil.rmtree(local_cache_directory_path)
351 355
352 if args.cache_op == 'save': 356 if args.cache_op == 'save':
353 # Move Chrome to background to allow it to flush the index. 357 # Move Chrome to background to allow it to flush the index.
354 device.adb.Shell('am start com.google.android.launcher') 358 device.adb.Shell('am start com.google.android.launcher')
355 time.sleep(_TIME_TO_DEVICE_IDLE_SECONDS) 359 time.sleep(_TIME_TO_DEVICE_IDLE_SECONDS)
356 device.KillAll(_CHROME_PACKAGE, quiet=True) 360 device.KillAll(_CHROME_PACKAGE, quiet=True)
357 time.sleep(_TIME_TO_DEVICE_IDLE_SECONDS) 361 time.sleep(_TIME_TO_DEVICE_IDLE_SECONDS)
358 362
359 cache_directory_path = _PullBrowserCache(device) 363 cache_directory_path = _PullBrowserCache(device)
360 _ZipDirectoryContent(cache_directory_path, local_cache_archive_path) 364 _ZipDirectoryContent(cache_directory_path, local_cache_archive_path)
361 shutil.rmtree(cache_directory_path) 365 shutil.rmtree(cache_directory_path)
362 366
367 with open(os.path.join(args.output, 'run_infos.json'), 'w') as file_output:
368 json.dump(run_infos, file_output, indent=2)
369
363 370
364 if __name__ == '__main__': 371 if __name__ == '__main__':
365 sys.exit(main()) 372 sys.exit(main())
OLDNEW
« no previous file with comments | « tools/android/loading/pull_sandwich_metrics_unittest.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698