1f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)# Copyright 2013 The Chromium Authors. All rights reserved. 2f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be 3f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)# found in the LICENSE file. 4f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 5f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)"""Runs a Google Maps performance test. 6f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)Rerforms several common navigation actions on the map (pan, zoom, rotate)""" 7f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 8f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)import os 9f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)import re 10f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 11f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)from telemetry import test 12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)from telemetry.core import util 13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)from telemetry.page import page_measurement 14f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)from telemetry.page import page_set 15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class MapsMeasurement(page_measurement.PageMeasurement): 17f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) def MeasurePage(self, page, tab, results): 18f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) js_get_results = 'document.getElementsByTagName("pre")[0].innerText' 19f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) test_results = tab.EvaluateJavaScript(js_get_results) 20f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 21f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) total = re.search('total=([0-9]+)', test_results).group(1) 22f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) render = re.search('render=([0-9.]+),([0-9.]+)', test_results).group(2) 23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) results.Add('total_time', 'ms', total) 24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) results.Add('render_mean_time', 'ms', render) 25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 26f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class MapsBenchmark(test.Test): 27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) """Basic Google Maps benchmarks.""" 28f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) test = MapsMeasurement 29f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) enabled = False 30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) def CreatePageSet(self, options): 32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) page_set_path = os.path.join( 33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) util.GetChromiumSrcDir(), 'tools', 'perf', 'page_sets') 34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) page_set_dict = { 35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 'archive_data_file': 'data/maps.json', 36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 'make_javascript_deterministic': False, 37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 'pages': [ 38f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) { 39f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 'url': 'http://localhost:10020/tracker.html', 40f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 'navigate_steps' : [ 41f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) { 'action': 'navigate' }, 42f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) { 'action': 'wait', 'javascript': 'window.testDone' } 43f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) ] 44f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 45f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) ] 46f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 47f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 48f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return page_set.PageSet.FromDict(page_set_dict, page_set_path) 49f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 50f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class MapsNoVsync(MapsBenchmark): 51f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) """Runs the Google Maps benchmark with Vsync disabled""" 52f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) tag = 'novsync' 53f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 54f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) def CustomizeBrowserOptions(self, options): 55f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) options.AppendExtraBrowserArgs('--disable-gpu-vsync') 56