Ejemplo n.º 1
0
    def test_bind(self, *mocks):

        mock_agent = mocks[0]
        mock_context = mocks[1]
        mock_factory = mocks[2]
        mock_bindings = mocks[3]
        mock_task_status = mocks[4]
        mock_uuid = mocks[5]

        consumer = {'id': '1234'}
        mock_consumer_manager = Mock()
        mock_consumer_manager.get_consumer = Mock(return_value=consumer)
        mock_factory.consumer_manager = Mock(return_value=mock_consumer_manager)

        binding = {}
        mock_bind_manager = Mock()
        mock_bind_manager.get_bind = Mock(return_value=binding)
        mock_bind_manager.action_pending = Mock()
        mock_factory.consumer_bind_manager = Mock(return_value=mock_bind_manager)

        agent_bindings = []
        mock_bindings.return_value = agent_bindings

        task_id = '2345'
        mock_context.return_value = {}
        mock_uuid.return_value = task_id

        # test manager

        repo_id = '100'
        distributor_id = '200'
        options = {}
        agent_manager = AgentManager()
        agent_manager.bind(consumer['id'], repo_id, distributor_id, options)

        # validations

        task_tags = [
            tags.resource_tag(tags.RESOURCE_CONSUMER_TYPE, consumer['id']),
            tags.resource_tag(tags.RESOURCE_REPOSITORY_TYPE, repo_id),
            tags.resource_tag(tags.RESOURCE_REPOSITORY_DISTRIBUTOR_TYPE, distributor_id),
            tags.action_tag(tags.ACTION_AGENT_BIND)
        ]

        mock_consumer_manager.get_consumer.assert_called_with(consumer['id'])
        mock_bind_manager.get_bind.assert_called_with(consumer['id'], repo_id, distributor_id)
        mock_bindings.assert_called_with([binding])

        mock_context.assert_called_with(
            consumer,
            task_id=task_id,
            action='bind',
            consumer_id=consumer['id'],
            repo_id=repo_id,
            distributor_id=distributor_id)

        mock_task_status.assert_called_with(task_id, 'agent', tags=task_tags)
        mock_agent.bind.assert_called_with(mock_context.return_value, agent_bindings, options)
        mock_bind_manager.action_pending.assert_called_with(
            consumer['id'], repo_id, distributor_id, Bind.Action.BIND, task_id)
Ejemplo n.º 2
0
    def test_unregistered(self, mock_agent, mock_context, mock_factory, mock_delete_queue):
        url = 'test-url'
        queue = 'test-queue'
        consumer_id = 'abc'
        consumer = {'id': consumer_id}
        mock_consumer_manager = Mock()
        mock_consumer_manager.get_consumer = Mock(return_value=consumer)
        mock_factory.consumer_manager = Mock(return_value=mock_consumer_manager)

        mock_context.return_value = Mock(url=url, address=queue)

        # test manager

        agent_manager = AgentManager()

        agent_manager.unregister(consumer_id)

        # validations

        task_tags = [
            tags.resource_tag(tags.ACTION_AGENT_QUEUE_DELETE, consumer['id'])
        ]

        mock_context.assert_called_with(consumer)
        mock_agent.unregister.assert_called_with(mock_context.return_value)
        mock_delete_queue.apply_async.assert_called_once_with(
            args=[url, queue, consumer_id], countdown=QUEUE_DELETE_DELAY, tags=task_tags)
