def testWebglTestExpectationsForDriverTags(self): webgl_conformance_test_class = ( webgl_conformance_integration_test.WebGLConformanceIntegrationTest) expectations_driver_tags = set() for webgl_version in range(1, 3): _ = list( webgl_conformance_test_class.GenerateGpuTests( gpu_helper.GetMockArgs(webgl_version=('%d.0.0' % webgl_version)))) with open(webgl_conformance_test_class.ExpectationsFiles()[0], 'r') as f: parser = expectations_parser.TestExpectations() parser.parse_tagged_list(f.read(), f.name) driver_tag_set = set() for tag_set in parser.tag_sets: if gpu_helper.MatchDriverTag(list(tag_set)[0]): for tag in tag_set: match = gpu_helper.MatchDriverTag(tag) self.assertIsNotNone(match) if match.group(1) == 'intel': self.assertTrue( check_intel_driver_version(match.group(3))) self.assertSetEqual(driver_tag_set, set()) driver_tag_set = tag_set else: for tag in tag_set: self.assertIsNone(gpu_helper.MatchDriverTag(tag)) expectations_driver_tags |= driver_tag_set self.assertEqual(gpu_helper.ExpectationsDriverTags(), expectations_driver_tags)
def testWebglTestExpectationsForDriverTags(self): webgl_conformance_test_class = ( webgl_conformance_integration_test.WebGLConformanceIntegrationTest) expectations_driver_tags = set() for i in range(1, 3): _ = list( webgl_conformance_test_class.GenerateGpuTests( gpu_helper.GetMockArgs(webgl_version=('%d.0.0' % i)))) with open(webgl_conformance_test_class.ExpectationsFiles()[0], 'r') as f: parser = expectations_parser.TestExpectations() parser.parse_tagged_list(f.read(), f.name) driver_tag_set = set() for tag_set in parser.tag_sets: if gpu_helper.MatchDriverTag(list(tag_set)[0]): for tag in tag_set: assert gpu_helper.MatchDriverTag(tag) assert not driver_tag_set driver_tag_set = tag_set else: for tag in tag_set: assert not gpu_helper.MatchDriverTag(tag) expectations_driver_tags |= driver_tag_set self.assertEqual(gpu_helper.ExpectationsDriverTags(), expectations_driver_tags)
def testWebglTestExpectationsForDriverTags(self): webgl_conformance_test_class = ( webgl_conformance_integration_test.WebGLConformanceIntegrationTest) expectations_driver_tags = set() for webgl_version in range(1, 3): _ = list( webgl_conformance_test_class.GenerateGpuTests( gpu_helper.GetMockArgs(webgl_version=('%d.0.0' % webgl_version)))) with open(webgl_conformance_test_class.ExpectationsFiles()[0], 'r') as f: parser = expectations_parser.TestExpectations() parser.parse_tagged_list(f.read(), f.name) driver_tag_set = set() for tag_set in parser.tag_sets: if gpu_helper.MatchDriverTag(list(tag_set)[0]): for tag in tag_set: match = gpu_helper.MatchDriverTag(tag) assert match if match.group(1) == 'intel': if not check_intel_driver_version( match.group(3)): assert False, INTEL_DRIVER_VERSION_SCHEMA assert not driver_tag_set driver_tag_set = tag_set else: for tag in tag_set: assert not gpu_helper.MatchDriverTag(tag) expectations_driver_tags |= driver_tag_set self.assertEqual(gpu_helper.ExpectationsDriverTags(), expectations_driver_tags)
def _IsDriverTagDuplicated(driver_tag1, driver_tag2): if driver_tag1 == driver_tag2: return True match = gpu_helper.MatchDriverTag(driver_tag1) tag1 = (match.group(1), match.group(2), match.group(3)) match = gpu_helper.MatchDriverTag(driver_tag2) tag2 = (match.group(1), match.group(2), match.group(3)) if not tag1[0] == tag2[0]: return False operation1, version1 = tag1[1:] operation2, version2 = tag2[1:] if operation1 == 'ne': return not (operation2 == 'eq' and version1 == version2) elif operation2 == 'ne': return not (operation1 == 'eq' and version1 == version2) elif operation1 == 'eq': return gpu_helper.EvaluateVersionComparison(version1, operation2, version2) elif operation2 == 'eq': return gpu_helper.EvaluateVersionComparison(version2, operation1, version1) if operation1 == 'ge' or operation1 == 'gt': if operation2 == 'ge' or operation2 == 'gt': return True elif operation1 == 'le' or operation1 == 'lt': if operation2 == 'le' or operation2 == 'lt': return True if operation1 == 'ge': if operation2 == 'le': return not gpu_helper.EvaluateVersionComparison( version1, 'gt', version2) elif operation2 == 'lt': return not gpu_helper.EvaluateVersionComparison( version1, 'ge', version2) elif operation1 == 'gt': return not gpu_helper.EvaluateVersionComparison( version1, 'ge', version2) elif operation1 == 'le': if operation2 == 'ge': return not gpu_helper.EvaluateVersionComparison( version1, 'lt', version2) elif operation2 == 'gt': return not gpu_helper.EvaluateVersionComparison( version1, 'le', version2) elif operation1 == 'lt': return not gpu_helper.EvaluateVersionComparison( version1, 'le', version2) else: assert False
def GetPlatformTags(cls, browser): tags = super(WebGLConformanceIntegrationTest, cls).GetPlatformTags(browser) tags.extend([['no-asan', 'asan'][cls._is_asan], 'webgl-version-%d' % cls._webgl_version]) if gpu_helper.EXPECTATIONS_DRIVER_TAGS: system_info = browser.GetSystemInfo() if system_info: gpu_info = system_info.gpu driver_vendor = gpu_helper.GetGpuDriverVendor(gpu_info) driver_version = gpu_helper.GetGpuDriverVersion(gpu_info) if driver_vendor and driver_version: driver_vendor = driver_vendor.lower() driver_version = driver_version.lower() # Extract the substring before first space/dash/underscore matcher = re.compile(r'^([a-z\d]+)([\s\-_]+[a-z\d]+)+$') match = matcher.match(driver_vendor) if match: driver_vendor = match.group(1) for tag in gpu_helper.EXPECTATIONS_DRIVER_TAGS: match = gpu_helper.MatchDriverTag(tag) assert match if (driver_vendor == match.group(1) and gpu_helper.EvaluateVersionComparison( driver_version, match.group(2), match.group(3))): tags.append(tag) return tags
def _DoTagsConflict(t1, t2): if gpu_helper.MatchDriverTag(t1): return not _IsDriverTagDuplicated(t1, t2) else: return (t1 != t2 and t1 != _map_specific_to_generic.get(t2, t2) and t2 != _map_specific_to_generic.get(t1, t1))