1"""The harness interface 2 3The interface between the client and the server when hosted. 4""" 5 6__author__ = """Copyright Andy Whitcroft 2006""" 7 8import os, sys, logging 9import common 10 11class 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 86def 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