Initial change to add cts tests to runtest.

Adds cts test definitions to the testrunner/test_defs.xml.
Adds support for runtest --cts arg, which will run all cts tests.
This temporarily relies on the addition of a 'cts' attribute to the test
definition - a new xml format may be defined later that changes how cts tests
are identified.

This change is based on previous unsubmitted CL
https://android-git.corp.google.com/g/Gerrit#change,1702. The only delta wrt
to that change is the use of InstrumentationCtsTestRunner.

Update: rebased to latest donut.
This commit is contained in:
Brett Chabot
2009-06-02 11:46:04 -07:00
parent c825ab1d31
commit 49b77117fe
5 changed files with 190 additions and 5 deletions

View File

@@ -34,7 +34,7 @@ class AbortError(Exception):
"""Generic exception that indicates a fatal error has occurred and program """Generic exception that indicates a fatal error has occurred and program
execution should be aborted.""" execution should be aborted."""
def __init__(self, msg="AbortError"): def __init__(self, msg=""):
self.msg = msg self.msg = msg

View File

@@ -115,7 +115,10 @@ class TestRunner(object):
parser.add_option("--timeout", dest="timeout", parser.add_option("--timeout", dest="timeout",
default=300, help="Set a timeout limit (in sec) for " default=300, help="Set a timeout limit (in sec) for "
"running native tests on a device (default: 300 secs)") "running native tests on a device (default: 300 secs)")
parser.add_option("--cts", dest="cts_tests",
default=False, action="store_true",
help="Run all tests defined as part of the "
"compatibility test suite")
group = optparse.OptionGroup( group = optparse.OptionGroup(
parser, "Targets", "Use these options to direct tests to a specific " parser, "Targets", "Use these options to direct tests to a specific "
"Android target") "Android target")
@@ -129,8 +132,11 @@ class TestRunner(object):
self._options, self._test_args = parser.parse_args() self._options, self._test_args = parser.parse_args()
if (not self._options.only_list_tests and not self._options.all_tests if (not self._options.only_list_tests
and not self._options.continuous_tests and len(self._test_args) < 1): and not self._options.all_tests
and not self._options.continuous_tests
and not self._options.cts_tests
and len(self._test_args) < 1):
parser.print_help() parser.print_help()
logger.SilentLog("at least one test name must be specified") logger.SilentLog("at least one test name must be specified")
raise errors.AbortError raise errors.AbortError
@@ -229,8 +235,10 @@ class TestRunner(object):
"""Get a list of TestSuite objects to run, based on command line args.""" """Get a list of TestSuite objects to run, based on command line args."""
if self._options.all_tests: if self._options.all_tests:
return self._known_tests.GetTests() return self._known_tests.GetTests()
if self._options.continuous_tests: elif self._options.continuous_tests:
return self._known_tests.GetContinuousTests() return self._known_tests.GetContinuousTests()
elif self._options.cts_tests:
return self._known_tests.GetCtsTests()
tests = [] tests = []
for name in self._test_args: for name in self._test_args:
test = self._known_tests.GetTest(name) test = self._known_tests.GetTest(name)

View File

@@ -144,6 +144,14 @@ class TestDefinitions(object):
con_tests.append(test) con_tests.append(test)
return con_tests return con_tests
def GetCtsTests(self):
"""Return list of cts tests."""
cts_tests = []
for test in self.GetTests():
if test.IsCts():
cts_tests.append(test)
return cts_tests
def GetTest(self, name): def GetTest(self, name):
return self._testname_map.get(name, None) return self._testname_map.get(name, None)
@@ -157,6 +165,7 @@ class TestSuite(object):
_TARGET_ATTR = "coverage_target" _TARGET_ATTR = "coverage_target"
_BUILD_ATTR = "build_path" _BUILD_ATTR = "build_path"
_CONTINUOUS_ATTR = "continuous" _CONTINUOUS_ATTR = "continuous"
_CTS_ATTR = "cts"
_DESCRIPTION_ATTR = "description" _DESCRIPTION_ATTR = "description"
_EXTRA_MAKE_ARGS_ATTR = "extra_make_args" _EXTRA_MAKE_ARGS_ATTR = "extra_make_args"
@@ -199,6 +208,11 @@ class TestSuite(object):
self._continuous = suite_element.getAttribute(self._CONTINUOUS_ATTR) self._continuous = suite_element.getAttribute(self._CONTINUOUS_ATTR)
else: else:
self._continuous = False self._continuous = False
if suite_element.hasAttribute(self._CTS_ATTR):
self._cts = suite_element.getAttribute(self._CTS_ATTR)
else:
self._cts = False
if suite_element.hasAttribute(self._DESCRIPTION_ATTR): if suite_element.hasAttribute(self._DESCRIPTION_ATTR):
self._description = suite_element.getAttribute(self._DESCRIPTION_ATTR) self._description = suite_element.getAttribute(self._DESCRIPTION_ATTR)
else: else:
@@ -236,6 +250,10 @@ class TestSuite(object):
"""Returns true if test is flagged as being part of the continuous tests""" """Returns true if test is flagged as being part of the continuous tests"""
return self._continuous return self._continuous
def IsCts(self):
"""Returns true if test is part of the compatibility test suite"""
return self._cts
def IsNative(self): def IsNative(self):
"""Returns true if test is a native one.""" """Returns true if test is a native one."""
return self._native return self._native

View File

