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