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