Ejemplo n.º 3
0
    def test_bind(self, *mocks):

        mock_agent = mocks[0]
        mock_context = mocks[1]
        mock_factory = mocks[2]
        mock_bindings = mocks[3]
        mock_task_status = mocks[4]
        mock_uuid = mocks[5]

        consumer = {'id': '1234'}
        mock_consumer_manager = Mock()
        mock_consumer_manager.get_consumer = Mock(return_value=consumer)
        mock_factory.consumer_manager = Mock(return_value=mock_consumer_manager)

        binding = {}
        mock_bind_manager = Mock()
        mock_bind_manager.get_bind = Mock(return_value=binding)
        mock_bind_manager.action_pending = Mock()
        mock_factory.consumer_bind_manager = Mock(return_value=mock_bind_manager)

        agent_bindings = []
        mock_bindings.return_value = agent_bindings

        task_id = '2345'
        mock_context.return_value = {}
        mock_uuid.return_value = task_id

        # test manager

        repo_id = '100'
        distributor_id = '200'
        options = {}
        agent_manager = AgentManager()
        agent_manager.bind(consumer['id'], repo_id, distributor_id, options)

        # validations

        task_tags = [
            tags.resource_tag(tags.RESOURCE_CONSUMER_TYPE, consumer['id']),
            tags.resource_tag(tags.RESOURCE_REPOSITORY_TYPE, repo_id),
            tags.resource_tag(tags.RESOURCE_REPOSITORY_DISTRIBUTOR_TYPE, distributor_id),
            tags.action_tag(tags.ACTION_AGENT_BIND)
        ]

        mock_consumer_manager.get_consumer.assert_called_with(consumer['id'])
        mock_bind_manager.get_bind.assert_called_with(consumer['id'], repo_id, distributor_id)
        mock_bindings.assert_called_with([binding])

        mock_context.assert_called_with(
            consumer,
            task_id=task_id,
            action='bind',
            consumer_id=consumer['id'],
            repo_id=repo_id,
            distributor_id=distributor_id)

        mock_task_status.assert_called_with(task_id=task_id, worker_name='agent', tags=task_tags)
        mock_agent.bind.assert_called_with(mock_context.return_value, agent_bindings, options)
        mock_bind_manager.action_pending.assert_called_with(
            consumer['id'], repo_id, distributor_id, Bind.Action.BIND, task_id)
Ejemplo n.º 4
0
    def test_unregistered(self, mock_agent, mock_context, mock_factory, mock_delete_queue):
        url = 'test-url'
        queue = 'test-queue'
        consumer_id = 'abc'
        consumer = {'id': consumer_id}
        mock_consumer_manager = Mock()
        mock_consumer_manager.get_consumer = Mock(return_value=consumer)
        mock_factory.consumer_manager = Mock(return_value=mock_consumer_manager)

        mock_context.return_value = Mock(url=url, address=queue)

        # test manager

        agent_manager = AgentManager()

        agent_manager.unregister(consumer_id)

        # validations

        task_tags = [
            tags.resource_tag(tags.ACTION_AGENT_QUEUE_DELETE, consumer['id'])
        ]

        mock_context.assert_called_with(consumer)
        mock_agent.unregister.assert_called_with(mock_context.return_value)
        mock_delete_queue.apply_async.assert_called_once_with(
            args=[url, queue, consumer_id], countdown=QUEUE_DELETE_DELAY, tags=task_tags)
Ejemplo n.º 5
0
    def test_cancel(self, agent, context, mock_factory):
        consumer = {'id': 'xyz'}
        mock_consumer_manager = Mock()
        mock_consumer_manager.get_consumer = Mock(return_value=consumer)
        mock_factory.consumer_manager = Mock(
            return_value=mock_consumer_manager)

        mock_context = Mock()
        mock_context.uuid = 'test-uuid'
        mock_context.url = 'http://broker.com'
        context.return_value = mock_context

        mock_agent = Mock()
        agent.return_value = mock_agent

        # test manager

        task_id = '1234'
        agent_manager = AgentManager()
        consumer_id = 'abc'
        agent_manager.cancel_request(consumer_id, task_id)

        # validations

        mock_agent.cancel.assert_called_with(mock_context, task_id)
Ejemplo n.º 6
0
 def test_invoke_plugin(self):
     method = Mock()
     args = 1, 2, 3
     kwargs = {'a': 1, 'b': 2}
     # test manager
     AgentManager._invoke_plugin(method, *args, **kwargs)
     # validate
     method.assert_called_once_with(*args, **kwargs)
Ejemplo n.º 7
0
 def test_invoke_plugin(self):
     method = Mock()
     args = 1, 2, 3
     kwargs = {'a': 1, 'b': 2}
     # test manager
     AgentManager._invoke_plugin(method, *args, **kwargs)
     # validate
     method.assert_called_once_with(*args, **kwargs)
