1# Copyright 2022 Google Inc. 2# 3# Licensed under the Apache License, Version 2.0 (the "License"); 4# you may not use this file except in compliance with the License. 5# You may obtain a copy of the License at 6# 7# http://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12# See the License for the specific language governing permissions and 13# limitations under the License. 14"""Module for errors thrown from snippet client objects.""" 15# TODO(mhaoli): Package `mobly.snippet` should not import errors from 16# android_device_lib. However, android_device_lib.DeviceError is the base error 17# for the errors thrown from Android snippet clients and device controllers. 18# We should resolve this legacy problem. 19from mobly.controllers.android_device_lib import errors 20 21 22class Error(errors.DeviceError): 23 """Root error type for snippet clients.""" 24 25 26class ServerRestoreConnectionError(Error): 27 """Raised when failed to restore the connection with the snippet server.""" 28 29 30class ServerStartError(Error): 31 """Raised when failed to start the snippet server.""" 32 33 34class ServerStartProtocolError(ServerStartError): 35 """Raised when protocol reported by the server startup process is unknown.""" 36 37 38class ServerStartPreCheckError(Error): 39 """Raised when prechecks for starting the snippet server failed. 40 41 Here are some precheck examples: 42 * Whether the required software is installed on the device. 43 * Whether the configuration file required by the server startup process 44 is available. 45 """ 46 47 48class ApiError(Error): 49 """Raised when remote API reported an error.""" 50 51 52class ProtocolError(Error): 53 """Raised when there was an error in exchanging data with server.""" 54 55 NO_RESPONSE_FROM_HANDSHAKE = 'No response from handshake.' 56 NO_RESPONSE_FROM_SERVER = ( 57 'No response from server. Check the device logcat for crashes.' 58 ) 59 MISMATCHED_API_ID = 'RPC request-response ID mismatch.' 60 RESPONSE_MISSING_FIELD = 'Missing required field in the RPC response: %s.' 61 62 63class ServerDiedError(Error): 64 """Raised if the snippet server died before all tests finish.""" 65 66 67# Error types for callback handlers 68class CallbackHandlerBaseError(errors.DeviceError): 69 """Base error type for snippet clients.""" 70 71 72class CallbackHandlerTimeoutError(Error): 73 """Raised if the expected event does not occur within the time limit.""" 74