Merge gerrit/vulkan-cts-1.0.1 into gerrit/vulkan-cts-1.0-dev
[platform/upstream/VK-GL-CTS.git] / scripts / mustpass.py
index 4722c75..33b123d 100644 (file)
@@ -30,7 +30,7 @@ from copy import copy
 import xml.etree.cElementTree as ElementTree
 import xml.dom.minidom as minidom
 
-APK_NAME               = "com.drawelements.deqp.apk"
+APK_NAME               = "com.drawelements.deqp.apk"
 
 GENERATED_FILE_WARNING = """
      This file has been automatically generated. Edit with caution.
@@ -42,12 +42,14 @@ class Project:
                self.copyright  = copyright
 
 class Configuration:
-       def __init__ (self, name, filters, glconfig = None, rotation = None, surfacetype = None):
-               self.name                       = name
-               self.glconfig           = glconfig
-               self.rotation           = rotation
-               self.surfacetype        = surfacetype
-               self.filters            = filters
+       def __init__ (self, name, filters, glconfig = None, rotation = None, surfacetype = None, required = False, runtime = None):
+               self.name                               = name
+               self.glconfig                   = glconfig
+               self.rotation                   = rotation
+               self.surfacetype                = surfacetype
+               self.required                   = required
+               self.filters                    = filters
+               self.expectedRuntime    = runtime
 
 class Package:
        def __init__ (self, module, configurations):
@@ -280,71 +282,6 @@ def prettifyXML (doc):
        reparsed        = minidom.parseString(uglyString)
        return reparsed.toprettyxml(indent='\t', encoding='utf-8')
 
-def genCTSPackageXML (mustpass, package, root):
-       def isLeafGroup (testGroup):
-               numGroups       = 0
-               numTests        = 0
-
-               for child in testGroup.children:
-                       if isinstance(child, TestCase):
-                               numTests += 1
-                       else:
-                               numGroups += 1
-
-               assert numGroups + numTests > 0
-
-               if numGroups > 0 and numTests > 0:
-                       die("Mixed groups and cases in %s" % testGroup.name)
-
-               return numGroups == 0
-
-       def makeConfiguration (parentElem, config):
-               attributes = {}
-
-               if config.glconfig != None:
-                       attributes['glconfig'] = config.glconfig
-
-               if config.rotation != None:
-                       attributes['rotation'] = config.rotation
-
-               if config.surfacetype != None:
-                       attributes['surfacetype'] = config.surfacetype
-
-               return ElementTree.SubElement(parentElem, "TestInstance", attributes)
-
-       def makeTestCase (parentElem, testCase):
-               caseElem = ElementTree.SubElement(parentElem, "Test", name=testCase.name)
-               for config in testCase.configurations:
-                       makeConfiguration(caseElem, config)
-               return caseElem
-
-       def makeTestGroup (parentElem, testGroup):
-               groupElem = ElementTree.SubElement(parentElem, "TestCase" if isLeafGroup(testGroup) else "TestSuite", name=testGroup.name)
-               for child in testGroup.children:
-                       if isinstance(child, TestCase):
-                               makeTestCase(groupElem, child)
-                       else:
-                               makeTestGroup(groupElem, child)
-               return groupElem
-
-       pkgElem = ElementTree.Element("TestPackage",
-                                                                 name                          = package.module.name,
-                                                                 appPackageName        = getCTSPackageName(package),
-                                                                 testType                      = "deqpTest")
-
-       pkgElem.set("xmlns:deqp", "http://drawelements.com/deqp")
-       insertXMLHeaders(mustpass, pkgElem)
-
-       glesVersion = getModuleGLESVersion(package.module)
-
-       if glesVersion != None:
-               pkgElem.set("deqp:glesVersion", str(glesVersion.encode()))
-
-       for child in root.children:
-               makeTestGroup(pkgElem, child)
-
-       return pkgElem
-
 def genSpecXML (mustpass):
        mustpassElem = ElementTree.Element("Mustpass", version = mustpass.version)
        insertXMLHeaders(mustpass, mustpassElem)
@@ -364,13 +301,8 @@ def addOptionElement (parent, optionName, optionValue):
        ElementTree.SubElement(parent, "option", name=optionName, value=optionValue)
 
 def genAndroidTestXml (mustpass):
-       INSTALLER_CLASS = "com.android.compatibility.common.tradefed.targetprep.ApkInstaller"
        RUNNER_CLASS = "com.drawelements.deqp.runner.DeqpTestRunner"
        configElement = ElementTree.Element("configuration")
-       preparerElement = ElementTree.SubElement(configElement, "target_preparer")
-       preparerElement.set("class", INSTALLER_CLASS)
-       addOptionElement(preparerElement, "cleanup-apks", "true")
-       addOptionElement(preparerElement, "test-file-name", APK_NAME)
 
        for package in mustpass.packages:
                for config in package.configurations:
@@ -388,6 +320,12 @@ def genAndroidTestXml (mustpass):
                        if config.rotation != None:
                                addOptionElement(testElement, "deqp-screen-rotation", config.rotation)
 
+                       if config.expectedRuntime != None:
+                               addOptionElement(testElement, "runtime-hint", config.expectedRuntime)
+
+                       if config.required:
+                               addOptionElement(testElement, "deqp-config-required", "true")
+
        insertXMLHeaders(mustpass, configElement)
 
        return configElement
@@ -398,9 +336,7 @@ def genMustpass (mustpass, moduleCaseLists):
        patternLists = readPatternLists(mustpass)
 
        for package in mustpass.packages:
-               allCasesInPkg           = moduleCaseLists[package.module]
-               matchingByConfig        = {}
-               allMatchingSet          = set()
+               allCasesInPkg   = moduleCaseLists[package.module]
 
                for config in package.configurations:
                        filtered        = applyFilters(allCasesInPkg, patternLists, config.filters)
@@ -409,24 +345,6 @@ def genMustpass (mustpass, moduleCaseLists):
                        print "  Writing deqp caselist: " + dstFile
                        writeFile(dstFile, "\n".join(filtered) + "\n")
 
-                       matchingByConfig[config]        = filtered
-                       allMatchingSet                          = allMatchingSet | set(filtered)
-
-               allMatchingCases        = [c for c in allCasesInPkg if c in allMatchingSet] # To preserve ordering
-               root                            = buildTestHierachy(allMatchingCases)
-               testCaseMap                     = buildTestCaseMap(root)
-
-               for config in package.configurations:
-                       for case in matchingByConfig[config]:
-                               testCaseMap[case].configurations.append(config)
-
-               # NOTE: CTS v2 does not need package XML files. Remove when transition is complete.
-               packageXml      = genCTSPackageXML(mustpass, package, root)
-               xmlFilename     = os.path.join(mustpass.project.path, mustpass.version, getCTSPackageName(package) + ".xml")
-
-               print "  Writing CTS caselist: " + xmlFilename
-               writeFile(xmlFilename, prettifyXML(packageXml))
-
        specXML                 = genSpecXML(mustpass)
        specFilename    = os.path.join(mustpass.project.path, mustpass.version, "mustpass.xml")