def _test_schedule_bind_bgp_speaker(self, agents, bgp_speaker_id): scheduler = bgp_dras.ChanceScheduler() scheduler.resource_filter.bind(self.ctx, agents, bgp_speaker_id) results = self._get_dragent_bgp_speaker_bindings(bgp_speaker_id) for result in results: self.assertEqual(bgp_speaker_id, result.bgp_speaker_id)
def _test_schedule_bind_bgp_speaker(self, agents, bgp_speaker_id): scheduler = bgp_dras.ChanceScheduler() scheduler.resource_filter.bind(self.ctx, agents, bgp_speaker_id) results = self.ctx.session.query( bgp_dras_db.BgpSpeakerDrAgentBinding).filter_by( bgp_speaker_id=bgp_speaker_id).all() for result in results: self.assertEqual(bgp_speaker_id, result.bgp_speaker_id)
def setUp(self): super(TestSchedulerCallback, self).setUp() bgp_notify_p = mock.patch('neutron_dynamic_routing.api.rpc.' 'agentnotifiers.bgp_dr_rpc_agent_api.' 'BgpDrAgentNotifyApi') bgp_notify_p.start() rpc_conn_p = mock.patch('neutron_lib.rpc.Connection') rpc_conn_p.start() self.plugin = bgp_plugin.BgpPlugin() self.scheduler = bgp_dras.ChanceScheduler()
def setUp(self): super(TestSchedulerCallback, self).setUp() bgp_notify_p = mock.patch('neutron_dynamic_routing.api.rpc.' 'agentnotifiers.bgp_dr_rpc_agent_api.' 'BgpDrAgentNotifyApi') bgp_notify_p.start() rpc_conn_p = mock.patch('neutron.common.rpc.create_connection') rpc_conn_p.start() admin_ctx_p = mock.patch('neutron_lib.context.get_admin_context') admin_ctx_p = mock.patch('neutron_lib.context.get_admin_context') self.admin_ctx_m = admin_ctx_p.start() self.admin_ctx_m.return_value = self.ctx self.plugin = bgp_plugin.BgpPlugin() self.scheduler = bgp_dras.ChanceScheduler()
def test__register_callbacks(self): with mock.patch.object(registry, 'subscribe') as subscribe: scheduler = bgp_dras.ChanceScheduler() expected_calls = [ mock.call(scheduler.schedule_bgp_speaker_callback, dr_resources.BGP_SPEAKER, events.AFTER_CREATE), ] self.assertEqual(subscribe.call_args_list, expected_calls) with mock.patch.object(registry, 'subscribe') as subscribe: scheduler = bgp_dras.WeightScheduler() expected_calls = [ mock.call(scheduler.schedule_bgp_speaker_callback, dr_resources.BGP_SPEAKER, events.AFTER_CREATE), ] self.assertEqual(subscribe.call_args_list, expected_calls)
def _test_auto_schedule(self, host_index): scheduler = bgp_dras.ChanceScheduler() self.ctx = context.get_admin_context() msg = 'host_index = %s' % host_index # create hosts hosts = [ '%s-agent-%s' % (host_index, i) for i in range(self.host_count) ] bgp_dragents = self._create_and_set_agents_down( hosts, self.agent_count, self.down_agent_count) # create bgp_speakers self._bgp_speakers = [ '%s-bgp-speaker-%s' % (host_index, i) for i in range(self.bgp_speaker_count) ] self._save_bgp_speakers(self._bgp_speakers) # pre schedule the bgp_speakers to the agents defined in # self.hosted_bgp_speakers before calling auto_schedule_bgp_speaker for agent, bgp_speakers in self.hosted_bgp_speakers.items(): agent_index = self._extract_index(agent) for bgp_speaker in bgp_speakers: bs_index = self._extract_index(bgp_speaker) scheduler.bind(self.ctx, [bgp_dragents[agent_index]], self._bgp_speakers[bs_index]) retval = scheduler.schedule_unscheduled_bgp_speakers( self.ctx, hosts[host_index]) self.assertEqual(self.expected_schedule_return_value, retval, message=msg) if self.agent_count: agent_id = bgp_dragents[host_index].id hosted_bgp_speakers = self._get_hosted_bgp_speakers_on_dragent( agent_id) hosted_bs_ids = [ self._strip_host_index(net) for net in hosted_bgp_speakers ] expected_hosted_bgp_speakers = self.expected_hosted_bgp_speakers[ 'agent-%s' % host_index] self.assertItemsEqual(hosted_bs_ids, expected_hosted_bgp_speakers, msg)
def test_auto_schedule_bgp_speaker(self): scheduler = bgp_dras.ChanceScheduler() if self.bgp_speaker_present: down_agent_count = 1 if self.agent_down else 0 agents = self._create_and_set_agents_down( ['host-a'], down_agent_count=down_agent_count) if self.scheduled_already: self._test_schedule_bind_bgp_speaker(agents, self.bgp_speaker_id) expected_hosted_agents = (1 if self.bgp_speaker_present and self.valid_host else 0) host = "host-a" if self.valid_host else "host-b" observed_ret_value = scheduler.schedule_unscheduled_bgp_speakers( self.ctx, host) self.assertEqual(self.expected_result, observed_ret_value) hosted_agents = self.ctx.session.query( bgp_dras_db.BgpSpeakerDrAgentBinding).all() self.assertEqual(expected_hosted_agents, len(hosted_agents))