OLD | NEW |
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2012 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 import json | |
5 import optparse | |
6 import os | 4 import os |
7 import sys | |
8 | 5 |
9 import gpu_test_base | 6 from gpu_tests import gpu_test_base |
10 import path_util | 7 from gpu_tests import path_util |
11 import webgl_conformance_expectations | 8 from gpu_tests import webgl_conformance_expectations |
12 import webgl2_conformance_expectations | 9 from gpu_tests import webgl2_conformance_expectations |
13 | 10 |
14 from telemetry.internal.browser import browser_finder | 11 from telemetry.internal.browser import browser_finder |
15 from telemetry.page import page_test | 12 from telemetry.page import page_test |
16 from telemetry.page import shared_page_state | |
17 from telemetry.story.story_set import StorySet | 13 from telemetry.story.story_set import StorySet |
18 | 14 |
19 | 15 |
20 conformance_path = os.path.join( | 16 conformance_path = os.path.join( |
21 path_util.GetChromiumSrcDir(), | 17 path_util.GetChromiumSrcDir(), |
22 'third_party', 'webgl', 'src', 'sdk', 'tests') | 18 'third_party', 'webgl', 'src', 'sdk', 'tests') |
23 | 19 |
24 conformance_harness_script = r""" | 20 conformance_harness_script = r""" |
25 var testHarness = {}; | 21 var testHarness = {}; |
26 testHarness._allTestSucceeded = true; | 22 testHarness._allTestSucceeded = true; |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
86 # infobar, which causes flakiness in tests. | 82 # infobar, which causes flakiness in tests. |
87 options.AppendExtraBrowserArgs([ | 83 options.AppendExtraBrowserArgs([ |
88 '--disable-gesture-requirement-for-media-playback', | 84 '--disable-gesture-requirement-for-media-playback', |
89 '--disable-domain-blocking-for-3d-apis', | 85 '--disable-domain-blocking-for-3d-apis', |
90 '--disable-gpu-process-crash-limit', | 86 '--disable-gpu-process-crash-limit', |
91 '--js-flags=--expose-gc', | 87 '--js-flags=--expose-gc', |
92 '--test-type=gpu' | 88 '--test-type=gpu' |
93 ]) | 89 ]) |
94 browser = browser_finder.FindBrowser(options.finder_options) | 90 browser = browser_finder.FindBrowser(options.finder_options) |
95 if (browser.target_os.startswith('android') and | 91 if (browser.target_os.startswith('android') and |
96 browser.browser_type == 'android-webview-shell'): | 92 browser.browser_type == 'android-webview-shell'): |
97 # TODO(kbr): this is overly broad. We'd like to do this only on | 93 # TODO(kbr): this is overly broad. We'd like to do this only on |
98 # Nexus 9. It'll go away shortly anyway. crbug.com/499928 | 94 # Nexus 9. It'll go away shortly anyway. crbug.com/499928 |
99 # | 95 # |
100 # The --ignore_egl_sync_failures is only there to work around | 96 # The --ignore_egl_sync_failures is only there to work around |
101 # some strange failure on the Nexus 9 bot, not reproducible on | 97 # some strange failure on the Nexus 9 bot, not reproducible on |
102 # local hardware. | 98 # local hardware. |
103 options.AppendExtraBrowserArgs([ | 99 options.AppendExtraBrowserArgs([ |
104 '--disable-gl-extensions=GL_EXT_disjoint_timer_query', | 100 '--disable-gl-extensions=GL_EXT_disjoint_timer_query', |
105 '--ignore_egl_sync_failures' | 101 '--ignore_egl_sync_failures', |
106 ]) | 102 ]) |
107 | 103 |
108 | 104 |
109 class Webgl2ConformanceValidator(WebglConformanceValidator): | 105 class Webgl2ConformanceValidator(WebglConformanceValidator): |
110 def __init__(self): | 106 def __init__(self): |
111 super(Webgl2ConformanceValidator, self).__init__() | 107 super(Webgl2ConformanceValidator, self).__init__() |
112 | 108 |
113 def CustomizeBrowserOptions(self, options): | 109 def CustomizeBrowserOptions(self, options): |
114 # --test-type=gpu is used only to suppress the "Google API Keys are missing" | 110 # --test-type=gpu is used only to suppress the "Google API Keys are missing" |
115 # infobar, which causes flakiness in tests. | 111 # infobar, which causes flakiness in tests. |
116 options.AppendExtraBrowserArgs([ | 112 options.AppendExtraBrowserArgs([ |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
180 | 176 |
181 ps = StorySet(serving_dirs=[''], base_dir=conformance_path) | 177 ps = StorySet(serving_dirs=[''], base_dir=conformance_path) |
182 | 178 |
183 expectations = self.GetExpectations() | 179 expectations = self.GetExpectations() |
184 for test in tests: | 180 for test in tests: |
185 ps.AddStory(WebglConformancePage(ps, test, expectations)) | 181 ps.AddStory(WebglConformancePage(ps, test, expectations)) |
186 | 182 |
187 return ps | 183 return ps |
188 | 184 |
189 def _CreateExpectations(self): | 185 def _CreateExpectations(self): |
190 assert (self._webgl_version == 1 or self._webgl_version == 2) | 186 assert self._webgl_version == 1 or self._webgl_version == 2 |
191 if self._webgl_version == 1: | 187 if self._webgl_version == 1: |
192 return webgl_conformance_expectations.WebGLConformanceExpectations( | 188 return webgl_conformance_expectations.WebGLConformanceExpectations( |
193 conformance_path) | 189 conformance_path) |
194 else: | 190 else: |
195 return webgl2_conformance_expectations.WebGL2ConformanceExpectations( | 191 return webgl2_conformance_expectations.WebGL2ConformanceExpectations( |
196 conformance_path) | 192 conformance_path) |
197 | 193 |
198 @staticmethod | 194 @staticmethod |
199 def _ParseTests(path, version, webgl2_only, folder_min_version): | 195 def _ParseTests(path, version, webgl2_only, folder_min_version): |
200 test_paths = [] | 196 test_paths = [] |
(...skipping 26 matching lines...) Expand all Loading... |
227 i += 1 | 223 i += 1 |
228 min_version = line_tokens[i] | 224 min_version = line_tokens[i] |
229 i += 1 | 225 i += 1 |
230 | 226 |
231 min_version_to_compare = min_version or folder_min_version | 227 min_version_to_compare = min_version or folder_min_version |
232 | 228 |
233 if (min_version_to_compare and | 229 if (min_version_to_compare and |
234 _CompareVersion(version, min_version_to_compare) < 0): | 230 _CompareVersion(version, min_version_to_compare) < 0): |
235 continue | 231 continue |
236 | 232 |
237 if (webgl2_only and (not ('.txt' in test_name)) and | 233 if (webgl2_only and not '.txt' in test_name and |
238 ((not min_version_to_compare) or | 234 (not min_version_to_compare or |
239 (not min_version_to_compare.startswith('2')))): | 235 not min_version_to_compare.startswith('2'))): |
240 continue | 236 continue |
241 | 237 |
242 if '.txt' in test_name: | 238 if '.txt' in test_name: |
243 include_path = os.path.join(current_dir, test_name) | 239 include_path = os.path.join(current_dir, test_name) |
244 # We only check min-version >= 2.0.0 for the top level list. | 240 # We only check min-version >= 2.0.0 for the top level list. |
245 test_paths += WebglConformance._ParseTests( | 241 test_paths += WebglConformance._ParseTests( |
246 include_path, version, webgl2_only, min_version_to_compare) | 242 include_path, version, webgl2_only, min_version_to_compare) |
247 else: | 243 else: |
248 test = os.path.join(current_dir, test_name) | 244 test = os.path.join(current_dir, test_name) |
249 if webgl_version > 1: | 245 if webgl_version > 1: |
250 test += '?webglVersion=' + str(webgl_version) | 246 test += '?webglVersion=' + str(webgl_version) |
251 test_paths.append(test) | 247 test_paths.append(test) |
252 | 248 |
253 return test_paths | 249 return test_paths |
OLD | NEW |