1 # Copyright 2013 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 5 """Runs a Google Maps performance test. 6 Rerforms several common navigation actions on the map (pan, zoom, rotate)""" 7 8 import os 9 import re 10 11 from telemetry import benchmark 12 from telemetry.core import util 13 from telemetry.page import page as page_module 14 from telemetry.page import page_set as page_set_module 15 from telemetry.page import page_test 16 from telemetry.value import scalar 17 18 19 class _MapsMeasurement(page_test.PageTest): 20 def ValidateAndMeasurePage(self, page, tab, results): 21 js_get_results = 'document.getElementsByTagName("pre")[0].innerText' 22 test_results = tab.EvaluateJavaScript(js_get_results) 23 24 total = re.search('total=([0-9]+)', test_results).group(1) 25 render = re.search('render=([0-9.]+),([0-9.]+)', test_results).group(2) 26 results.AddValue(scalar.ScalarValue( 27 results.current_page, 'total_time', 'ms', total)) 28 results.AddValue(scalar.ScalarValue( 29 results.current_page, 'render_mean_time', 'ms', render)) 30 31 class MapsPage(page_module.Page): 32 def __init__(self, page_set, base_dir): 33 super(MapsPage, self).__init__( 34 url='http://localhost:10020/tracker.html', 35 page_set=page_set, 36 base_dir=base_dir) 37 38 def RunNavigateSteps(self, action_runner): 39 action_runner.NavigateToPage(self) 40 action_runner.WaitForJavaScriptCondition('window.testDone') 41 42 43 @benchmark.Disabled 44 class MapsBenchmark(benchmark.Benchmark): 45 """Basic Google Maps benchmarks.""" 46 test = _MapsMeasurement 47 48 def CreatePageSet(self, options): 49 page_set_path = os.path.join( 50 util.GetChromiumSrcDir(), 'tools', 'perf', 'page_sets') 51 ps = page_set_module.PageSet( 52 archive_data_file='data/maps.json', 53 make_javascript_deterministic=False, 54 file_path=page_set_path) 55 ps.AddPage(MapsPage(ps, ps.base_dir)) 56 return ps 57 58 class MapsNoVsync(MapsBenchmark): 59 """Runs the Google Maps benchmark with Vsync disabled""" 60 tag = 'novsync' 61 62 def CustomizeBrowserOptions(self, options): 63 options.AppendExtraBrowserArgs('--disable-gpu-vsync') 64