From 4bce290f3ee6e85c1dc6fb1d0d8d2c0e2650f670 Mon Sep 17 00:00:00 2001 From: Eyal Bari Date: Mon, 16 Jan 2017 12:02:46 +0200 Subject: [PATCH] test adding and removing shared mcast dst tunnels Adds and delete 2000 multicast vxlan tunnels sharing group address to test mcast tunnel ref count code as part of the stability stage (before starting traffic tests) Change-Id: Ic50cedf80471e14431feb493104eff5ea7d5d429 Signed-off-by: Eyal Bari --- test/test_vxlan.py | 47 +++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 39 insertions(+), 8 deletions(-) diff --git a/test/test_vxlan.py b/test/test_vxlan.py index 9dccaf50fb1..35a0aa08211 100644 --- a/test/test_vxlan.py +++ b/test/test_vxlan.py @@ -86,9 +86,38 @@ class TestVxlan(BridgeDomain, VppTestCase): cls.vapi.sw_interface_set_l2_bridge(r.sw_if_index, bd_id=vni) @classmethod - def add_del_mcast_load(cls, is_add): + def add_del_shared_mcast_dst_load(cls, is_add): + """ + add or del tunnels sharing the same mcast dst + to test vxlan ref_count mechanism + """ + n_shared_dst_tunnels = 2000 + vni_start = 10000 + vni_end = vni_start + n_shared_dst_tunnels + for vni in range(vni_start, vni_end): + cls.vapi.vxlan_add_del_tunnel( + src_addr=cls.pg0.local_ip4n, + dst_addr=cls.mcast_ip4n, + mcast_sw_if_index=1, + vni=vni, + is_add=is_add) + + @classmethod + def add_shared_mcast_dst_load(cls): + cls.add_del_shared_mcast_dst_load(is_add=1) + + @classmethod + def del_shared_mcast_dst_load(cls): + cls.add_del_shared_mcast_dst_load(is_add=0) + + @classmethod + def add_del_mcast_tunnels_load(cls, is_add): + """ + add or del tunnels to test vxlan stability + """ + n_distinct_dst_tunnels = 200 ip_range_start = 10 - ip_range_end = 210 + ip_range_end = ip_range_start + n_distinct_dst_tunnels for dest_ip4n in ip4n_range(cls.mcast_ip4n, ip_range_start, ip_range_end): vni = bytearray(dest_ip4n)[3] @@ -100,12 +129,12 @@ class TestVxlan(BridgeDomain, VppTestCase): is_add=is_add) @classmethod - def add_mcast_load(cls): - cls.add_del_mcast_load(is_add=1) + def add_mcast_tunnels_load(cls): + cls.add_del_mcast_tunnels_load(is_add=1) @classmethod - def del_mcast_load(cls): - cls.add_del_mcast_load(is_add=0) + def del_mcast_tunnels_load(cls): + cls.add_del_mcast_tunnels_load(is_add=0) # Class method to start the VXLAN test case. # Overrides setUpClass method in VppTestCase class. @@ -166,8 +195,10 @@ class TestVxlan(BridgeDomain, VppTestCase): bd_id=cls.mcast_flood_bd) # Add and delete mcast tunnels to check stability - cls.add_mcast_load() - cls.del_mcast_load() + cls.add_shared_mcast_dst_load() + cls.add_mcast_tunnels_load() + cls.del_shared_mcast_dst_load() + cls.del_mcast_tunnels_load() # Setup vni 3 to test unicast flooding cls.ucast_flood_bd = 3 -- 2.16.6