def test_unregister(self): manager = service_manager.ServiceManager(mock.MagicMock()) manager.register('mock_service', MockService) service = manager.mock_service manager.unregister('mock_service') self.assertFalse(manager.is_any_alive) self.assertFalse(service.is_alive)
def test_start_services(self): manager = service_manager.ServiceManager(mock.MagicMock()) manager.register('mock_service1', MockService, start_service=False) manager.register('mock_service2', MockService, start_service=False) manager.start_services(['mock_service2']) aliases = manager.list_live_services() self.assertEqual(aliases, ['mock_service2'])
def test_register_wrong_subclass_type(self): class MyClass(object): pass manager = service_manager.ServiceManager(mock.MagicMock()) with self.assertRaisesRegex(service_manager.Error, '.* is not a subclass of BaseService!'): manager.register('mock_service', MyClass)
def test_register_with_configs(self): mock_configs = mock.MagicMock() manager = service_manager.ServiceManager(mock.MagicMock()) manager.register('mock_service', MockService, configs=mock_configs) service = manager.mock_service self.assertTrue(service) self.assertEqual(service._configs, mock_configs) self.assertEqual(service.start_func.call_count, 1)
def test_unregister_handle_error_from_stop(self): manager = service_manager.ServiceManager(mock.MagicMock()) manager.register('mock_service', MockService) service = manager.mock_service service.stop_func.side_effect = Exception('Something failed in stop.') manager.unregister('mock_service') self.assert_recorded_one_error( 'Failed to stop service instance "mock_service".')
def test_register_do_not_start_service(self): manager = service_manager.ServiceManager(mock.MagicMock()) manager.register('mock_service', MockService, start_service=False) service = manager.mock_service self.assertTrue(service) self.assertFalse(service.is_alive) self.assertFalse(manager.is_any_alive) self.assertEqual(service.start_func.call_count, 0)
def test_register(self): manager = service_manager.ServiceManager(mock.MagicMock()) manager.register('mock_service', MockService) service = manager.mock_service self.assertTrue(service) self.assertTrue(service.is_alive) self.assertTrue(manager.is_any_alive) self.assertEqual(service.alias, 'mock_service') self.assertEqual(service.start_func.call_count, 1)
def test_unregister_handle_error_from_stop(self, mock_expect_func): manager = service_manager.ServiceManager(mock.MagicMock()) manager.register('mock_service', MockService) service = manager.mock_service service._device.stop.side_deffect = Exception( 'Something failed in stop.') manager.unregister('mock_service') mock_expect_func.assert_called_once_with( 'Failed to stop service instance "mock_service".')
def test_resume_services(self): manager = service_manager.ServiceManager(mock.MagicMock()) manager.register('mock_service1', MockService) manager.register('mock_service2', MockService) manager.pause_all() aliases = manager.list_live_services() self.assertEqual(aliases, []) manager.resume_services(['mock_service2']) aliases = manager.list_live_services() self.assertEqual(aliases, ['mock_service2'])
def test_unregister_all(self): manager = service_manager.ServiceManager(mock.MagicMock()) manager.register('mock_service1', MockService) manager.register('mock_service2', MockService) service1 = manager.mock_service1 service2 = manager.mock_service2 manager.unregister_all() self.assertFalse(manager.is_any_alive) self.assertFalse(service1.is_alive) self.assertFalse(service2.is_alive)
def test_for_each_modify_during_iteration(self): manager = service_manager.ServiceManager(mock.MagicMock()) manager.register('mock_service1', MockService) manager.register('mock_service2', MockService) service1 = manager.mock_service1 service2 = manager.mock_service2 service1.ha = mock.MagicMock() service2.ha = mock.MagicMock() manager.for_each( lambda service: manager._service_objects.pop(service.alias)) self.assertFalse(manager._service_objects)
def test_for_each(self): manager = service_manager.ServiceManager(mock.MagicMock()) manager.register('mock_service1', MockService) manager.register('mock_service2', MockService) service1 = manager.mock_service1 service2 = manager.mock_service2 service1.ha = mock.MagicMock() service2.ha = mock.MagicMock() manager.for_each(lambda service: service.ha()) service1.ha.assert_called_with() service2.ha.assert_called_with()
def test_resume_all_with_some_failed(self): manager = service_manager.ServiceManager(mock.MagicMock()) manager.register('mock_service1', MockService) manager.register('mock_service2', MockService) service1 = manager.mock_service1 service1._device.resume.side_deffect = Exception( 'Something failed in resume.') service2 = manager.mock_service2 manager.pause_all() manager.resume_all() self.assertTrue(service2.is_resume_called)
def test_pause_all(self): manager = service_manager.ServiceManager(mock.MagicMock()) manager.register('mock_service1', MockService) manager.register('mock_service2', MockService) service1 = manager.mock_service1 service2 = manager.mock_service2 manager.pause_all() self.assertTrue(service1.is_pause_called) self.assertTrue(service2.is_pause_called) self.assertFalse(service1.is_resume_called) self.assertFalse(service2.is_resume_called)
def test_pause_all(self): manager = service_manager.ServiceManager(mock.MagicMock()) manager.register('mock_service1', MockService) manager.register('mock_service2', MockService) service1 = manager.mock_service1 service2 = manager.mock_service2 manager.pause_all() self.assertEqual(service1.pause_func.call_count, 1) self.assertEqual(service2.pause_func.call_count, 1) self.assertEqual(service1.resume_func.call_count, 0) self.assertEqual(service2.resume_func.call_count, 0)
def test_start_all(self): manager = service_manager.ServiceManager(mock.MagicMock()) manager.register('mock_service1', MockService, start_service=False) manager.register('mock_service2', MockService, start_service=False) service1 = manager.mock_service1 service2 = manager.mock_service2 manager.start_all() self.assertTrue(service1.is_alive) self.assertTrue(service2.is_alive) self.assertEqual(service1.start_func.call_count, 1) self.assertEqual(service2.start_func.call_count, 1)
def test_unregister_all_with_some_failed(self): manager = service_manager.ServiceManager(mock.MagicMock()) manager.register('mock_service1', MockService) manager.register('mock_service2', MockService) service1 = manager.mock_service1 service1._device.stop.side_deffect = Exception( 'Something failed in stop.') service2 = manager.mock_service2 manager.unregister_all() self.assertFalse(manager.is_any_alive) self.assertFalse(service1.is_alive) self.assertFalse(service2.is_alive)
def test_for_each_one_fail(self): manager = service_manager.ServiceManager(mock.MagicMock()) manager.register('mock_service1', MockService) manager.register('mock_service2', MockService) service1 = manager.mock_service1 service2 = manager.mock_service2 service1.ha = mock.MagicMock() service1.ha.side_effect = Exception('Failure in service1.') service2.ha = mock.MagicMock() manager.for_each(lambda service: service.ha()) service1.ha.assert_called_with() service2.ha.assert_called_with() self.assert_recorded_one_error('Failure in service1.')
def test_stop_all_with_some_failed(self): manager = service_manager.ServiceManager(mock.MagicMock()) manager.register('mock_service1', MockService) manager.register('mock_service2', MockService) service1 = manager.mock_service1 service1.stop_func.side_effect = Exception( 'Something failed in start.') service2 = manager.mock_service2 manager.stop_all() self.assertTrue(service1.is_alive) self.assertFalse(service2.is_alive) self.assert_recorded_one_error( 'Failed to stop service "mock_service1"')
def test_pause_all_with_some_failed(self): manager = service_manager.ServiceManager(mock.MagicMock()) manager.register('mock_service1', MockService) manager.register('mock_service2', MockService) service1 = manager.mock_service1 service1.pause_func.side_effect = Exception( 'Something failed in pause.') service2 = manager.mock_service2 manager.pause_all() self.assertEqual(service1.pause_func.call_count, 1) self.assertEqual(service2.pause_func.call_count, 1) self.assertEqual(service1.resume_func.call_count, 0) self.assertEqual(service2.resume_func.call_count, 0) self.assert_recorded_one_error( 'Failed to pause service "mock_service1".')
def test_pause_all(self): manager = service_manager.ServiceManager(mock.MagicMock()) manager.register('mock_service1', MockService) manager.register('mock_service2', MockService) service1 = manager.mock_service1 service2 = manager.mock_service2 mock_call_tracker = mock.Mock() mock_call_tracker.pause1 = service1.pause_func mock_call_tracker.pause2 = service2.pause_func manager.pause_all() self.assertEqual( mock_call_tracker.mock_calls, [mock.call.pause2(), mock.call.pause1()]) self.assertEqual(service1.pause_func.call_count, 1) self.assertEqual(service2.pause_func.call_count, 1) self.assertEqual(service1.resume_func.call_count, 0) self.assertEqual(service2.resume_func.call_count, 0)
def test_start_all(self): manager = service_manager.ServiceManager(mock.MagicMock()) manager.register('mock_service1', MockService, start_service=False) manager.register('mock_service2', MockService, start_service=False) service1 = manager.mock_service1 service2 = manager.mock_service2 mock_call_tracker = mock.Mock() mock_call_tracker.start1 = service1.start_func mock_call_tracker.start2 = service2.start_func manager.start_all() self.assertTrue(service1.is_alive) self.assertTrue(service2.is_alive) self.assertEqual(service1.start_func.call_count, 1) self.assertEqual(service2.start_func.call_count, 1) self.assertEqual(mock_call_tracker.mock_calls, [mock.call.start1(None), mock.call.start2(None)])
def __init__(self, serial=''): self._serial = str(serial) # logging.log_path only exists when this is used in an Mobly test run. self._log_path_base = getattr(logging, 'log_path', '/tmp/logs') self._log_path = os.path.join( self._log_path_base, 'AndroidDevice%s' % self._normalized_serial) self._debug_tag = self._serial self.log = AndroidDeviceLoggerAdapter(logging.getLogger(), {'tag': self.debug_tag}) self.adb = adb.AdbProxy(serial) self.fastboot = fastboot.FastbootProxy(serial) if not self.is_bootloader and self.is_rootable: self.root_adb() self.services = service_manager.ServiceManager(self) self.services.register( 'snippets', snippet_management_service.SnippetManagementService) # Device info cache. self._user_added_device_info = {}
def test_stop_all(self): manager = service_manager.ServiceManager(mock.MagicMock()) manager.register('mock_service1', MockService) manager.register('mock_service2', MockService) service1 = manager.mock_service1 service2 = manager.mock_service2 mock_call_tracker = mock.Mock() mock_call_tracker.stop1 = service1.stop_func mock_call_tracker.stop2 = service2.stop_func manager.stop_all() self.assertFalse(service1.is_alive) self.assertFalse(service2.is_alive) self.assertEqual( mock_call_tracker.mock_calls, [mock.call.stop2(), mock.call.stop1()]) self.assertEqual(service1.start_func.call_count, 1) self.assertEqual(service2.start_func.call_count, 1) self.assertEqual(service1.stop_func.call_count, 1) self.assertEqual(service2.stop_func.call_count, 1)
def test_create_output_excerpts_all(self): manager = service_manager.ServiceManager(mock.MagicMock()) manager.register('mock_service1', MockService) manager.register('mock_service2', MockService) manager.register('mock_service3', MockService) service1 = manager.mock_service1 service2 = manager.mock_service2 service3 = manager.mock_service3 service1.create_output_excerpts = mock.MagicMock() service2.create_output_excerpts = mock.MagicMock() service3.create_output_excerpts = mock.MagicMock() service1.create_output_excerpts.return_value = ['path/to/1.txt'] service2.create_output_excerpts.return_value = [ 'path/to/2-1.txt', 'path/to/2-2.txt' ] service3.create_output_excerpts.return_value = [] mock_test_info = mock.MagicMock(output_path='path/to') result = manager.create_output_excerpts_all(mock_test_info) self.assertEqual(result['mock_service1'], ['path/to/1.txt']) self.assertEqual(result['mock_service2'], ['path/to/2-1.txt', 'path/to/2-2.txt']) self.assertEqual(result['mock_service3'], [])
def test_register_with_service_manager(self, _): mock_device = mock.MagicMock() manager = service_manager.ServiceManager(mock_device) manager.register('sl4a', sl4a_service.Sl4aService) self.assertTrue(manager.sl4a)
def test_register_not_a_class(self): manager = service_manager.ServiceManager(mock.MagicMock()) with self.assertRaisesRegex(service_manager.Error, '.* is not a class!'): manager.register('mock_service', base_service)
def test_register_dup_alias(self): manager = service_manager.ServiceManager(mock.MagicMock()) manager.register('mock_service', MockService) msg = '.* A service is already registered with alias "mock_service"' with self.assertRaisesRegex(service_manager.Error, msg): manager.register('mock_service', MockService)
def test_service_manager_instantiation(self): manager = service_manager.ServiceManager(mock.MagicMock())
def test_unregister_non_existent(self): manager = service_manager.ServiceManager(mock.MagicMock()) with self.assertRaisesRegex( service_manager.Error, '.* No service is registered with alias "mock_service"'): manager.unregister('mock_service')