diff options
author | nkprasad12 <31296089+nkprasad12@users.noreply.github.com> | 2023-10-23 22:37:00 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-23 22:37:00 -0700 |
commit | 45baf1ed4a2a754936d3b9434c065c334aaeae4b (patch) | |
tree | b44914e52eaccb27b17a55487ec608481a996d2b | |
parent | 207d7933992733b172ccb5e6543078f747063bd3 (diff) | |
download | mobly-45baf1ed4a2a754936d3b9434c065c334aaeae4b.tar.gz |
Allow configuring snippet user. (#899)
Co-authored-by: Nitin Prasad <nkprasad@google.com>
-rw-r--r-- | mobly/controllers/android_device_lib/snippet_client_v2.py | 7 | ||||
-rw-r--r-- | tests/mobly/controllers/android_device_lib/snippet_client_v2_test.py | 19 |
2 files changed, 23 insertions, 3 deletions
diff --git a/mobly/controllers/android_device_lib/snippet_client_v2.py b/mobly/controllers/android_device_lib/snippet_client_v2.py index f7494c2..2e62f95 100644 --- a/mobly/controllers/android_device_lib/snippet_client_v2.py +++ b/mobly/controllers/android_device_lib/snippet_client_v2.py @@ -18,7 +18,7 @@ import enum import json import re import socket -from typing import Dict +from typing import Dict, Union from mobly import utils from mobly.controllers.android_device_lib import adb @@ -89,11 +89,12 @@ class Config: other purposes may not take effect and you should use snippet RPCs. This is because Mobly snippet runner changes the subsequent instrumentation process. + user_id: The user id under which to launch the snippet process. """ am_instrument_options: Dict[str, str] = dataclasses.field( default_factory=dict) - + user_id: Union[int, None] = None class ConnectionHandshakeCommand(enum.Enum): """Commands to send to the server when sending the handshake request. @@ -142,7 +143,7 @@ class SnippetClientV2(client_base.ClientBase): self.device_port = None self.uid = UNKNOWN_UID self._adb = ad.adb - self._user_id = None + self._user_id = None if config is None else config.user_id self._proc = None self._client = None # keep it to prevent close errors on connect failure self._conn = None diff --git a/tests/mobly/controllers/android_device_lib/snippet_client_v2_test.py b/tests/mobly/controllers/android_device_lib/snippet_client_v2_test.py index 86d889b..3b42c9b 100644 --- a/tests/mobly/controllers/android_device_lib/snippet_client_v2_test.py +++ b/tests/mobly/controllers/android_device_lib/snippet_client_v2_test.py @@ -423,6 +423,25 @@ class SnippetClientV2Test(unittest.TestCase): @mock.patch('mobly.controllers.android_device_lib.snippet_client_v2.' 'utils.start_standing_subprocess') @mock.patch.object(_MockAdbProxy, 'shell', return_value=b'setsid') + def test_start_server_with_config_specific_user_id(self, _, + mock_start_subprocess): + """Tests that the correct `--user` argument is passed.""" + self._make_client(config=snippet_client_v2.Config(user_id=42)) + self._mock_server_process_starting_response(mock_start_subprocess) + self.assertEqual(self.client.user_id, 42) + + self.client.start_server() + start_cmd_list = [ + 'adb', 'shell', + (f'setsid am instrument --user 42 -w -e action start ' + f'{MOCK_SERVER_PATH}') + ] + self.assertListEqual(mock_start_subprocess.call_args_list, + [mock.call(start_cmd_list, shell=False)]) + + @mock.patch('mobly.controllers.android_device_lib.snippet_client_v2.' + 'utils.start_standing_subprocess') + @mock.patch.object(_MockAdbProxy, 'shell', return_value=b'setsid') def test_start_server_without_user_id(self, mock_adb, mock_start_subprocess): """Tests that `--user` is not added to starting command on SDK < 24.""" self._make_client_with_extra_adb_properties({'ro.build.version.sdk': '21'}) |