xref: /aosp_15_r20/external/autotest/site_utils/tester_feedback/request.py (revision 9c5db1993ded3edbeafc8092d69fe5de2ee02df7)
1*9c5db199SXin Li# Copyright 2016 The Chromium OS Authors. All rights reserved.
2*9c5db199SXin Li# Use of this source code is governed by a BSD-style license that can be
3*9c5db199SXin Li# found in the LICENSE file.
4*9c5db199SXin Li
5*9c5db199SXin Li"""Feedback request interface."""
6*9c5db199SXin Li
7*9c5db199SXin Li
8*9c5db199SXin Liclass FeedbackRequestError(Exception):
9*9c5db199SXin Li    """An error during feedback request processing."""
10*9c5db199SXin Li
11*9c5db199SXin Li
12*9c5db199SXin Liclass FeedbackRequest(object):
13*9c5db199SXin Li    """A abstract class for managing a single feedback request."""
14*9c5db199SXin Li
15*9c5db199SXin Li    _TITLE_TEMPLATE = '%(desc)s request from %(dut)s (%(test)s)'
16*9c5db199SXin Li
17*9c5db199SXin Li    def __init__(self, test, dut, desc):
18*9c5db199SXin Li        """Initializes the request object.
19*9c5db199SXin Li
20*9c5db199SXin Li        @param test: The test name.
21*9c5db199SXin Li        @param dut: The DUT name.
22*9c5db199SXin Li        @param desc: A one-liner describing the essence of the request.
23*9c5db199SXin Li        """
24*9c5db199SXin Li        self.test = test
25*9c5db199SXin Li        self.dut = dut
26*9c5db199SXin Li        self.desc = desc
27*9c5db199SXin Li
28*9c5db199SXin Li
29*9c5db199SXin Li    def get_title(self):
30*9c5db199SXin Li        """Returns the request descriptive title.
31*9c5db199SXin Li
32*9c5db199SXin Li        This method is used by the resuest multiplexer to obtain a list of
33*9c5db199SXin Li        pending request titles.
34*9c5db199SXin Li
35*9c5db199SXin Li        @return: A short string describing the request and who made it.
36*9c5db199SXin Li        """
37*9c5db199SXin Li        return (self._TITLE_TEMPLATE %
38*9c5db199SXin Li                {'test': self.test, 'dut': self.dut, 'desc': self.desc})
39*9c5db199SXin Li
40*9c5db199SXin Li
41*9c5db199SXin Li    def execute(self):
42*9c5db199SXin Li        """Executes the feedback request.
43*9c5db199SXin Li
44*9c5db199SXin Li        @return: The result of processing the request. This value varies
45*9c5db199SXin Li                 depending on the request type and is up to the invoking
46*9c5db199SXin Li                 delegate to evaluate and act upon.
47*9c5db199SXin Li
48*9c5db199SXin Li        @raise FeedbackRequestError: Failed to execute the request.
49*9c5db199SXin Li        """
50*9c5db199SXin Li        raise NotImplementedError
51