test adding and removing shared mcast dst tunnels 95/4695/6
authorEyal Bari <ebari@cisco.com>
Mon, 16 Jan 2017 10:02:46 +0000 (12:02 +0200)
committerJohn Lo <loj@cisco.com>
Wed, 25 Jan 2017 15:17:18 +0000 (15:17 +0000)
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 <ebari@cisco.com>
test/test_vxlan.py

index 9dccaf5..35a0aa0 100644 (file)
@@ -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