xref: /aosp_15_r20/external/autotest/client/bin/harness.py (revision 9c5db1993ded3edbeafc8092d69fe5de2ee02df7)
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