示例#1
0
    def test_scheduler_handle_message(self, mocked_quantum_api, event):

        def message_to_router_args(message):
            tmp = message.copy()
            tmp['id'] = tmp.pop('router_id')
            return tmp

        quantum_client = mock.Mock()
        message1 = {'tenant_id': '1', 'router_id': '2',
                    'body': {}, 'crud': 'poll'}
        message2 = {'tenant_id': '3', 'router_id': '4',
                    'body': {}, 'crud': 'poll'}

        return_value = [
            mock.Mock(**message_to_router_args(message1)),
            mock.Mock(**message_to_router_args(message2))
        ]

        quantum_client.get_routers.return_value = return_value

        sched = mock.Mock()
        mocked_quantum_api.return_value = quantum_client
        populate._pre_populate_workers(sched)

        self.assertEqual(sched.handle_message.call_count, len(return_value))
        expected = [
            mock.call(message1['tenant_id'], mock.ANY),
            mock.call(message2['tenant_id'], mock.ANY)
        ]
        self.assertEqual(sched.handle_message.call_args_list, expected)

        self.assertEqual(event.call_count, 2)
        expected = [mock.call(**message1), mock.call(**message2)]
        self.assertEqual(event.call_args_list, expected)
示例#2
0
    def test_scheduler_handle_message(self, mocked_quantum_api, event):

        def message_to_router_args(message):
            tmp = message.copy()
            tmp['id'] = tmp.pop('router_id')
            return tmp

        quantum_client = mock.Mock()
        message1 = {'tenant_id': '1', 'router_id': '2',
                    'body': {}, 'crud': 'poll'}
        message2 = {'tenant_id': '3', 'router_id': '4',
                    'body': {}, 'crud': 'poll'}

        return_value = [
            mock.Mock(**message_to_router_args(message1)),
            mock.Mock(**message_to_router_args(message2))
        ]

        quantum_client.get_routers.return_value = return_value

        sched = mock.Mock()
        mocked_quantum_api.return_value = quantum_client
        populate._pre_populate_workers(sched)

        self.assertEqual(sched.handle_message.call_count, len(return_value))
        expected = [
            mock.call(message1['tenant_id'], mock.ANY),
            mock.call(message2['tenant_id'], mock.ANY)
        ]
        self.assertEqual(sched.handle_message.call_args_list, expected)

        self.assertEqual(event.call_count, 2)
        expected = [mock.call(**message1), mock.call(**message2)]
        self.assertEqual(event.call_args_list, expected)
示例#3
0
 def test_pre_populate_with_no_resources(self, enabled_drivers):
     fake_scheduler = mock.Mock()
     fake_scheduler.handle_message = mock.Mock()
     fake_driver = fakes.fake_driver()
     fake_driver.pre_populate_hook.return_value = []
     enabled_drivers.return_value = [fake_driver]
     populate._pre_populate_workers(fake_scheduler)
     self.assertFalse(fake_scheduler.handle_message.called)
示例#4
0
 def _exit_loop_bad_auth(self, mocked_quantum_api, log, exc):
     quantum_client = mock.Mock()
     quantum_client.get_routers.side_effect = exc
     mocked_quantum_api.return_value = quantum_client
     sched = mock.Mock()
     populate._pre_populate_workers(sched)
     log.warning.assert_called_once_with(
         'PrePopulateWorkers thread failed: %s',
         mock.ANY
     )
示例#5
0
 def _exit_loop_bad_auth(self, mocked_quantum_api, log, exc):
     quantum_client = mock.Mock()
     quantum_client.get_routers.side_effect = exc
     mocked_quantum_api.return_value = quantum_client
     sched = mock.Mock()
     populate._pre_populate_workers(sched)
     log.warning.assert_called_once_with(
         'PrePopulateWorkers thread failed: %s',
         mock.ANY
     )
    def test_retry_loop_logging(
            self, mocked_neutron_api, log_debug, log_warning):
        neutron_client = mock.Mock()
        message = mock.Mock(tenant_id='1', router_id='2')
        returned_value = [
            q_exceptions.NeutronClientException,
            [message]
        ]
        neutron_client.get_routers.side_effect = returned_value

        mocked_neutron_api.return_value = neutron_client

        sched = mock.Mock()
        populate._pre_populate_workers(sched)
        self.assertEqual(2, log_warning.call_count)
        self.assertEqual(1, log_debug.call_count)