Ejemplo n.º 8
0
    def test_uninstall_content(self, *mocks):
        mock_agent = mocks[0]
        mock_context = mocks[1]
        mock_factory = mocks[2]
        mock_get_profiler = mocks[3]
        mock_get_profiled_consumer = mocks[4]
        mock_task_status = mocks[5]
        mock_uuid = mocks[6]

        unit = {'type_id': 'xyz', 'unit_key': {}}

        consumer = {'id': '1234'}
        mock_consumer_manager = Mock()
        mock_consumer_manager.get_consumer = Mock(return_value=consumer)
        mock_factory.consumer_manager = Mock(
            return_value=mock_consumer_manager)

        mock_get_profiled_consumer.return_value = consumer

        mock_profiler = Mock()
        mock_profiler.uninstall_units = Mock(return_value=[unit])
        mock_get_profiler.return_value = (mock_profiler, {})

        task_id = '2345'
        mock_context.return_value = {}
        mock_uuid.return_value = task_id

        # test manager

        options = {'a': 1}
        agent_manager = AgentManager()
        agent_manager.uninstall_content(consumer['id'], [unit], options)

        # validations

        task_tags = [
            tags.resource_tag(tags.RESOURCE_CONSUMER_TYPE, consumer['id']),
            tags.action_tag(tags.ACTION_AGENT_UNIT_UNINSTALL)
        ]

        mock_consumer_manager.get_consumer.assert_called_with(consumer['id'])
        mock_context.assert_called_with(consumer,
                                        task_id=task_id,
                                        consumer_id=consumer['id'])
        mock_task_status.assert_called_with(task_id=task_id,
                                            worker_name='agent',
                                            tags=task_tags)
        mock_profiler.uninstall_units.assert_called_with(
            consumer, [unit], options, {}, ANY)
        mock_agent.uninstall.assert_called_with(mock_context.return_value,
                                                [unit], options)
        mock_factory.consumer_history_manager(
        ).record_event.assert_called_with(consumer['id'],
                                          'content_unit_uninstalled',
                                          {'units': [unit]})
Ejemplo n.º 9
0
    def test_delete_queue_still_registered(self, agent, consumer_manager):
        url = 'test-url'
        queue = 'test-queue'
        consumer_id = 'test-consumer'

        # test
        AgentManager.delete_queue(url, queue, consumer_id)

        # validation
        consumer_manager.assert_called_once_with()
        consumer_manager = consumer_manager.return_value
        consumer_manager.get_consumer.assert_called_once_with(consumer_id)
        self.assertFalse(agent.called)
Ejemplo n.º 10
0
    def test_delete_queue_still_registered(self, agent, consumer_manager):
        url = 'test-url'
        queue = 'test-queue'
        consumer_id = 'test-consumer'

        # test
        AgentManager.delete_queue(url, queue, consumer_id)

        # validation
        consumer_manager.assert_called_once_with()
        consumer_manager = consumer_manager.return_value
        consumer_manager.get_consumer.assert_called_once_with(consumer_id)
        self.assertFalse(agent.called)
Ejemplo n.º 11
0
    def test_uninstall_content(self, *mocks):
        mock_agent = mocks[0]
        mock_context = mocks[1]
        mock_factory = mocks[2]
        mock_get_profiler = mocks[3]
        mock_get_profiled_consumer = mocks[4]
        mock_task_status_manager = mocks[5]
        mock_uuid = mocks[6]

        unit = {'type_id': 'xyz', 'unit_key': {}}

        consumer = {'id': '1234'}
        mock_consumer_manager = Mock()
        mock_consumer_manager.get_consumer = Mock(return_value=consumer)
        mock_factory.consumer_manager = Mock(return_value=mock_consumer_manager)

        mock_get_profiled_consumer.return_value = consumer

        mock_profiler = Mock()
        mock_profiler.uninstall_units = Mock(return_value=[unit])
        mock_get_profiler.return_value = (mock_profiler, {})

        task_id = '2345'
        mock_task = {'task_id': task_id}
        mock_task_status_manager.create_task_status = Mock(return_value=mock_task)

        mock_context.return_value = {}

        mock_uuid.return_value = task_id

        # test manager

        options = {'a': 1}
        agent_manager = AgentManager()
        task = agent_manager.uninstall_content(consumer['id'], [unit], options)

        # validations

        task_tags = [
            tags.resource_tag(tags.RESOURCE_CONSUMER_TYPE, consumer['id']),
            tags.action_tag(tags.ACTION_AGENT_UNIT_UNINSTALL)
        ]

        self.assertEqual(task, mock_task)
        mock_consumer_manager.get_consumer.assert_called_with(consumer['id'])
        mock_context.assert_called_with(consumer, task_id=task_id, consumer_id=consumer['id'])
        mock_task_status_manager.create_task_status.assert_called_with(task_id, 'agent',
                                                                       tags=task_tags)
        mock_profiler.uninstall_units.assert_called_with(consumer, [unit], options, {}, ANY)
        mock_agent.uninstall.assert_called_with(mock_context.return_value, [unit], options)
