| #!/usr/bin/env python |
| # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| import os |
| import re |
| import sys |
| |
| sys.path.append(os.path.join(os.path.dirname(__file__), '..')) |
| |
| from telemetry.core import browser_finder |
| from telemetry.core import browser_options |
| |
| def Main(args): |
| options = browser_options.BrowserOptions() |
| parser = options.CreateParser('rendering_microbenchmark_test.py <sitelist>') |
| # TODO(nduca): Add test specific options here, if any. |
| options, args = parser.parse_args(args) |
| if len(args) != 1: |
| parser.print_usage() |
| return 255 |
| |
| urls = [] |
| with open(args[0], 'r') as f: |
| for url in f.readlines(): |
| url = url.strip() |
| if not re.match('(.+)://', url): |
| url = 'http://%s' % url |
| urls.append(url) |
| |
| options.extra_browser_args.append('--enable-gpu-benchmarking') |
| browser_to_create = browser_finder.FindBrowser(options) |
| if not browser_to_create: |
| sys.stderr.write('No browser found! Supported types: %s' % |
| browser_finder.GetAllAvailableBrowserTypes(options)) |
| return 255 |
| with browser_to_create.Create() as b: |
| tab = b.tabs[0] |
| # Check browser for benchmark API. Can only be done on non-chrome URLs. |
| tab.Navigate('http://www.google.com') |
| import time |
| time.sleep(2) |
| tab.WaitForDocumentReadyStateToBeComplete() |
| if tab.EvaluateJavaScript('window.chrome.gpuBenchmarking === undefined'): |
| print 'Browser does not support gpu benchmarks API.' |
| return 255 |
| |
| if tab.EvaluateJavaScript( |
| 'window.chrome.gpuBenchmarking.runRenderingBenchmarks === undefined'): |
| print 'Browser does not support rendering benchmarks API.' |
| return 255 |
| |
| # Run the test. :) |
| first_line = [] |
| def DumpResults(url, results): |
| if len(first_line) == 0: |
| cols = ['url'] |
| for r in results: |
| cols.append(r['benchmark']) |
| print ','.join(cols) |
| first_line.append(0) |
| cols = [url] |
| for r in results: |
| cols.append(str(r['result'])) |
| print ','.join(cols) |
| |
| for u in urls: |
| tab.Navigate(u) |
| tab.WaitForDocumentReadyStateToBeInteractiveOrBetter() |
| results = tab.EvaluateJavaScript( |
| 'window.chrome.gpuBenchmarking.runRenderingBenchmarks();') |
| DumpResults(url, results) |
| |
| return 0 |
| |
| if __name__ == '__main__': |
| sys.exit(Main(sys.argv[1:])) |