Home | History | Annotate | Download | only in bin
      1 """The harness interface
      2 
      3 The interface between the client and the server when hosted.
      4 """
      5 
      6 # pylint: disable=missing-docstring
      7 
      8 __author__ = """Copyright Andy Whitcroft 2006"""
      9 
     10 import logging
     11 
     12 import common
     13 
     14 
     15 class harness(object):
     16     """The NULL server harness
     17 
     18     Properties:
     19             job
     20                     The job object for this job
     21     """
     22 
     23     def __init__(self, job):
     24         """
     25                 job
     26                         The job object for this job
     27         """
     28         self.setup(job)
     29 
     30 
     31     def setup(self, job):
     32         """
     33                 job
     34                         The job object for this job
     35         """
     36         self.job = job
     37 
     38 
     39     def run_start(self):
     40         """A run within this job is starting"""
     41         pass
     42 
     43 
     44     def run_pause(self):
     45         """A run within this job is completing (expect continue)"""
     46         pass
     47 
     48 
     49     def run_reboot(self):
     50         """A run within this job is performing a reboot
     51            (expect continue following reboot)
     52         """
     53         pass
     54 
     55 
     56     def run_abort(self):
     57         """A run within this job is aborting. It all went wrong"""
     58         pass
     59 
     60 
     61     def run_complete(self):
     62         """A run within this job is completing (all done)"""
     63         pass
     64 
     65 
     66     def run_test_complete(self):
     67         """A test run by this job is complete. Note that if multiple
     68         tests are run in parallel, this will only be called when all
     69         of the parallel runs complete."""
     70         pass
     71 
     72 
     73     def test_status(self, status, tag):
     74         """A test within this job is completing"""
     75         pass
     76 
     77 
     78     def test_status_detail(self, code, subdir, operation, status, tag,
     79                            optional_fields):
     80         """A test within this job is completing (detail)"""
     81         pass
     82 
     83 
     84 def select(which, job, harness_args):
     85     if not which:
     86         which = 'standalone'
     87 
     88     logging.debug('Selected harness: %s', which)
     89 
     90     harness_name = 'harness_%s' % which
     91     harness_module = common.setup_modules.import_module(harness_name,
     92                                                         'autotest_lib.client.bin')
     93     harness_instance = getattr(harness_module, harness_name)(job, harness_args)
     94 
     95     return harness_instance
     96