Home | History | Annotate | Download | only in test_defs
      1 #!/usr/bin/python2.4
      2 #
      3 #
      4 # Copyright 2009, The Android Open Source Project
      5 #
      6 # Licensed under the Apache License, Version 2.0 (the "License");
      7 # you may not use this file except in compliance with the License.
      8 # You may obtain a copy of the License at
      9 #
     10 #     http://www.apache.org/licenses/LICENSE-2.0
     11 #
     12 # Unless required by applicable law or agreed to in writing, software
     13 # distributed under the License is distributed on an "AS IS" BASIS,
     14 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     15 # See the License for the specific language governing permissions and
     16 # limitations under the License.
     17 
     18 """Abstract Android test suite."""
     19 
     20 
     21 class AbstractTestSuite(object):
     22   """Represents a generic test suite definition.
     23 
     24   TODO: rename this as AbstractTestDef.
     25   """
     26 
     27   def __init__(self):
     28     self._name = None
     29     self._build_path = None
     30     self._build_dependencies = []
     31     self._is_continuous = False
     32     self._suite = None
     33     self._description = ''
     34     self._extra_build_args = ''
     35     self._is_full_make = False
     36     self._is_granted_permissions = True
     37 
     38   def GetName(self):
     39     return self._name
     40 
     41   def SetName(self, name):
     42     self._name = name
     43     return self
     44 
     45   def GetBuildPath(self):
     46     """Returns the build path of this test, relative to source tree root."""
     47     return self._build_path
     48 
     49   def SetBuildPath(self, build_path):
     50     self._build_path = build_path
     51     return self
     52 
     53   def GetBuildDependencies(self, options):
     54     """Returns a list of dependent build paths."""
     55     return self._build_dependencies
     56 
     57   def SetBuildDependencies(self, build_dependencies):
     58     self._build_dependencies = build_dependencies
     59     return self
     60 
     61   def IsContinuous(self):
     62     """Returns true if test is part of the continuous test."""
     63     return self._is_continuous
     64 
     65   def SetContinuous(self, continuous):
     66     self._is_continuous = continuous
     67     return self._is_continuous
     68 
     69   def IsGrantedPermissions(self):
     70     """Return true if the test should be granted runtime permissions on install."""
     71     return self._is_granted_permissions
     72 
     73   def SetIsGrantedPermissions(self, is_granted_permissions):
     74     self._is_granted_permissions = is_granted_permissions
     75     return self._is_granted_permissions
     76 
     77   def GetSuite(self):
     78     """Returns the name of test' suite, or None."""
     79     return self._suite
     80 
     81   def SetSuite(self, suite):
     82     self._suite = suite
     83     return self
     84 
     85   def GetDescription(self):
     86     """Returns a description if available, an empty string otherwise."""
     87     return self._description
     88 
     89   def SetDescription(self, desc):
     90     self._description = desc
     91     return self
     92 
     93   def GetExtraBuildArgs(self):
     94     """Returns the extra build args if available, an empty string otherwise."""
     95     return self._extra_build_args
     96 
     97   def SetExtraBuildArgs(self, build_args):
     98     self._extra_build_args = build_args
     99     return self
    100 
    101   def IsFullMake(self):
    102     return self._is_full_make
    103 
    104   def SetIsFullMake(self, full_make):
    105     self._is_full_make = full_make
    106     return self
    107 
    108   def Run(self, options, adb):
    109     """Runs the test.
    110 
    111     Subclasses must implement this.
    112     Args:
    113       options: global command line options
    114       adb: asdb_interface to device under test
    115     """
    116     raise NotImplementedError
    117 
    118 class AbstractTestFactory(object):
    119   """generic test suite factory."""
    120 
    121   def __init__(self, test_root_path, build_path):
    122     """Creates a test suite factory.
    123 
    124     Args:
    125       test_root_path: the filesystem path to the tests build directory
    126       upstream_build_path: filesystem path for the directory
    127       to build when running tests, relative to the source tree root.
    128     """
    129     self._test_root_path = test_root_path
    130     self._build_path = build_path
    131 
    132   def GetBuildPath(self):
    133     return self._build_path
    134 
    135   def GetTestsRootPath(self):
    136     return self._test_root_path
    137 
    138   def CreateTests(self, sub_tests_path=None):
    139     """Creates the tests at given test_path.
    140 
    141     Subclasses must implement this.
    142 
    143     Args:
    144       sub_tests_path: the child path of test_root_path containing the tests to
    145         run. If unspecified will be set to test_root_path.
    146 
    147     Returns:
    148       an array of AbstractTestSuite, or empty AbstractTestSuite if no tests
    149       were defined
    150     """
    151     raise NotImplementedError
    152