Ejemplo n.º 12
0
    def test_update_content(self, *mocks):
        mock_agent = mocks[0]
        mock_context = mocks[1]
        mock_factory = mocks[2]
        mock_get_profiler = mocks[3]
        mock_get_profiled_consumer = mocks[4]
        mock_task_status = mocks[5]
        mock_uuid = mocks[6]

        unit = {'type_id': 'xyz', 'unit_key': {}}

        consumer = {'id': '1234'}
        mock_consumer_manager = Mock()
        mock_consumer_manager.get_consumer = Mock(return_value=consumer)
        mock_factory.consumer_manager = Mock(return_value=mock_consumer_manager)

        mock_get_profiled_consumer.return_value = consumer

        mock_profiler = Mock()
        mock_profiler.update_units = Mock(return_value=[unit])
        mock_get_profiler.return_value = (mock_profiler, {})

        task_id = '2345'
        mock_task = TaskStatus(task_id=task_id)
        mock_task_status.save = Mock(return_value=mock_task)

        mock_context.return_value = {}

        mock_uuid.return_value = task_id

        # test manager

        options = {'a': 1}
        agent_manager = AgentManager()
        task = agent_manager.update_content(consumer['id'], [unit], options)

        # validations

        task_tags = [
            tags.resource_tag(tags.RESOURCE_CONSUMER_TYPE, consumer['id']),
            tags.action_tag(tags.ACTION_AGENT_UNIT_UPDATE)
        ]

        mock_consumer_manager.get_consumer.assert_called_with(consumer['id'])
        mock_context.assert_called_with(consumer, task_id=task_id, consumer_id=consumer['id'])
        self.assertEqual(task['task_id'], task_id)
        self.assertEqual(task['worker_name'], 'agent')
        self.assertEqual(task['tags'], task_tags)
        mock_profiler.update_units.assert_called_with(consumer, [unit], options, {}, ANY)
        mock_agent.update.assert_called_with(mock_context.return_value, [unit], options)
Ejemplo n.º 13
0
    def test_delete_queue(self, agent, consumer_manager):
        url = 'test-url'
        queue = 'test-queue'
        consumer_id = 'test-consumer'
        consumer_manager.return_value.get_consumer.side_effect = MissingResource

        # test
        AgentManager.delete_queue(url, queue, consumer_id)

        # validation
        consumer_manager.assert_called_once_with()
        consumer_manager = consumer_manager.return_value
        consumer_manager.get_consumer.assert_called_once_with(consumer_id)
        agent.assert_called_once_with()
        agent = agent.return_value
        agent.delete_queue.assert_called_once_with(url, queue)
Ejemplo n.º 14
0
    def test_get_agent_bindings(self, mock_factory):
        bind_payload = {'a': 1, 'b': 2}
        distributor = {'distributor_type_id': '3838'}
        mock_distributor_manager = Mock()
        mock_distributor_manager.get_distributor = Mock(return_value=distributor)
        mock_distributor_manager.create_bind_payload = Mock(return_value=bind_payload)
        mock_factory.repo_distributor_manager = Mock(return_value=mock_distributor_manager)

        # test manager

        bindings = [
            {'consumer_id': '10', 'repo_id': '20', 'distributor_id': '30', 'binding_config': {}},
            {'consumer_id': '40', 'repo_id': '50', 'distributor_id': '60', 'binding_config': {}},
        ]
        agent_bindings = AgentManager._bindings(bindings)

        # validation

        for binding in bindings:
            mock_distributor_manager.get_distributor.assert_any_call(
                binding['repo_id'], binding['distributor_id'])
            mock_distributor_manager.create_bind_payload.assert_any_call(
                binding['repo_id'], binding['distributor_id'], binding['binding_config'])

        self.assertEqual(len(agent_bindings), 2)
        for binding, agent_binding in itertools.izip(bindings, agent_bindings):
            self.assertEqual(binding['repo_id'], agent_binding['repo_id'])
            self.assertEqual(distributor['distributor_type_id'], agent_binding['type_id'])
            self.assertEqual(bind_payload, agent_binding['details'])
Ejemplo n.º 15
0
    def test_get_agent_unbindings(self, m_model):
        distributor = model.Distributor(distributor_type_id='3838')
        m_model.Distributor.objects.get_or_404.return_value = distributor

        bindings = [
            {
                'consumer_id': '10',
                'repo_id': '20',
                'distributor_id': '30',
                'binding_config': {}
            },
            {
                'consumer_id': '40',
                'repo_id': '50',
                'distributor_id': '60',
                'binding_config': {}
            },
        ]
        agent_bindings = AgentManager._unbindings(bindings)

        for binding in bindings:
            m_model.Distributor.objects.get_or_404.assert_any_call(
                repo_id=binding['repo_id'],
                distributor_id=binding['distributor_id'])

        self.assertEqual(len(agent_bindings), 2)
        for binding, agent_binding in itertools.izip(bindings, agent_bindings):
            self.assertEqual(binding['repo_id'], agent_binding['repo_id'])
            self.assertEqual(distributor['distributor_type_id'],
                             agent_binding['type_id'])
