# Copyright 2016 The Chromium OS Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. """Feedback request interface.""" class FeedbackRequestError(Exception): """An error during feedback request processing.""" class FeedbackRequest(object): """A abstract class for managing a single feedback request.""" _TITLE_TEMPLATE = '%(desc)s request from %(dut)s (%(test)s)' def __init__(self, test, dut, desc): """Initializes the request object. @param test: The test name. @param dut: The DUT name. @param desc: A one-liner describing the essence of the request. """ self.test = test self.dut = dut self.desc = desc def get_title(self): """Returns the request descriptive title. This method is used by the resuest multiplexer to obtain a list of pending request titles. @return: A short string describing the request and who made it. """ return (self._TITLE_TEMPLATE % {'test': self.test, 'dut': self.dut, 'desc': self.desc}) def execute(self): """Executes the feedback request. @return: The result of processing the request. This value varies depending on the request type and is up to the invoking delegate to evaluate and act upon. @raise FeedbackRequestError: Failed to execute the request. """ raise NotImplementedError