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