Update JsonRpcClientBase to use CallbackHandlerV2 - Migrate JsonRpcClientBase._rpc() from the deprecated v1 callback_handler to callback_handler_v2.CallbackHandlerV2. - Define _SOCKET_READ_TIMEOUT and _CALLBACK_DEFAULT_TIMEOUT_SEC directly in jsonrpc_client_base.py instead of importing callback_handler.
diff --git a/mobly/controllers/android_device_lib/jsonrpc_client_base.py b/mobly/controllers/android_device_lib/jsonrpc_client_base.py index abdd8e7..7b867a0 100644 --- a/mobly/controllers/android_device_lib/jsonrpc_client_base.py +++ b/mobly/controllers/android_device_lib/jsonrpc_client_base.py
@@ -56,7 +56,7 @@ import socket import threading -from mobly.controllers.android_device_lib import callback_handler +from mobly.controllers.android_device_lib import callback_handler_v2 from mobly.snippet import errors # UID of the 'unknown' jsonrpc session. Will cause creation of a new session. @@ -66,7 +66,10 @@ _SOCKET_CONNECTION_TIMEOUT = 60 # Maximum time to wait for a response message on the socket. -_SOCKET_READ_TIMEOUT = callback_handler.MAX_TIMEOUT +_SOCKET_READ_TIMEOUT = 60 * 10 + +# The default timeout for callback handlers returned by this client. +_CALLBACK_DEFAULT_TIMEOUT_SEC = 60 * 2 # Maximum logging length of Rpc response in DEBUG level when verbose logging is # off. @@ -348,12 +351,14 @@ if result.get('callback') is not None: if self._event_client is None: self._event_client = self._start_event_client() - return callback_handler.CallbackHandler( + return callback_handler_v2.CallbackHandlerV2( callback_id=result['callback'], event_client=self._event_client, ret_value=result['result'], method_name=method, - ad=self._ad, + device=self._ad, + rpc_max_timeout_sec=_SOCKET_READ_TIMEOUT, + default_timeout_sec=_CALLBACK_DEFAULT_TIMEOUT_SEC, ) return result['result']
diff --git a/tests/mobly/controllers/android_device_lib/jsonrpc_client_base_test.py b/tests/mobly/controllers/android_device_lib/jsonrpc_client_base_test.py index 1861cc0..334bd0a 100755 --- a/tests/mobly/controllers/android_device_lib/jsonrpc_client_base_test.py +++ b/tests/mobly/controllers/android_device_lib/jsonrpc_client_base_test.py
@@ -17,6 +17,7 @@ import unittest from unittest import mock +from mobly.controllers.android_device_lib import callback_handler_v2 from mobly.controllers.android_device_lib import jsonrpc_client_base from tests.lib import jsonrpc_client_test_base @@ -164,6 +165,7 @@ client._event_client = mock.Mock() callback = client.some_rpc(1, 2, 3) + self.assertIsInstance(callback, callback_handler_v2.CallbackHandlerV2) self.assertEqual(callback.ret_value, 123) self.assertEqual(callback._id, '1-0')