aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authoruael <uael@google.com>2023-10-05 02:21:32 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2023-10-05 02:21:32 +0000
commitc31e576329d6847c781f50d0434311e361ef3882 (patch)
tree22c90a7f799b736bb1fb9f8972eb39d2fd4418e4 /tests
parent872432729fdc4a5e3efd86d57e7456fa75537b4d (diff)
parent337de6ca59d6df85630e9030f084327afec078a1 (diff)
downloadmobly-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')
-rwxr-xr-xtests/mobly/base_test_test.py22
-rwxr-xr-xtests/mobly/controllers/android_device_lib/services/logcat_test.py17
-rwxr-xr-xtests/mobly/controllers/android_device_lib/services/snippet_management_service_test.py20
-rw-r--r--tests/mobly/controllers/android_device_lib/snippet_client_v2_test.py40
-rwxr-xr-xtests/mobly/controllers/android_device_test.py28
-rwxr-xr-xtests/mobly/test_runner_test.py11
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__":