OLD | NEW |
1 # Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 import os | 5 import os |
6 | 6 |
| 7 from measurements import PageTestMeasurement |
7 from telemetry import benchmark | 8 from telemetry import benchmark |
8 from telemetry.core import util | 9 from telemetry.core import util |
9 from telemetry.page import page_set | 10 from telemetry.page import page_set |
10 from telemetry.page import page_test | |
11 from telemetry.value import list_of_scalar_values | 11 from telemetry.value import list_of_scalar_values |
12 | 12 |
13 | 13 |
14 BLINK_PERF_BASE_DIR = os.path.join(util.GetChromiumSrcDir(), | 14 BLINK_PERF_BASE_DIR = os.path.join(util.GetChromiumSrcDir(), |
15 'third_party', 'WebKit', 'PerformanceTests') | 15 'third_party', 'WebKit', 'PerformanceTests') |
16 SKIPPED_FILE = os.path.join(BLINK_PERF_BASE_DIR, 'Skipped') | 16 SKIPPED_FILE = os.path.join(BLINK_PERF_BASE_DIR, 'Skipped') |
17 | 17 |
18 | 18 |
19 def _CreatePageSetFromPath(path, skipped_file): | 19 def _CreatePageSetFromPath(path, skipped_file): |
20 assert os.path.exists(path) | 20 assert os.path.exists(path) |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
52 skipped.append(skipped_path.replace('/', os.sep)) | 52 skipped.append(skipped_path.replace('/', os.sep)) |
53 _AddDir(path, tuple(skipped)) | 53 _AddDir(path, tuple(skipped)) |
54 else: | 54 else: |
55 _AddPage(path) | 55 _AddPage(path) |
56 ps = page_set.PageSet(file_path=os.getcwd()+os.sep, serving_dirs=serving_dirs) | 56 ps = page_set.PageSet(file_path=os.getcwd()+os.sep, serving_dirs=serving_dirs) |
57 for url in page_urls: | 57 for url in page_urls: |
58 ps.AddPageWithDefaultRunNavigate(url) | 58 ps.AddPageWithDefaultRunNavigate(url) |
59 return ps | 59 return ps |
60 | 60 |
61 | 61 |
62 class _BlinkPerfMeasurement(page_test.PageTest): | 62 class _BlinkPerfMeasurement(PageTestMeasurement): |
63 """Tuns a blink performance test and reports the results.""" | 63 """Tuns a blink performance test and reports the results.""" |
64 def __init__(self): | 64 def __init__(self): |
65 super(_BlinkPerfMeasurement, self).__init__('') | 65 super(_BlinkPerfMeasurement, self).__init__('') |
66 with open(os.path.join(os.path.dirname(__file__), | 66 with open(os.path.join(os.path.dirname(__file__), |
67 'blink_perf.js'), 'r') as f: | 67 'blink_perf.js'), 'r') as f: |
68 self._blink_perf_js = f.read() | 68 self._blink_perf_js = f.read() |
69 | 69 |
70 def WillNavigateToPage(self, page, tab): | 70 def WillNavigateToPage(self, page, tab): |
71 page.script_to_evaluate_on_commit = self._blink_perf_js | 71 page.script_to_evaluate_on_commit = self._blink_perf_js |
72 | 72 |
73 def CustomizeBrowserOptions(self, options): | 73 def CustomizeBrowserOptions(self, options): |
| 74 super(_BlinkPerfMeasurement, self).CustomizeBrowserOptions(options) |
74 options.AppendExtraBrowserArgs([ | 75 options.AppendExtraBrowserArgs([ |
75 '--js-flags=--expose_gc', | 76 '--js-flags=--expose_gc', |
76 '--enable-experimental-web-platform-features', | 77 '--enable-experimental-web-platform-features', |
77 '--disable-gesture-requirement-for-media-playback' | 78 '--disable-gesture-requirement-for-media-playback' |
78 ]) | 79 ]) |
79 | 80 |
80 def ValidateAndMeasurePage(self, page, tab, results): | 81 def ValidateAndMeasurePage(self, page, tab, results): |
| 82 super(_BlinkPerfMeasurement, self).ValidateAndMeasurePage( |
| 83 page, tab, results) |
81 tab.WaitForJavaScriptExpression('testRunner.isDone', 600) | 84 tab.WaitForJavaScriptExpression('testRunner.isDone', 600) |
82 | 85 |
83 log = tab.EvaluateJavaScript('document.getElementById("log").innerHTML') | 86 log = tab.EvaluateJavaScript('document.getElementById("log").innerHTML') |
84 | 87 |
85 for line in log.splitlines(): | 88 for line in log.splitlines(): |
86 if not line.startswith('values '): | 89 if not line.startswith('values '): |
87 continue | 90 continue |
88 parts = line.split() | 91 parts = line.split() |
89 values = [float(v.replace(',', '')) for v in parts[1:-1]] | 92 values = [float(v.replace(',', '')) for v in parts[1:-1]] |
90 units = parts[-1] | 93 units = parts[-1] |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
205 return _CreatePageSetFromPath(path, SKIPPED_FILE) | 208 return _CreatePageSetFromPath(path, SKIPPED_FILE) |
206 | 209 |
207 | 210 |
208 class BlinkPerfXMLHttpRequest(benchmark.Benchmark): | 211 class BlinkPerfXMLHttpRequest(benchmark.Benchmark): |
209 tag = 'xml_http_request' | 212 tag = 'xml_http_request' |
210 test = _BlinkPerfMeasurement | 213 test = _BlinkPerfMeasurement |
211 | 214 |
212 def CreatePageSet(self, options): | 215 def CreatePageSet(self, options): |
213 path = os.path.join(BLINK_PERF_BASE_DIR, 'XMLHttpRequest') | 216 path = os.path.join(BLINK_PERF_BASE_DIR, 'XMLHttpRequest') |
214 return _CreatePageSetFromPath(path, SKIPPED_FILE) | 217 return _CreatePageSetFromPath(path, SKIPPED_FILE) |
OLD | NEW |