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