Esempio n. 1
0
    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)
Esempio n. 4
0
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
Esempio n. 5
0
    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
Esempio n. 6
0
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))