Skip to content

Commit

Permalink
BgpAsAService ST: UT enhancements
Browse files Browse the repository at this point in the history
Added UT code for
   - check relations between bgp router server and client objects
   - make sure no other bgp routers are peered with bgp server router object
     except bgp router clients
   - make sure if InstanceIp is changed bgp-client gets that IP when bgp-as-a-service
     does not have one.
   - make sure bgp-as-a-service ip address should be used when it is configured.

Change-Id: If266b6b67efd64371a8cde8b7fa48d2404f32992
Related-Bug: #1542048
  • Loading branch information
sbalineni committed Feb 16, 2016
1 parent 678d77d commit 36db794
Showing 1 changed file with 40 additions and 1 deletion.
41 changes: 40 additions & 1 deletion src/config/schema-transformer/test/test_service.py
Expand Up @@ -434,6 +434,12 @@ def check_route_target_in_routing_instance(self, ri_name, rt_list):
ri_rt_refs = set([ref['to'][0] for ref in ri_obj.get_route_target_refs() or []])
self.assertTrue(set(rt_list) <= ri_rt_refs)

@retries(5)
def check_bgp_router_ip(self, router_name, ip):
router_obj = self._vnc_lib.bgp_router_read(fq_name_str=router_name)
self.assertEqual(router_obj.get_bgp_router_parameters().address,
ip)

def get_ri_name(self, vn, ri_name=None):
return vn.get_fq_name() + [ri_name or vn.name]

Expand Down Expand Up @@ -2585,6 +2591,12 @@ def test_misc(self):

#end test_misc

@retries(5)
def check_bgp_no_peering(self, router1, router2):
r1 = self._vnc_lib.bgp_router_read(fq_name=router1.get_fq_name())
ref_names = [ref['to'] for ref in r1.get_bgp_router_refs() or []]
self.assertThat(ref_names, Not(Contains(router2.get_fq_name())))

def test_bgpaas(self):
# create vn1
vn1_name = self.id() + 'vn1'
Expand Down Expand Up @@ -2619,10 +2631,34 @@ def test_bgpaas(self):
self.wait_to_get_object(config_db.BgpAsAServiceST,
bgpaas.get_fq_name_str())
self.wait_to_get_object(config_db.BgpRouterST, router1_name)
server_fq_name = ':'.join(self.get_ri_name(vn1_obj)) + ':bgpaas-server'
self.wait_to_get_object(config_db.BgpRouterST, server_fq_name)
server_router_obj = self._vnc_lib.bgp_router_read(fq_name_str=server_fq_name)

mx_bgp_router = self.create_bgp_router("mx-bgp-router", "contrail")
mx_bgp_router_name = mx_bgp_router.get_fq_name_str()
self.wait_to_get_object(config_db.BgpRouterST, mx_bgp_router_name)
mx_bgp_router = self._vnc_lib.bgp_router_read(fq_name_str=mx_bgp_router_name)
self.check_bgp_no_peering(server_router_obj, mx_bgp_router)

router1_obj = self._vnc_lib.bgp_router_read(fq_name_str=router1_name)
self.assertEqual(router1_obj.get_bgp_router_parameters().address,
'10.0.0.252')

self.check_bgp_peering(server_router_obj, router1_obj, 1)

v4_obj.set_instance_ip_address('10.0.0.60')
self._vnc_lib.instance_ip_update(v4_obj)
self.check_bgp_router_ip(router1_name, '10.0.0.60')

bgpaas.set_bgpaas_ip_address('10.0.0.70')
self._vnc_lib.bgp_as_a_service_update(bgpaas)
self.check_bgp_router_ip(router1_name, '10.0.0.70')
v4_obj.del_virtual_machine_interface(port_obj)
v4_obj.del_virtual_network(vn1_obj)
self._vnc_lib.instance_ip_delete(id=v4_obj.uuid)
self.check_bgp_router_ip(router1_name, '10.0.0.70')

port2_name = self.id() + 'p2'
port2_obj = VirtualMachineInterface(port2_name, parent_obj=project_obj)
port2_obj.add_virtual_network(vn1_obj)
Expand All @@ -2632,14 +2668,17 @@ def test_bgpaas(self):
router2_name = vn1_obj.get_fq_name_str() + ':' + vn1_name + ':' + port2_name
self.wait_to_get_object(config_db.BgpRouterST, router2_name)

router2_obj = self._vnc_lib.bgp_router_read(fq_name_str=router2_name)
self.check_bgp_peering(server_router_obj, router2_obj, 2)
self.check_bgp_peering(server_router_obj, router1_obj, 2)

bgpaas.del_virtual_machine_interface(port_obj)
self._vnc_lib.bgp_as_a_service_update(bgpaas)
self.wait_to_delete_object(config_db.BgpRouterST, router1_name)
self._vnc_lib.bgp_as_a_service_delete(id=bgpaas.uuid)
self.wait_to_delete_object(config_db.BgpRouterST, router2_name)

self._vnc_lib.instance_ip_delete(id=v6_obj.uuid)
self._vnc_lib.instance_ip_delete(id=v4_obj.uuid)
self._vnc_lib.virtual_machine_interface_delete(id=port_obj.uuid)
self._vnc_lib.virtual_machine_interface_delete(id=port2_obj.uuid)
# end test_bgpaas
Expand Down

0 comments on commit 36db794

Please sign in to comment.