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)
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)
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)
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) )
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)
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) )
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)