Ejemplo n.º 16
0
    def test_get_agent_bindings(self, mock_factory):
        bind_payload = {'a': 1, 'b': 2}
        distributor = {'distributor_type_id': '3838'}
        mock_distributor_manager = Mock()
        mock_distributor_manager.get_distributor = Mock(return_value=distributor)
        mock_distributor_manager.create_bind_payload = Mock(return_value=bind_payload)
        mock_factory.repo_distributor_manager = Mock(return_value=mock_distributor_manager)

        # test manager

        bindings = [
            {'consumer_id': '10', 'repo_id': '20', 'distributor_id': '30', 'binding_config': {}},
            {'consumer_id': '40', 'repo_id': '50', 'distributor_id': '60', 'binding_config': {}},
        ]
        agent_bindings = AgentManager._bindings(bindings)

        # validation

        for binding in bindings:
            mock_distributor_manager.get_distributor.assert_any_call(
                binding['repo_id'], binding['distributor_id'])
            mock_distributor_manager.create_bind_payload.assert_any_call(
                binding['repo_id'], binding['distributor_id'], binding['binding_config'])

        self.assertEqual(len(agent_bindings), 2)
        for binding, agent_binding in itertools.izip(bindings, agent_bindings):
            self.assertEqual(binding['repo_id'], agent_binding['repo_id'])
            self.assertEqual(distributor['distributor_type_id'], agent_binding['type_id'])
            self.assertEqual(bind_payload, agent_binding['details'])
Ejemplo n.º 17
0
    def test_get_agent_unbindings_distributor_deleted(self, m_model):
        """
        Test that AgentManager._unbindings does not raise an exception when the distributor is
        deleted and returns None as the distributor_type_id.
        """
        m_model.Distributor.objects.get_or_404.side_effect = MissingResource
        bindings = [
            {
                'consumer_id': '10',
                'repo_id': '20',
                'distributor_id': '30',
                'binding_config': {}
            },
            {
                'consumer_id': '40',
                'repo_id': '50',
                'distributor_id': '60',
                'binding_config': {}
            },
        ]
        agent_bindings = AgentManager._unbindings(bindings)

        # validation
        self.assertTrue(m_model.Distributor.objects.get_or_404.called)
        self.assertEqual(len(agent_bindings), 2)
        for binding, agent_binding in itertools.izip(bindings, agent_bindings):
            self.assertEqual(binding['repo_id'], agent_binding['repo_id'])
            self.assertEqual(None, agent_binding['type_id'])
Ejemplo n.º 18
0
    def test_get_agent_unbindings_distributor_deleted(self, mock_managers):
        # Test that AgentManager._unbindings does not raise an exception
        # when the distributor is deleted and returns None as the distributor_type_id.
        class MockedRepoDistributorManager:
            def get_distributor(*args):
                raise MissingResource()

        mock_managers.repo_distributor_manager = Mock(
            return_value=MockedRepoDistributorManager())

        # test
        bindings = [
            {
                'consumer_id': '10',
                'repo_id': '20',
                'distributor_id': '30',
                'binding_config': {}
            },
            {
                'consumer_id': '40',
                'repo_id': '50',
                'distributor_id': '60',
                'binding_config': {}
            },
        ]
        agent_bindings = AgentManager._unbindings(bindings)

        # validation
        self.assertEqual(len(agent_bindings), 2)
        for binding, agent_binding in itertools.izip(bindings, agent_bindings):
            self.assertEqual(binding['repo_id'], agent_binding['repo_id'])
            self.assertEqual(None, agent_binding['type_id'])
Ejemplo n.º 19
0
    def test_delete_queue(self, agent, consumer_manager):
        url = 'test-url'
        queue = 'test-queue'
        consumer_id = 'test-consumer'
        consumer_manager.return_value.get_consumer.side_effect = MissingResource

        # test
        AgentManager.delete_queue(url, queue, consumer_id)

        # validation
        consumer_manager.assert_called_once_with()
        consumer_manager = consumer_manager.return_value
        consumer_manager.get_consumer.assert_called_once_with(consumer_id)
        agent.assert_called_once_with()
        agent = agent.return_value
        agent.delete_queue.assert_called_once_with(url, queue)
