misc: Fix python scripts shebang line
[vpp.git] / test / test_vxlan.py
index 7e3ea50..b292aac 100644 (file)
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 import socket
 from util import ip4n_range, ip4_range, reassemble4
 
 import socket
 from util import ip4n_range, ip4_range, reassemble4
@@ -10,6 +10,8 @@ from scapy.layers.l2 import Ether, Raw
 from scapy.layers.inet import IP, UDP
 from scapy.layers.vxlan import VXLAN
 from scapy.utils import atol
 from scapy.layers.inet import IP, UDP
 from scapy.layers.vxlan import VXLAN
 from scapy.utils import atol
+from vpp_ip_route import VppIpRoute, VppRoutePath
+from vpp_ip import INVALID_INDEX
 
 
 class TestVxlan(BridgeDomain, VppTestCase):
 
 
 class TestVxlan(BridgeDomain, VppTestCase):
@@ -84,17 +86,20 @@ class TestVxlan(BridgeDomain, VppTestCase):
         # Create 10 ucast vxlan tunnels under bd
         ip_range_start = 10
         ip_range_end = ip_range_start + n_ucast_tunnels
         # Create 10 ucast vxlan tunnels under bd
         ip_range_start = 10
         ip_range_end = ip_range_start + n_ucast_tunnels
-        next_hop_address = cls.pg0.remote_ip4n
-        for dest_ip4n in ip4n_range(next_hop_address, ip_range_start,
-                                    ip_range_end):
+        next_hop_address = cls.pg0.remote_ip4
+        for dest_ip4 in ip4_range(next_hop_address, ip_range_start,
+                                  ip_range_end):
             # add host route so dest_ip4n will not be resolved
             # add host route so dest_ip4n will not be resolved
-            cls.vapi.ip_add_del_route(dst_address=dest_ip4n,
-                                      dst_address_length=32,
-                                      next_hop_address=next_hop_address)
+            rip = VppIpRoute(cls, dest_ip4, 32,
+                             [VppRoutePath(next_hop_address,
+                                           INVALID_INDEX)],
+                             register=False)
+            rip.add_vpp_config()
+            dest_ip4n = socket.inet_pton(socket.AF_INET, dest_ip4)
+
             r = cls.vapi.vxlan_add_del_tunnel(src_address=cls.pg0.local_ip4n,
                                               dst_address=dest_ip4n, vni=vni)
             r = cls.vapi.vxlan_add_del_tunnel(src_address=cls.pg0.local_ip4n,
                                               dst_address=dest_ip4n, vni=vni)
-            cls.vapi.sw_interface_set_l2_bridge(rx_sw_if_index=r.sw_if_index,
-                                                bd_id=vni)
+            cls.vapi.sw_interface_set_l2_bridge(r.sw_if_index, bd_id=vni)
 
     @classmethod
     def add_del_shared_mcast_dst_load(cls, is_add):
 
     @classmethod
     def add_del_shared_mcast_dst_load(cls, is_add):
@@ -111,7 +116,7 @@ class TestVxlan(BridgeDomain, VppTestCase):
                                               mcast_sw_if_index=1,
                                               is_add=is_add, vni=vni)
             if r.sw_if_index == 0xffffffff:
                                               mcast_sw_if_index=1,
                                               is_add=is_add, vni=vni)
             if r.sw_if_index == 0xffffffff:
-                raise "bad sw_if_index"
+                raise ValueError("bad sw_if_index: ~0")
 
     @classmethod
     def add_shared_mcast_dst_load(cls):
 
     @classmethod
     def add_shared_mcast_dst_load(cls):
@@ -217,6 +222,10 @@ class TestVxlan(BridgeDomain, VppTestCase):
             super(TestVxlan, cls).tearDownClass()
             raise
 
             super(TestVxlan, cls).tearDownClass()
             raise
 
+    @classmethod
+    def tearDownClass(cls):
+        super(TestVxlan, cls).tearDownClass()
+
     def test_encap_big_packet(self):
         """ Encapsulation test send big frame from pg1
         Verify receipt of encapsulated frames on pg0
     def test_encap_big_packet(self):
         """ Encapsulation test send big frame from pg1
         Verify receipt of encapsulated frames on pg0
@@ -251,11 +260,12 @@ class TestVxlan(BridgeDomain, VppTestCase):
     #  @param self The object pointer.
     def tearDown(self):
         super(TestVxlan, self).tearDown()
     #  @param self The object pointer.
     def tearDown(self):
         super(TestVxlan, self).tearDown()
-        if not self.vpp_dead:
-            self.logger.info(self.vapi.cli("show bridge-domain 1 detail"))
-            self.logger.info(self.vapi.cli("show bridge-domain 2 detail"))
-            self.logger.info(self.vapi.cli("show bridge-domain 3 detail"))
-            self.logger.info(self.vapi.cli("show vxlan tunnel"))
+
+    def show_commands_at_teardown(self):
+        self.logger.info(self.vapi.cli("show bridge-domain 1 detail"))
+        self.logger.info(self.vapi.cli("show bridge-domain 2 detail"))
+        self.logger.info(self.vapi.cli("show bridge-domain 3 detail"))
+        self.logger.info(self.vapi.cli("show vxlan tunnel"))
 
 
 if __name__ == '__main__':
 
 
 if __name__ == '__main__':