| #!/usr/bin/python2.4 |
| # |
| # |
| # Copyright 2009, 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. |
| |
| """Abstract Android test suite.""" |
| |
| |
| class AbstractTestSuite(object): |
| """Represents a generic test suite definition. |
| |
| TODO: rename this as AbstractTestDef. |
| """ |
| |
| def __init__(self): |
| self._name = None |
| self._build_path = None |
| self._build_dependencies = [] |
| self._is_continuous = False |
| self._suite = None |
| self._description = '' |
| self._extra_build_args = '' |
| self._is_full_make = False |
| |
| def GetName(self): |
| return self._name |
| |
| def SetName(self, name): |
| self._name = name |
| return self |
| |
| def GetBuildPath(self): |
| """Returns the build path of this test, relative to source tree root.""" |
| return self._build_path |
| |
| def SetBuildPath(self, build_path): |
| self._build_path = build_path |
| return self |
| |
| def GetBuildDependencies(self, options): |
| """Returns a list of dependent build paths.""" |
| return self._build_dependencies |
| |
| def SetBuildDependencies(self, build_dependencies): |
| self._build_dependencies = build_dependencies |
| return self |
| |
| def IsContinuous(self): |
| """Returns true if test is part of the continuous test.""" |
| return self._is_continuous |
| |
| def SetContinuous(self, continuous): |
| self._is_continuous = continuous |
| return self._is_continuous |
| |
| def GetSuite(self): |
| """Returns the name of test' suite, or None.""" |
| return self._suite |
| |
| def SetSuite(self, suite): |
| self._suite = suite |
| return self |
| |
| def GetDescription(self): |
| """Returns a description if available, an empty string otherwise.""" |
| return self._description |
| |
| def SetDescription(self, desc): |
| self._description = desc |
| return self |
| |
| def GetExtraBuildArgs(self): |
| """Returns the extra build args if available, an empty string otherwise.""" |
| return self._extra_build_args |
| |
| def SetExtraBuildArgs(self, build_args): |
| self._extra_build_args = build_args |
| return self |
| |
| def IsFullMake(self): |
| return self._is_full_make |
| |
| def SetIsFullMake(self, full_make): |
| self._is_full_make = full_make |
| return self |
| |
| def Run(self, options, adb): |
| """Runs the test. |
| |
| Subclasses must implement this. |
| Args: |
| options: global command line options |
| adb: asdb_interface to device under test |
| """ |
| raise NotImplementedError |
| |
| class AbstractTestFactory(object): |
| """generic test suite factory.""" |
| |
| def __init__(self, test_root_path, build_path): |
| """Creates a test suite factory. |
| |
| Args: |
| test_root_path: the filesystem path to the tests build directory |
| upstream_build_path: filesystem path for the directory |
| to build when running tests, relative to the source tree root. |
| """ |
| self._test_root_path = test_root_path |
| self._build_path = build_path |
| |
| def GetBuildPath(self): |
| return self._build_path |
| |
| def GetTestsRootPath(self): |
| return self._test_root_path |
| |
| def CreateTests(self, sub_tests_path=None): |
| """Creates the tests at given test_path. |
| |
| Subclasses must implement this. |
| |
| Args: |
| sub_tests_path: the child path of test_root_path containing the tests to |
| run. If unspecified will be set to test_root_path. |
| |
| Returns: |
| an array of AbstractTestSuite, or empty AbstractTestSuite if no tests |
| were defined |
| """ |
| raise NotImplementedError |