@@ -42,6 +42,8 @@ JAVA/application tests:
continuous: Optional boolean. Default is false. Set to true if tests are known continuous: Optional boolean. Default is false. Set to true if tests are known
to be reliable, and should be included in a continuous test system. false if to be reliable, and should be included in a continuous test system. false if
they are under development. they are under development.
cts: Optional boolean. Default is false. Set to true if test is included in
compatibility test suite.
description: Optional string. Default is empty. Short description (typically description: Optional string. Default is empty. Short description (typically
less than 60 characters) about this test. less than 60 characters) about this test.
@@ -166,6 +168,162 @@ Native tests:
coverage_target="framework" coverage_target="framework"
continuous="true" /> continuous="true" />
<!-- cts tests -->
<test name="cts-permission"
build_path="cts/tests"
package="com.android.cts.permission"
runner="android.test.InstrumentationCtsTestRunner"
coverage_target="framework"
continuous="true"
cts="true" />
<test name="cts-process"
build_path="cts/tests"
package="com.android.cts.process"
coverage_target="framework"
cts="true" />
<test name="cts-api-signature"
build_path="cts/tests"
package="android.tests.sigtest"
runner=".InstrumentationRunner"
cts="true" />
<test name="cts-api-signature-func"
build_path="cts/tests"
package="android.tests.sigtest.tests"
cts="true" />
<test name="cts-apidemos"
build_path="cts/tests"
package="android.apidemos.cts"
coverage_target="ApiDemos"
cts="true" />
<test name="cts-app"
build_path="cts/tests"
package="com.android.cts.app"
runner="android.test.InstrumentationCtsTestRunner"
coverage_target="framework"
cts="true" />
<test name="cts-content"
build_path="cts/tests"
package="com.android.cts.content"
runner="android.test.InstrumentationCtsTestRunner"
coverage_target="framework"
cts="true" />
<test name="cts-database"
build_path="cts/tests"
package="com.android.cts.database"
runner="android.test.InstrumentationCtsTestRunner"
coverage_target="framework"
cts="true" />
<test name="cts-graphics"
build_path="cts/tests"
package="com.android.cts.graphics"
runner="android.test.InstrumentationCtsTestRunner"
coverage_target="framework"
cts="true" />
<test name="cts-hardware"
build_path="cts/tests"
package="com.android.cts.hardware"
runner="android.test.InstrumentationCtsTestRunner"
coverage_target="framework"
cts="true" />
<test name="cts-location"
build_path="cts/tests"
package="com.android.cts.location"
runner="android.test.InstrumentationCtsTestRunner"
coverage_target="framework"
cts="true" />
<test name="cts-net"
build_path="cts/tests"
package="com.android.cts.net"
runner="android.test.InstrumentationCtsTestRunner"
coverage_target="framework"
cts="true" />
<test name="cts-os"
build_path="cts/tests"
package="com.android.cts.os"
runner="android.test.InstrumentationCtsTestRunner"
coverage_target="framework"
cts="true" />
<test name="cts-perf1"
build_path="cts/tests"
package="com.android.cts.performance"
runner="android.test.InstrumentationCtsTestRunner"
cts="true" />
<test name="cts-perf2"
build_path="cts/tests"
package="com.android.cts.performance2"
runner="android.test.InstrumentationCtsTestRunner"
cts="true" />
<test name="cts-perf3"
build_path="cts/tests"
package="com.android.cts.performance3"
runner="android.test.InstrumentationCtsTestRunner"
cts="true" />
<test name="cts-perf4"
build_path="cts/tests"
package="com.android.cts.performance4"
runner="android.test.InstrumentationCtsTestRunner"
cts="true" />
<test name="cts-perf5"
build_path="cts/tests"
package="com.android.cts.performance5"
runner="android.test.InstrumentationCtsTestRunner"
cts="true" />
<test name="cts-provider"
build_path="cts/tests"
package="com.android.cts.provider"
runner="android.test.InstrumentationCtsTestRunner"
coverage_target="framework"
cts="true" />
<test name="cts-text"
build_path="cts/tests"
package="com.android.cts.text"
runner="android.test.InstrumentationCtsTestRunner"
coverage_target="framework"
cts="true" />
<test name="cts-util"
build_path="cts/tests"
package="com.android.cts.util"
runner="android.test.InstrumentationCtsTestRunner"
coverage_target="framework"
cts="true" />
<test name="cts-view"
build_path="cts/tests"
package="com.android.cts.view"
runner="android.test.InstrumentationCtsTestRunner"
coverage_target="framework"
cts="true" />
<test name="cts-widget"
build_path="cts/tests"
package="com.android.cts.widget"
runner="android.test.InstrumentationCtsTestRunner"
coverage_target="framework"
cts="true" />
<!-- end of cts tests -->
<!-- selected app tests --> <!-- selected app tests -->
<test name="browser" <test name="browser"
build_path="packages/apps/Browser" build_path="packages/apps/Browser"

View File

@@ -24,6 +24,7 @@
default="android.test.InstrumentationTestRunner"/> default="android.test.InstrumentationTestRunner"/>
<xs:attribute name="coverage_target" type="xs:string" use="optional"/> <xs:attribute name="coverage_target" type="xs:string" use="optional"/>
<xs:attribute name="continuous" type="xs:boolean" use="optional" default="false"/> <xs:attribute name="continuous" type="xs:boolean" use="optional" default="false"/>
<xs:attribute name="cts" type="xs:boolean" use="optional" default="false"/>
</xs:complexType> </xs:complexType>
<xs:complexType name="nativeTestType"> <xs:complexType name="nativeTestType">