upload android base code part4
This commit is contained in:
parent
b9e30e05b1
commit
78ea2404cd
23455 changed files with 5250148 additions and 0 deletions
89
android/cts/tools/utils/rerun.py
Normal file
89
android/cts/tools/utils/rerun.py
Normal file
|
@ -0,0 +1,89 @@
|
|||
#!/usr/bin/env python
|
||||
#
|
||||
# Copyright (C) 2012 The Android Open Source Project
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the 'License');
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an 'AS IS' BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
import os
|
||||
import sys
|
||||
from xml.dom import Node
|
||||
from xml.dom import minidom
|
||||
|
||||
def getChildrenWithTag(parent, tagName):
|
||||
children = []
|
||||
for child in parent.childNodes:
|
||||
if (child.nodeType == Node.ELEMENT_NODE) and (child.tagName == tagName):
|
||||
#print "parent " + parent.getAttribute("name") + " " + tagName +\
|
||||
# " " + child.getAttribute("name")
|
||||
children.append(child)
|
||||
return children
|
||||
|
||||
def parseSuite(suite, parentName):
|
||||
if parentName != "":
|
||||
parentName += '.'
|
||||
failedCases = []
|
||||
childSuites = getChildrenWithTag(suite, "TestSuite")
|
||||
for child in childSuites:
|
||||
for failure in parseSuite(child, parentName + child.getAttribute("name")):
|
||||
failedCases.append(failure)
|
||||
childTestCases = getChildrenWithTag(suite, "TestCase")
|
||||
for child in childTestCases:
|
||||
className = parentName + child.getAttribute("name")
|
||||
for test in getChildrenWithTag(child, "Test"):
|
||||
if test.getAttribute("result") != "pass":
|
||||
failureName = className + "#" + test.getAttribute("name")
|
||||
failedCases.append(failureName)
|
||||
#if len(failedCases) > 0:
|
||||
# print failedCases
|
||||
return failedCases
|
||||
|
||||
def getFailedCases(resultXml):
|
||||
failedCases = []
|
||||
doc = minidom.parse(resultXml)
|
||||
testResult = doc.getElementsByTagName("TestResult")[0]
|
||||
packages = getChildrenWithTag(testResult, "TestPackage")
|
||||
for package in packages:
|
||||
casesFromChild = parseSuite(package, "")
|
||||
for case in casesFromChild:
|
||||
if case not in failedCases:
|
||||
failedCases.append(case)
|
||||
|
||||
return failedCases
|
||||
|
||||
def main(argv):
|
||||
if len(argv) < 3:
|
||||
print "rerun.py cts_path result_xml [-s serial]"
|
||||
print " cts_path should end with android-cts"
|
||||
sys.exit(1)
|
||||
ctsPath = os.path.abspath(argv[1])
|
||||
resultXml = os.path.abspath(argv[2])
|
||||
deviceSerial = ""
|
||||
if len(argv) > 3:
|
||||
if argv[3] == "-s":
|
||||
deviceSerial = argv[4]
|
||||
|
||||
failedCases = getFailedCases(resultXml)
|
||||
print "Re-run follwong cases:"
|
||||
for failure in failedCases:
|
||||
print " " + failure
|
||||
for failure in failedCases:
|
||||
[className, methodName] = failure.split('#')
|
||||
command = ctsPath + "/tools/cts-tradefed run singleCommand cts"
|
||||
if deviceSerial != "":
|
||||
command += " --serial " + deviceSerial
|
||||
command += " --class " + className + " --method " + methodName
|
||||
print command
|
||||
os.system(command)
|
||||
|
||||
if __name__ == '__main__':
|
||||
main(sys.argv)
|
Loading…
Add table
Add a link
Reference in a new issue