Ejemplo n.º 20
0
    def test_unregistered(self, mock_agent, mock_context, mock_factory):
        consumer = {'id': 'xyz'}
        mock_consumer_manager = Mock()
        mock_consumer_manager.get_consumer = Mock(return_value=consumer)
        mock_factory.consumer_manager = Mock(return_value=mock_consumer_manager)

        mock_context.return_value = {}

        # test manager

        agent_manager = AgentManager()
        consumer_id = 'abc'
        agent_manager.unregistered(consumer_id)

        # validations

        mock_context.assert_called_with(consumer)
        mock_agent.unregistered.assert_called_with(mock_context.return_value)
Ejemplo n.º 21
0
    def test_unregistered(self, mock_agent, mock_context, mock_factory):
        consumer = {'id': 'xyz'}
        mock_consumer_manager = Mock()
        mock_consumer_manager.get_consumer = Mock(return_value=consumer)
        mock_factory.consumer_manager = Mock(return_value=mock_consumer_manager)

        mock_context.return_value = {}

        # test manager

        agent_manager = AgentManager()
        consumer_id = 'abc'
        agent_manager.unregistered(consumer_id)

        # validations

        mock_context.assert_called_with(consumer)
        mock_agent.unregistered.assert_called_with(mock_context.return_value)
Ejemplo n.º 22
0
    def test_find_profiler_not_found(self, mock_plugins):
        type_id = '2344'
        mock_plugins.get_profiler_by_type.side_effect = plugin_exceptions.PluginNotFound()

        # test manager

        plugin, cfg = AgentManager._profiler(type_id)

        # validation

        mock_plugins.get_profiler_by_type.assert_called_with(type_id)
        self.assertTrue(isinstance(plugin, Profiler))
        self.assertEqual(cfg, {})
Ejemplo n.º 23
0
    def test_find_profiler_not_found(self, mock_plugins):
        type_id = '2344'
        mock_plugins.get_profiler_by_type.side_effect = plugin_exceptions.PluginNotFound()

        # test manager

        plugin, cfg = AgentManager._profiler(type_id)

        # validation

        mock_plugins.get_profiler_by_type.assert_called_with(type_id)
        self.assertTrue(isinstance(plugin, Profiler))
        self.assertEqual(cfg, {})
Ejemplo n.º 24
0
    def test_find_profiler(self, mock_plugins):
        type_id = '2344'
        plugin = Mock()
        mock_plugins.get_profiler_by_type.return_value = (plugin, {})

        # test manager

        _plugin, cfg = AgentManager._profiler(type_id)

        # validation

        mock_plugins.get_profiler_by_type.assert_called_with(type_id)
        self.assertEqual(plugin, _plugin)
        self.assertEqual(cfg, {})
Ejemplo n.º 25
0
    def test_find_profiler(self, mock_plugins):
        type_id = '2344'
        plugin = Mock()
        mock_plugins.get_profiler_by_type.return_value = (plugin, {})

        # test manager

        _plugin, cfg = AgentManager._profiler(type_id)

        # validation

        mock_plugins.get_profiler_by_type.assert_called_with(type_id)
        self.assertEqual(plugin, _plugin)
        self.assertEqual(cfg, {})
Ejemplo n.º 26
0
    def test_cancel(self, agent, context, mock_factory):
        consumer = {'id': 'xyz'}
        mock_consumer_manager = Mock()
        mock_consumer_manager.get_consumer = Mock(return_value=consumer)
        mock_factory.consumer_manager = Mock(return_value=mock_consumer_manager)

        mock_context = Mock()
        mock_context.uuid = 'test-uuid'
        mock_context.url = 'http://broker.com'
        context.return_value = mock_context

        mock_agent = Mock()
        agent.return_value = mock_agent

        # test manager

        task_id = '1234'
        agent_manager = AgentManager()
        consumer_id = 'abc'
        agent_manager.cancel_request(consumer_id, task_id)

        # validations

        mock_agent.cancel.assert_called_with(mock_context, task_id)
Ejemplo n.º 27
0
    def test_get_agent_unbindings_distributor_deleted(self, m_model):
        """
        Test that AgentManager._unbindings does not raise an exception when the distributor is
        deleted and returns None as the distributor_type_id.
        """
        m_model.Distributor.objects.get_or_404.side_effect = MissingResource
        bindings = [
            {'consumer_id': '10', 'repo_id': '20', 'distributor_id': '30', 'binding_config': {}},
            {'consumer_id': '40', 'repo_id': '50', 'distributor_id': '60', 'binding_config': {}},
        ]
        agent_bindings = AgentManager._unbindings(bindings)

        # validation
        self.assertTrue(m_model.Distributor.objects.get_or_404.called)
        self.assertEqual(len(agent_bindings), 2)
        for binding, agent_binding in itertools.izip(bindings, agent_bindings):
            self.assertEqual(binding['repo_id'], agent_binding['repo_id'])
            self.assertEqual(None, agent_binding['type_id'])