示例#7
0
    def test_retry_loop(self, mocked_quantum_api):
        quantum_client = mock.Mock()
        returned_value = [Exception, []]
        quantum_client.get_routers.side_effect = returned_value

        mocked_quantum_api.return_value = quantum_client

        sched = mock.Mock()
        populate._pre_populate_workers(sched)
        self.assertEqual(
            quantum_client.get_routers.call_args_list,
            [mock.call() for value in xrange(len(returned_value))]
        )
        self.assertEqual(
            quantum_client.get_routers.call_count,
            len(returned_value)
        )
示例#8
0
 def test_pre_populate_with_resources(self, enabled_drivers):
     fake_scheduler = mock.Mock()
     fake_scheduler.handle_message = mock.Mock()
     fake_driver = fakes.fake_driver()
     fake_resources = [
         Resource(
             id='fake_resource_%s' % i,
             tenant_id='fake_tenant_%s' % i,
             driver=fake_driver.RESOURCE_NAME,
         ) for i in range(2)
     ]
     fake_driver.pre_populate_hook.return_value = fake_resources
     enabled_drivers.return_value = [fake_driver]
     populate._pre_populate_workers(fake_scheduler)
     for res in fake_resources:
         e = event.Event(resource=res, crud=event.POLL, body={})
         call = mock.call(res.tenant_id, e)
         self.assertIn(call, fake_scheduler.handle_message.call_args_list)
示例#9
0
    def test_retry_loop(self, mocked_quantum_api):
        quantum_client = mock.Mock()
        returned_value = [Exception, []]
        quantum_client.get_routers.side_effect = returned_value

        mocked_quantum_api.return_value = quantum_client

        sched = mock.Mock()
        populate._pre_populate_workers(sched)
        self.assertEqual(
            quantum_client.get_routers.call_args_list,
            [
                mock.call(detailed=False)
                for value in xrange(len(returned_value))
            ]
        )
        self.assertEqual(
            quantum_client.get_routers.call_count,
            len(returned_value)
        )
示例#10
0
    def test_retry_loop_logging(self, mocked_quantum_api, log):
        quantum_client = mock.Mock()
        message = mock.Mock(tenant_id='1', router_id='2')
        returned_value = [
            q_exceptions.NeutronClientException,
            [message]
        ]
        quantum_client.get_routers.side_effect = returned_value

        mocked_quantum_api.return_value = quantum_client

        sched = mock.Mock()
        populate._pre_populate_workers(sched)
        expected = [
            mock.call.warning(u'Could not fetch routers from quantum: '
                              'An unknown exception occurred.'),
            mock.call.warning('sleeping 1 seconds before retrying'),
            mock.call.debug('Start pre-populating the workers '
                            'with %d fetched routers', 1)
        ]
        self.assertEqual(log.mock_calls, expected)
示例#11
0
    def test_retry_loop_logging(self, mocked_quantum_api, log):
        quantum_client = mock.Mock()
        message = mock.Mock(tenant_id='1', router_id='2')
        returned_value = [
            q_exceptions.NeutronClientException,
            [message]
        ]
        quantum_client.get_routers.side_effect = returned_value

        mocked_quantum_api.return_value = quantum_client

        sched = mock.Mock()
        populate._pre_populate_workers(sched)
        expected = [
            mock.call.warning(u'Could not fetch routers from quantum: '
                              'An unknown exception occurred.'),
            mock.call.warning('sleeping 1 seconds before retrying'),
            mock.call.debug('Start pre-populating the workers '
                            'with %d fetched routers', 1)
        ]
        self.assertEqual(log.mock_calls, expected)