Пример #1
0
    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)
Пример #3
0
 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')
Пример #4
0
 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')
Пример #5
0
 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')
Пример #6
0
    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)
Пример #8
0
 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)
Пример #9
0
 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)
Пример #10
0
 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)
Пример #11
0
 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)
Пример #12
0
    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)
Пример #13
0
    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)