harness.py revision 849b11526149b9f94a52126d72bf0aba7fab03fb
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
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 test_status(self, status, tag):
69        """A test within this job is completing"""
70        pass
71
72
73    def test_status_detail(self, code, subdir, operation, status, tag):
74        """A test within this job is completing (detail)"""
75        pass
76
77
78def select(which, job):
79    if not which:
80        which = 'standalone'
81
82    harness_name = 'harness_%s' % which
83    harness_module = common.setup_modules.import_module(harness_name,
84                                                        'autotest_lib.client.bin')
85    harness_instance = getattr(harness_module, harness_name)(job)
86
87    return harness_instance
88