Ejemplo n.º 28
0
    def test_get_agent_unbindings(self, m_model):
        distributor = model.Distributor(distributor_type_id='3838')
        m_model.Distributor.objects.get_or_404.return_value = distributor

        bindings = [
            {'consumer_id': '10', 'repo_id': '20', 'distributor_id': '30', 'binding_config': {}},
            {'consumer_id': '40', 'repo_id': '50', 'distributor_id': '60', 'binding_config': {}},
        ]
        agent_bindings = AgentManager._unbindings(bindings)

        for binding in bindings:
            m_model.Distributor.objects.get_or_404.assert_any_call(
                repo_id=binding['repo_id'], distributor_id=binding['distributor_id'])

        self.assertEqual(len(agent_bindings), 2)
        for binding, agent_binding in itertools.izip(bindings, agent_bindings):
            self.assertEqual(binding['repo_id'], agent_binding['repo_id'])
            self.assertEqual(distributor['distributor_type_id'], agent_binding['type_id'])
Ejemplo n.º 29
0
    def test_get_agent_unbindings_distributor_deleted(self, mock_repo_distributor_manager):
        # Test that AgentManager._unbindings does not raise an exception
        # when the distributor is deleted and returns None as the distributor_type_id.
        def test_get_distributor():
            raise MissingResource()
        mock_repo_distributor_manager.get_distributor = test_get_distributor

        # test
        bindings = [
            {'consumer_id': '10', 'repo_id': '20', 'distributor_id': '30', 'binding_config': {}},
            {'consumer_id': '40', 'repo_id': '50', 'distributor_id': '60', 'binding_config': {}},
        ]
        agent_bindings = AgentManager._unbindings(bindings)

        # validation
        self.assertEqual(len(agent_bindings), 2)
        for binding, agent_binding in itertools.izip(bindings, agent_bindings):
            self.assertEqual(binding['repo_id'], agent_binding['repo_id'])
            self.assertEqual(None, agent_binding['type_id'])
Ejemplo n.º 30
0
    def test_profiled_consumer(self, mock_factory):
        consumer_id = '2345'
        type_id = 123
        profile = {'a': 1}
        profiles = [{'content_type': type_id, 'profile': profile}]
        mock_profile_manager = Mock()
        mock_profile_manager.get_profiles = Mock(return_value=profiles)
        mock_factory.consumer_profile_manager = Mock(return_value=mock_profile_manager)

        # test manager

        profiled = AgentManager._profiled_consumer(consumer_id)

        # validation

        mock_profile_manager.get_profiles.assert_called_once_with(consumer_id)
        self.assertTrue(isinstance(profiled, ProfiledConsumer))
        self.assertEqual(profiled.id, consumer_id)
        self.assertEqual(profiled.profiles, {type_id: profile})
Ejemplo n.º 31
0
    def test_profiled_consumer(self, mock_factory):
        consumer_id = '2345'
        type_id = 123
        profile = {'a': 1}
        profiles = [{'content_type': type_id, 'profile': profile}]
        mock_profile_manager = Mock()
        mock_profile_manager.get_profiles = Mock(return_value=profiles)
        mock_factory.consumer_profile_manager = Mock(return_value=mock_profile_manager)

        # test manager

        profiled = AgentManager._profiled_consumer(consumer_id)

        # validation

        mock_profile_manager.get_profiles.assert_called_once_with(consumer_id)
        self.assertTrue(isinstance(profiled, ProfiledConsumer))
        self.assertEqual(profiled.id, consumer_id)
        self.assertEqual(profiled.profiles, {type_id: profile})
