def test_container_update_same_resource(self, mock_claim, mock_container_update, mock_update): container1 = obj_utils.get_test_container( self.context, cpu=1, memory=1024) container2 = obj_utils.get_test_container( self.context, cpu=1, memory=1024) self._resource_tracker.container_update_claim( self.context, container1, container2) self.assertFalse(mock_claim.called) self.assertFalse(mock_container_update.called) self.assertFalse(mock_update.called)
def test_container_update_same_resource(self, mock_claim, mock_container_update, mock_update): container1 = obj_utils.get_test_container( self.context, cpu=1, memory=1024) container2 = obj_utils.get_test_container( self.context, cpu=1, memory=1024) self._resource_tracker.container_update_claim( self.context, container1, container2) self.assertFalse(mock_claim.called) self.assertFalse(mock_container_update.called) self.assertFalse(mock_update.called)
def test_update_containers_states(self, mock_save): mock_container = obj_utils.get_test_container( self.context, status='Running', host='host1') mock_container_2 = obj_utils.get_test_container( self.context, status='Stopped') conf.CONF.set_override('host', 'host2') with mock.patch.object(self.driver, 'list') as mock_list: mock_list.return_value = [mock_container_2] self.assertEqual(mock_container.host, 'host1') self.assertEqual(mock_container.status, 'Running') self.driver.update_containers_states( self.context, [mock_container]) self.assertEqual(mock_container.host, 'host2') self.assertEqual(mock_container.status, 'Stopped')
def test_update_containers_states(self, mock_save): mock_container = obj_utils.get_test_container( self.context, status='Running', host='host1') mock_container_2 = obj_utils.get_test_container( self.context, status='Stopped') conf.CONF.set_override('host', 'host2') with mock.patch.object(self.driver, 'list') as mock_list: mock_list.return_value = ([mock_container_2], []) self.assertEqual(mock_container.host, 'host1') self.assertEqual(mock_container.status, 'Running') self.driver.update_containers_states( self.context, [mock_container], mock.Mock()) self.assertEqual(mock_container.host, 'host2') self.assertEqual(mock_container.status, 'Stopped')
def test_create_sandbox(self, mock_find_container_by_server_name, mock_ensure_active, mock_nova_client, mock_get_sandbox_name): nova_client_instance = mock.MagicMock() nova_client_instance.create_server.return_value = 'server_instance' mock_get_sandbox_name.return_value = 'test_sanbox_name' mock_nova_client.return_value = nova_client_instance mock_ensure_active.return_value = True mock_find_container_by_server_name.return_value = \ 'test_container_name_id' mock_container = obj_utils.get_test_container(self.context, host=conf.CONF.host) result_sandbox_id = self.driver.create_sandbox(self.context, mock_container) mock_get_sandbox_name.assert_called_once_with(mock_container) nova_client_instance.create_server.assert_called_once_with( name='test_sanbox_name', image='kubernetes/pause', flavor='m1.tiny', key_name=None, nics='auto', availability_zone=':{0}:'.format(conf.CONF.host)) mock_ensure_active.assert_called_once_with(nova_client_instance, 'server_instance') mock_find_container_by_server_name.assert_called_once_with( 'test_sanbox_name') self.assertEqual(result_sandbox_id, 'test_container_name_id')
def test_container_update(self, mock_claim, mock_container_update, mock_update, mock_get_node): container1 = obj_utils.get_test_container( self.context, cpu=1, memory=1024) container2 = obj_utils.get_test_container( self.context, cpu2=2, memory=2048) node = objects.ComputeNode(self.context) node.cpu = 10 node.memory = 3072 mock_get_node.return_value = node self._resource_tracker.container_update_claim( self.context, container1, container2) self.assertTrue(mock_claim.called) self.assertTrue(mock_container_update.called) self.assertTrue(mock_update.called)
def test_container_update(self, mock_claim, mock_container_update, mock_update, mock_get_node): container1 = obj_utils.get_test_container( self.context, cpu=1, memory=1024) container2 = obj_utils.get_test_container( self.context, cpu2=2, memory=2048) node = objects.ComputeNode(self.context) node.cpu = 10 node.memory = 3072 mock_get_node.return_value = node self._resource_tracker.container_update_claim( self.context, container1, container2) self.assertTrue(mock_claim.called) self.assertTrue(mock_container_update.called) self.assertTrue(mock_update.called)
def test_heal_with_rebuilding_container(self, mock_container_rebuild): mock_container = obj_utils.get_test_container( self.context, status='Running', auto_heal=True, task_state=None) self.driver.heal_with_rebuilding_container( self.context, mock_container) mock_container_rebuild.assert_called_once_with(self.context, mock_container)
def test_heal_with_rebuilding_container(self): mock_compute_manager = mock.Mock() mock_container = obj_utils.get_test_container( self.context, status='Running', auto_heal=True, task_state=None) self.driver.heal_with_rebuilding_container( self.context, mock_container, mock_compute_manager) mock_compute_manager.container_rebuild.assert_called_once_with( self.context, mock_container)
def setUp(self): super(TestDockerDriver, self).setUp() self.driver = DockerDriver() dfc_patcher = mock.patch.object(docker_utils, 'docker_client') docker_client = dfc_patcher.start() self.dfc_context_manager = docker_client.return_value self.mock_docker = mock.MagicMock() self.mock_default_container = obj_utils.get_test_container( self.context) self.dfc_context_manager.__enter__.return_value = self.mock_docker self.addCleanup(dfc_patcher.stop)
def setUp(self, mock_get): super(TestDockerDriver, self).setUp() self.driver = DockerDriver() dfc_patcher = mock.patch.object(docker_utils, 'docker_client') docker_client = dfc_patcher.start() self.dfc_context_manager = docker_client.return_value self.mock_docker = mock.MagicMock() self.mock_default_container = obj_utils.get_test_container( self.context) self.dfc_context_manager.__enter__.return_value = self.mock_docker self.addCleanup(dfc_patcher.stop)
def test_get_local_containers(self, mock_list_by_host, mock_list): uuid = uuidutils.generate_uuid() uuid2 = uuidutils.generate_uuid() uuid3 = uuidutils.generate_uuid() mock_container = obj_utils.get_test_container(self.context, uuid=uuid, host='host') mock_container_2 = obj_utils.get_test_container(self.context, uuid=uuid2, host='host') mock_container_3 = obj_utils.get_test_container(self.context, uuid=uuid3, host='host2') def fake_container_list(context, filters): map = {} map[uuid] = mock_container map[uuid2] = mock_container_2 map[uuid3] = mock_container_3 return [map[u] for u in filters['uuid']] def fake_container_list_by_host(context, host): containers = [mock_container, mock_container_2, mock_container_3] return [c for c in containers if c.host == conf.CONF.host] mock_list.side_effect = fake_container_list mock_list_by_host.side_effect = fake_container_list_by_host # Containers in Docker matches DB records conf.CONF.set_override('host', 'host') docker_uuids = [uuid, uuid2] local_containers = self.driver._get_local_containers( self.context, docker_uuids) self.assertEqual(2, len(local_containers)) self.assertIn(mock_container, local_containers) self.assertIn(mock_container_2, local_containers) self.assertNotIn(mock_container_3, local_containers) # Containers in Docker doesn't match DB records conf.CONF.set_override('host', 'host') docker_uuids = [uuid2, uuid3] local_containers = self.driver._get_local_containers( self.context, docker_uuids) self.assertEqual(3, len(local_containers)) self.assertIn(mock_container, local_containers) self.assertIn(mock_container_2, local_containers) self.assertIn(mock_container_3, local_containers) # Containers are recorded in DB but missing in Docker conf.CONF.set_override('host', 'host') docker_uuids = [] local_containers = self.driver._get_local_containers( self.context, docker_uuids) self.assertEqual(2, len(local_containers)) self.assertIn(mock_container, local_containers) self.assertIn(mock_container_2, local_containers) self.assertNotIn(mock_container_3, local_containers) # Containers are present in Docker but not recorded in DB conf.CONF.set_override('host', 'host3') docker_uuids = [uuid2, uuid3] local_containers = self.driver._get_local_containers( self.context, docker_uuids) self.assertEqual(2, len(local_containers)) self.assertNotIn(mock_container, local_containers) self.assertIn(mock_container_2, local_containers) self.assertIn(mock_container_3, local_containers)
def test_get_local_containers(self, mock_list_by_host, mock_list): uuid = uuidutils.generate_uuid() uuid2 = uuidutils.generate_uuid() uuid3 = uuidutils.generate_uuid() mock_container = obj_utils.get_test_container( self.context, uuid=uuid, host='host') mock_container_2 = obj_utils.get_test_container( self.context, uuid=uuid2, host='host') mock_container_3 = obj_utils.get_test_container( self.context, uuid=uuid3, host='host2') def fake_container_list(context, filters): map = {} map[uuid] = mock_container map[uuid2] = mock_container_2 map[uuid3] = mock_container_3 return [map[u] for u in filters['uuid']] def fake_container_list_by_host(context, host): containers = [mock_container, mock_container_2, mock_container_3] return [c for c in containers if c.host == conf.CONF.host] mock_list.side_effect = fake_container_list mock_list_by_host.side_effect = fake_container_list_by_host # Containers in Docker matches DB records conf.CONF.set_override('host', 'host') docker_uuids = [uuid, uuid2] local_containers = self.driver._get_local_containers( self.context, docker_uuids) self.assertEqual(2, len(local_containers)) self.assertIn(mock_container, local_containers) self.assertIn(mock_container_2, local_containers) self.assertNotIn(mock_container_3, local_containers) # Containers in Docker doesn't match DB records conf.CONF.set_override('host', 'host') docker_uuids = [uuid2, uuid3] local_containers = self.driver._get_local_containers( self.context, docker_uuids) self.assertEqual(3, len(local_containers)) self.assertIn(mock_container, local_containers) self.assertIn(mock_container_2, local_containers) self.assertIn(mock_container_3, local_containers) # Containers are recorded in DB but missing in Docker conf.CONF.set_override('host', 'host') docker_uuids = [] local_containers = self.driver._get_local_containers( self.context, docker_uuids) self.assertEqual(2, len(local_containers)) self.assertIn(mock_container, local_containers) self.assertIn(mock_container_2, local_containers) self.assertNotIn(mock_container_3, local_containers) # Containers are present in Docker but not recorded in DB conf.CONF.set_override('host', 'host3') docker_uuids = [uuid2, uuid3] local_containers = self.driver._get_local_containers( self.context, docker_uuids) self.assertEqual(2, len(local_containers)) self.assertNotIn(mock_container, local_containers) self.assertIn(mock_container_2, local_containers) self.assertIn(mock_container_3, local_containers)