diff options
author | uael <uael@google.com> | 2023-10-05 02:21:32 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2023-10-05 02:21:32 +0000 |
commit | c31e576329d6847c781f50d0434311e361ef3882 (patch) | |
tree | 22c90a7f799b736bb1fb9f8972eb39d2fd4418e4 /tests | |
parent | 872432729fdc4a5e3efd86d57e7456fa75537b4d (diff) | |
parent | 337de6ca59d6df85630e9030f084327afec078a1 (diff) | |
download | mobly-c31e576329d6847c781f50d0434311e361ef3882.tar.gz |
Merge remote-tracking branch 'aosp/upstream-master' into main am: a3c64c07c8 am: a6408fdd14 am: b31b1eddc1 am: 337de6ca59
Original change: https://android-review.googlesource.com/c/platform/external/python/mobly/+/2736301
Change-Id: I74600a88ad9778dd8fd9284d6e37e8151ccb2984
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
Diffstat (limited to 'tests')
6 files changed, 124 insertions, 14 deletions
diff --git a/tests/mobly/base_test_test.py b/tests/mobly/base_test_test.py index be67437..b166357 100755 --- a/tests/mobly/base_test_test.py +++ b/tests/mobly/base_test_test.py @@ -510,6 +510,28 @@ class BaseTestTest(unittest.TestCase): "Requested 1, Skipped 0") self.assertEqual(bt_cls.results.summary_str(), expected_summary) + def test_teardown_test_expects_error(self): + + class MockBaseTest(base_test.BaseTestClass): + + def teardown_test(self): + expects.expect_true(False, MSG_EXPECTED_EXCEPTION) + + def test_something(self): + pass + + bt_cls = MockBaseTest(self.mock_test_cls_configs) + bt_cls.run() + actual_record = bt_cls.results.error[0] + self.assertEqual(actual_record.test_name, self.mock_test_name) + self.assertEqual(actual_record.details, MSG_EXPECTED_EXCEPTION) + self.assertIsNone(actual_record.extras) + self.assertFalse(actual_record.extra_errors) + self.assertTrue(actual_record.end_time) + expected_summary = ("Error 1, Executed 1, Failed 0, Passed 0, " + "Requested 1, Skipped 0") + self.assertEqual(bt_cls.results.summary_str(), expected_summary) + def test_teardown_test_executed_if_test_pass(self): my_mock = mock.MagicMock() diff --git a/tests/mobly/controllers/android_device_lib/services/logcat_test.py b/tests/mobly/controllers/android_device_lib/services/logcat_test.py index 5c951b6..df15d76 100755 --- a/tests/mobly/controllers/android_device_lib/services/logcat_test.py +++ b/tests/mobly/controllers/android_device_lib/services/logcat_test.py @@ -133,6 +133,23 @@ class LogcatTest(unittest.TestCase): return_value=mock_android_device.MockAdbProxy('1')) @mock.patch('mobly.controllers.android_device_lib.fastboot.FastbootProxy', return_value=mock_android_device.MockFastbootProxy('1')) + @mock.patch('mobly.utils.start_standing_subprocess') + @mock.patch('mobly.controllers.android_device.list_fastboot_devices', + return_value='1') + def test_start_in_fastboot_mode(self, _, start_proc_mock, FastbootProxy, + MockAdbProxy): + mock_serial = '1' + ad = android_device.AndroidDevice(serial=mock_serial) + logcat_service = logcat.Logcat(ad) + logcat_service.start() + # Verify start is not performed + self.assertFalse(logcat_service._adb_logcat_process) + start_proc_mock.assert_not_called() + + @mock.patch('mobly.controllers.android_device_lib.adb.AdbProxy', + return_value=mock_android_device.MockAdbProxy('1')) + @mock.patch('mobly.controllers.android_device_lib.fastboot.FastbootProxy', + return_value=mock_android_device.MockFastbootProxy('1')) @mock.patch('mobly.utils.create_dir') @mock.patch('mobly.utils.start_standing_subprocess', return_value='process') @mock.patch('mobly.utils.stop_standing_subprocess') diff --git a/tests/mobly/controllers/android_device_lib/services/snippet_management_service_test.py b/tests/mobly/controllers/android_device_lib/services/snippet_management_service_test.py index 162847b..16a30aa 100755 --- a/tests/mobly/controllers/android_device_lib/services/snippet_management_service_test.py +++ b/tests/mobly/controllers/android_device_lib/services/snippet_management_service_test.py @@ -15,6 +15,7 @@ import unittest from unittest import mock +from mobly.controllers.android_device_lib import snippet_client_v2 from mobly.controllers.android_device_lib.services import snippet_management_service MOCK_PACKAGE = 'com.mock.package' @@ -63,6 +64,25 @@ class SnippetManagementServiceTest(unittest.TestCase): mock_client.stop.assert_not_called() @mock.patch(SNIPPET_CLIENT_V2_CLASS_PATH) + def test_add_snippet_client_without_config(self, mock_class): + mock_client = mock_class.return_value + manager = snippet_management_service.SnippetManagementService( + mock.MagicMock()) + manager.add_snippet_client('foo', MOCK_PACKAGE) + mock_class.assert_called_once_with( + package=mock.ANY, ad=mock.ANY, config=None) + + @mock.patch(SNIPPET_CLIENT_V2_CLASS_PATH) + def test_add_snippet_client_with_config(self, mock_class): + mock_client = mock_class.return_value + manager = snippet_management_service.SnippetManagementService( + mock.MagicMock()) + snippet_config = snippet_client_v2.Config() + manager.add_snippet_client('foo', MOCK_PACKAGE, snippet_config) + mock_class.assert_called_once_with( + package=mock.ANY, ad=mock.ANY, config=snippet_config) + + @mock.patch(SNIPPET_CLIENT_V2_CLASS_PATH) def test_add_snippet_client_dup_name(self, _): manager = snippet_management_service.SnippetManagementService( mock.MagicMock()) 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 1943abb..86d889b 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 @@ -92,7 +92,9 @@ def _setup_mock_socket_file(mock_socket_create_conn, resp): class SnippetClientV2Test(unittest.TestCase): """Unit tests for SnippetClientV2.""" - def _make_client(self, adb_proxy=None, mock_properties=None): + def _make_client( + self, adb_proxy=None, mock_properties=None, config=None + ): adb_proxy = adb_proxy or _MockAdbProxy(instrumented_packages=[ (MOCK_PACKAGE_NAME, snippet_client_v2._INSTRUMENTATION_RUNNER_PACKAGE, MOCK_PACKAGE_NAME) @@ -111,7 +113,9 @@ class SnippetClientV2Test(unittest.TestCase): } self.device = device - self.client = snippet_client_v2.SnippetClientV2(MOCK_PACKAGE_NAME, device) + self.client = snippet_client_v2.SnippetClientV2( + MOCK_PACKAGE_NAME, device, config + ) def _make_client_with_extra_adb_properties(self, extra_properties): mock_properties = mock_android_device.DEFAULT_MOCK_PROPERTIES.copy() @@ -408,7 +412,7 @@ class SnippetClientV2Test(unittest.TestCase): self.client.start_server() start_cmd_list = [ 'adb', 'shell', - (f'setsid am instrument --user {MOCK_USER_ID} -w -e action start ' + (f'setsid am instrument --user {MOCK_USER_ID} -w -e action start ' f'{MOCK_SERVER_PATH}') ] self.assertListEqual(mock_start_subprocess.call_args_list, @@ -427,7 +431,7 @@ class SnippetClientV2Test(unittest.TestCase): self.client.start_server() start_cmd_list = [ 'adb', 'shell', - f'setsid am instrument -w -e action start {MOCK_SERVER_PATH}' + f'setsid am instrument -w -e action start {MOCK_SERVER_PATH}' ] self.assertListEqual(mock_start_subprocess.call_args_list, [mock.call(start_cmd_list, shell=False)]) @@ -449,7 +453,7 @@ class SnippetClientV2Test(unittest.TestCase): self.client.start_server() start_cmd_list = [ 'adb', 'shell', - (f' am instrument --user {MOCK_USER_ID} -w -e action start ' + (f' am instrument --user {MOCK_USER_ID} -w -e action start ' f'{MOCK_SERVER_PATH}') ] self.assertListEqual(mock_start_subprocess.call_args_list, @@ -476,7 +480,7 @@ class SnippetClientV2Test(unittest.TestCase): self.client.start_server() start_cmd_list = [ 'adb', 'shell', - (f'nohup am instrument --user {MOCK_USER_ID} -w -e action start ' + (f'nohup am instrument --user {MOCK_USER_ID} -w -e action start ' f'{MOCK_SERVER_PATH}') ] self.assertListEqual(mock_start_subprocess.call_args_list, @@ -499,7 +503,7 @@ class SnippetClientV2Test(unittest.TestCase): self.client.start_server() start_cmd_list = [ 'adb', 'shell', - (f'setsid am instrument --user {MOCK_USER_ID} -w -e action start ' + (f'setsid am instrument --user {MOCK_USER_ID} -w -e action start ' f'{MOCK_SERVER_PATH}') ] self.assertListEqual(mock_start_subprocess.call_args_list, @@ -508,6 +512,28 @@ class SnippetClientV2Test(unittest.TestCase): @mock.patch('mobly.controllers.android_device_lib.snippet_client_v2.' 'utils.start_standing_subprocess') + def test_start_server_with_instrument_options(self, mock_start_subprocess): + """Checks the starting server command with instrument options.""" + config = snippet_client_v2.Config( + am_instrument_options={'key_1': 'val_1', 'key_2': 'val_2'}, + ) + instrument_options_str = '-e key_1 val_1 -e key_2 val_2' + self._make_client(config=config) + self._mock_server_process_starting_response(mock_start_subprocess) + + self.client.start_server() + + start_cmd_list = [ + 'adb', 'shell', + (f' am instrument --user {MOCK_USER_ID} -w -e action start ' + f'{instrument_options_str} {MOCK_SERVER_PATH}') + ] + self.assertListEqual(mock_start_subprocess.call_args_list, + [mock.call(start_cmd_list, shell=False)]) + self.assertEqual(self.client.device_port, 1234) + + @mock.patch('mobly.controllers.android_device_lib.snippet_client_v2.' + 'utils.start_standing_subprocess') def test_start_server_server_crash(self, mock_start_standing_subprocess): """Tests that starting server process crashes.""" self._make_client() diff --git a/tests/mobly/controllers/android_device_test.py b/tests/mobly/controllers/android_device_test.py index 4aa5304..3682c94 100755 --- a/tests/mobly/controllers/android_device_test.py +++ b/tests/mobly/controllers/android_device_test.py @@ -24,6 +24,7 @@ from mobly import runtime_test_info from mobly.controllers import android_device from mobly.controllers.android_device_lib import adb from mobly.controllers.android_device_lib import errors +from mobly.controllers.android_device_lib import snippet_client_v2 from mobly.controllers.android_device_lib.services import base_service from mobly.controllers.android_device_lib.services import logcat from tests.lib import mock_android_device @@ -581,6 +582,16 @@ class AndroidDeviceTest(unittest.TestCase): return_value=mock_android_device.MockAdbProxy('1')) @mock.patch('mobly.controllers.android_device_lib.fastboot.FastbootProxy', return_value=mock_android_device.MockFastbootProxy('1')) + @mock.patch('mobly.controllers.android_device.list_fastboot_devices', + return_value='1') + def test_AndroidDevice_is_fastboot(self, _, MockFastboot, MockAdbProxy): + ad = android_device.AndroidDevice(serial='1') + self.assertTrue(ad.is_bootloader) + + @mock.patch('mobly.controllers.android_device_lib.adb.AdbProxy', + return_value=mock_android_device.MockAdbProxy('1')) + @mock.patch('mobly.controllers.android_device_lib.fastboot.FastbootProxy', + return_value=mock_android_device.MockFastbootProxy('1')) @mock.patch('mobly.logger.get_log_file_timestamp') def test_AndroidDevice_generate_filename_default(self, get_log_file_timestamp_mock, @@ -1113,6 +1124,23 @@ class AndroidDeviceTest(unittest.TestCase): @mock.patch( 'mobly.controllers.android_device_lib.snippet_client_v2.SnippetClientV2') @mock.patch('mobly.utils.get_available_host_port') + def test_AndroidDevice_load_snippet_with_snippet_config( + self, MockGetPort, MockSnippetClient, MockFastboot, MockAdbProxy): + ad = android_device.AndroidDevice(serial='1') + snippet_config = snippet_client_v2.Config() + ad.load_snippet('snippet', MOCK_SNIPPET_PACKAGE_NAME, snippet_config) + self.assertTrue(hasattr(ad, 'snippet')) + MockSnippetClient.assert_called_once_with( + package=mock.ANY, ad=mock.ANY, config=snippet_config + ) + + @mock.patch('mobly.controllers.android_device_lib.adb.AdbProxy', + return_value=mock_android_device.MockAdbProxy('1')) + @mock.patch('mobly.controllers.android_device_lib.fastboot.FastbootProxy', + return_value=mock_android_device.MockFastbootProxy('1')) + @mock.patch( + 'mobly.controllers.android_device_lib.snippet_client_v2.SnippetClientV2') + @mock.patch('mobly.utils.get_available_host_port') def test_AndroidDevice_unload_snippet(self, MockGetPort, MockSnippetClient, MockFastboot, MockAdbProxy): ad = android_device.AndroidDevice(serial='1') diff --git a/tests/mobly/test_runner_test.py b/tests/mobly/test_runner_test.py index efddc4c..0343e0d 100755 --- a/tests/mobly/test_runner_test.py +++ b/tests/mobly/test_runner_test.py @@ -374,20 +374,17 @@ class TestRunnerTest(unittest.TestCase): mock_cls_instance = mock.MagicMock() mock_test_class.return_value = mock_cls_instance test_runner._print_test_names(mock_test_class) - mock_cls_instance.setup_generated_tests.assert_called_once() - mock_cls_instance.get_existing_test_names.assert_called_once() - mock_cls_instance._controller_manager.unregister_controllers.assert_called_once( - ) + mock_cls_instance._pre_run.assert_called_once() + mock_cls_instance._clean_up.assert_called_once() def test_print_test_names_with_exception(self): mock_test_class = mock.MagicMock() mock_cls_instance = mock.MagicMock() mock_test_class.return_value = mock_cls_instance test_runner._print_test_names(mock_test_class) - mock_cls_instance.setup_generated_tests.side_effect = Exception( + mock_cls_instance._pre_run.side_effect = Exception( 'Something went wrong.') - mock_cls_instance._controller_manager.unregister_controllers.assert_called_once( - ) + mock_cls_instance._clean_up.assert_called_once() if __name__ == "__main__": |