Ejemplo n.º 32
0
    def test_get_agent_bindings(self, m_model, m_dist_cont):
        bind_payload = {'a': 1, 'b': 2}
        distributor = model.Distributor(distributor_type_id='3838')
        m_model.Distributor.objects.get_or_404.return_value = distributor
        m_dist_cont.create_bind_payload = Mock(return_value=bind_payload)

        bindings = [
            {'consumer_id': '10', 'repo_id': '20', 'distributor_id': '30', 'binding_config': {}},
            {'consumer_id': '40', 'repo_id': '50', 'distributor_id': '60', 'binding_config': {}},
        ]
        agent_bindings = AgentManager._bindings(bindings)

        for binding in bindings:
            m_model.Distributor.objects.get_or_404.assert_any_call(
                repo_id=binding['repo_id'], distributor_id=binding['distributor_id'])
            m_dist_cont.create_bind_payload.assert_any_call(
                binding['repo_id'], binding['distributor_id'], binding['binding_config'])

        self.assertEqual(len(agent_bindings), 2)
        for binding, agent_binding in itertools.izip(bindings, agent_bindings):
            self.assertEqual(binding['repo_id'], agent_binding['repo_id'])
            self.assertEqual(distributor['distributor_type_id'], agent_binding['type_id'])
            self.assertEqual(bind_payload, agent_binding['details'])
Ejemplo n.º 33
0
    def test_get_agent_bindings(self, m_model, m_dist_cont):
        bind_payload = {'a': 1, 'b': 2}
        distributor = model.Distributor(distributor_type_id='3838')
        m_model.Distributor.objects.get_or_404.return_value = distributor
        m_dist_cont.create_bind_payload = Mock(return_value=bind_payload)

        bindings = [
            {
                'consumer_id': '10',
                'repo_id': '20',
                'distributor_id': '30',
                'binding_config': {}
            },
            {
                'consumer_id': '40',
                'repo_id': '50',
                'distributor_id': '60',
                'binding_config': {}
            },
        ]
        agent_bindings = AgentManager._bindings(bindings)

        for binding in bindings:
            m_model.Distributor.objects.get_or_404.assert_any_call(
                repo_id=binding['repo_id'],
                distributor_id=binding['distributor_id'])
            m_dist_cont.create_bind_payload.assert_any_call(
                binding['repo_id'], binding['distributor_id'],
                binding['binding_config'])

        self.assertEqual(len(agent_bindings), 2)
        for binding, agent_binding in itertools.izip(bindings, agent_bindings):
            self.assertEqual(binding['repo_id'], agent_binding['repo_id'])
            self.assertEqual(distributor['distributor_type_id'],
                             agent_binding['type_id'])
            self.assertEqual(bind_payload, agent_binding['details'])
Ejemplo n.º 34
0
    def test_unbind(self, *mocks):
        mock_agent = mocks[0]
        mock_context = mocks[1]
        mock_factory = mocks[2]
        mock_unbindings = mocks[3]
        mock_task_status_manager = mocks[4]
        mock_uuid = mocks[5]

        consumer = {'id': '1234'}
        mock_consumer_manager = Mock()
        mock_consumer_manager.get_consumer = Mock(return_value=consumer)
        mock_factory.consumer_manager = Mock(return_value=mock_consumer_manager)

        repo_id = '100'
        distributor_id = '200'
        binding = {'repo_id': repo_id, 'distributor_id': distributor_id}
        mock_bind_manager = Mock()
        mock_bind_manager.action_pending = Mock()
        mock_factory.consumer_bind_manager = Mock(return_value=mock_bind_manager)

        agent_bindings = []
        mock_unbindings.return_value = agent_bindings

        task_id = '2345'
        mock_task = {'task_id': task_id}
        mock_task_status_manager.create_task_status = Mock(return_value=mock_task)

        mock_context.return_value = {}

        mock_uuid.return_value = task_id

        # test manager

        options = {}
        agent_manager = AgentManager()
        task = agent_manager.unbind(consumer['id'], repo_id, distributor_id, options)

        # validations

        tags = [
            resource_tag(dispatch_constants.RESOURCE_CONSUMER_TYPE, consumer['id']),
            resource_tag(dispatch_constants.RESOURCE_REPOSITORY_TYPE, repo_id),
            resource_tag(dispatch_constants.RESOURCE_REPOSITORY_DISTRIBUTOR_TYPE, distributor_id),
            action_tag(ACTION_AGENT_UNBIND)
        ]

        mock_consumer_manager.get_consumer.assert_called_with(consumer['id'])
        mock_unbindings.assert_called_with([binding])

        mock_context.assert_called_with(
            consumer,
            task_id=task_id,
            action='unbind',
            consumer_id=consumer['id'],
            repo_id=repo_id,
            distributor_id=distributor_id)

        self.assertEqual(task, mock_task)
        mock_task_status_manager.create_task_status.assert_called_with(task_id, 'agent', tags=tags)
        mock_agent.unbind.assert_called_with(mock_context.return_value, agent_bindings, options)
        mock_bind_manager.action_pending.assert_called_with(
            consumer['id'], repo_id, distributor_id, Bind.Action.UNBIND, task_id)