blob: a2f6461b44d4ada5d0c9e2e38e2283590933010e [file] [log] [blame]
"""The harness interface
The interface between the client and the server when hosted.
"""
# pylint: disable=missing-docstring
__author__ = """Copyright Andy Whitcroft 2006"""
import logging
import common
class harness(object):
"""The NULL server harness
Properties:
job
The job object for this job
"""
def __init__(self, job):
"""
job
The job object for this job
"""
self.setup(job)
def setup(self, job):
"""
job
The job object for this job
"""
self.job = job
def run_start(self):
"""A run within this job is starting"""
pass
def run_pause(self):
"""A run within this job is completing (expect continue)"""
pass
def run_reboot(self):
"""A run within this job is performing a reboot
(expect continue following reboot)
"""
pass
def run_abort(self):
"""A run within this job is aborting. It all went wrong"""
pass
def run_complete(self):
"""A run within this job is completing (all done)"""
pass
def run_test_complete(self):
"""A test run by this job is complete. Note that if multiple
tests are run in parallel, this will only be called when all
of the parallel runs complete."""
pass
def test_status(self, status, tag):
"""A test within this job is completing"""
pass
def test_status_detail(self, code, subdir, operation, status, tag,
optional_fields):
"""A test within this job is completing (detail)"""
pass
def select(which, job, harness_args):
if not which:
which = 'standalone'
logging.debug('Selected harness: %s', which)
harness_name = 'harness_%s' % which
harness_module = common.setup_modules.import_module(harness_name,
'autotest_lib.client.bin')
harness_instance = getattr(harness_module, harness_name)(job, harness_args)
return harness_instance