VPP-1508: Python3 tests. Explicitly specify string formatting.
[vpp.git] / test / test_dvr.py
index e2e9605..d2088ea 100644 (file)
@@ -1,18 +1,14 @@
 #!/usr/bin/env python
-import random
-import socket
 import unittest
 
 from framework import VppTestCase, VppTestRunner
-from vpp_sub_interface import VppSubInterface, VppDot1QSubint
-from vpp_ip_route import VppIpRoute, VppRoutePath, DpoProto, VppIpMRoute, \
-    VppMRoutePath, MRouteEntryFlags, MRouteItfFlags
-from vpp_papi_provider import L2_VTR_OP
+from vpp_sub_interface import VppDot1QSubint
+from vpp_ip_route import VppIpRoute, VppRoutePath
+from vpp_papi_provider import L2_VTR_OP, L2_PORT_TYPE
 
 from scapy.packet import Raw
-from scapy.layers.l2 import Ether, Dot1Q, ARP
+from scapy.layers.l2 import Ether, Dot1Q
 from scapy.layers.inet import IP, UDP
-from util import ppp
 from socket import AF_INET, inet_pton
 
 
@@ -23,7 +19,7 @@ class TestDVR(VppTestCase):
         super(TestDVR, self).setUp()
 
         self.create_pg_interfaces(range(4))
-        self.create_loopback_interfaces(range(1))
+        self.create_loopback_interfaces(1)
 
         for i in self.pg_interfaces:
             i.admin_up()
@@ -92,14 +88,17 @@ class TestDVR(VppTestCase):
         self.vapi.sw_interface_set_l2_bridge(self.pg1.sw_if_index, 1)
         self.vapi.sw_interface_set_l2_bridge(sub_if_on_pg2.sw_if_index, 1)
         self.vapi.sw_interface_set_l2_bridge(sub_if_on_pg3.sw_if_index, 1)
-        self.vapi.sw_interface_set_l2_bridge(self.loop0.sw_if_index, 1, bvi=1)
+        self.vapi.sw_interface_set_l2_bridge(self.loop0.sw_if_index, 1,
+                                             port_type=L2_PORT_TYPE.BVI)
 
-        self.vapi.sw_interface_set_l2_tag_rewrite(sub_if_on_pg2.sw_if_index,
-                                                  L2_VTR_OP.L2_POP_1,
-                                                  92)
-        self.vapi.sw_interface_set_l2_tag_rewrite(sub_if_on_pg3.sw_if_index,
-                                                  L2_VTR_OP.L2_POP_1,
-                                                  93)
+        self.vapi.l2_interface_vlan_tag_rewrite(
+            sub_if_on_pg2.sw_if_index,
+            L2_VTR_OP.L2_POP_1,
+            92)
+        self.vapi.l2_interface_vlan_tag_rewrite(
+            sub_if_on_pg3.sw_if_index,
+            L2_VTR_OP.L2_POP_1,
+            93)
 
         #
         # Add routes to bridge the traffic via a tagged an nontagged interface
@@ -212,7 +211,23 @@ class TestDVR(VppTestCase):
         self.vapi.sw_interface_set_l2_bridge(sub_if_on_pg3.sw_if_index,
                                              1, enable=0)
         self.vapi.sw_interface_set_l2_bridge(self.loop0.sw_if_index,
-                                             1, bvi=1, enable=0)
+                                             1, port_type=L2_PORT_TYPE.BVI,
+                                             enable=0)
+
+        #
+        # Do a FIB dump to make sure the paths are correctly reported as DVR
+        #
+        routes = self.vapi.ip_fib_dump()
+
+        for r in routes:
+            if (inet_pton(AF_INET, ip_tag_bridged) == r.address):
+                self.assertEqual(r.path[0].sw_if_index,
+                                 sub_if_on_pg3.sw_if_index)
+                self.assertEqual(r.path[0].is_dvr, 1)
+            if (inet_pton(AF_INET, ip_non_tag_bridged) == r.address):
+                self.assertEqual(r.path[0].sw_if_index,
+                                 self.pg1.sw_if_index)
+                self.assertEqual(r.path[0].is_dvr, 1)
 
         #
         # the explicit route delete is require so it happens before
@@ -278,12 +293,14 @@ class TestDVR(VppTestCase):
         self.vapi.sw_interface_set_l2_bridge(self.pg1.sw_if_index, 1)
         self.vapi.sw_interface_set_l2_bridge(sub_if_on_pg2.sw_if_index, 1)
         self.vapi.sw_interface_set_l2_bridge(sub_if_on_pg3.sw_if_index, 1)
-        self.vapi.sw_interface_set_l2_tag_rewrite(sub_if_on_pg2.sw_if_index,
-                                                  L2_VTR_OP.L2_POP_1,
-                                                  92)
-        self.vapi.sw_interface_set_l2_tag_rewrite(sub_if_on_pg3.sw_if_index,
-                                                  L2_VTR_OP.L2_POP_1,
-                                                  93)
+        self.vapi.l2_interface_vlan_tag_rewrite(
+            sub_if_on_pg2.sw_if_index,
+            L2_VTR_OP.L2_POP_1,
+            92)
+        self.vapi.l2_interface_vlan_tag_rewrite(
+            sub_if_on_pg3.sw_if_index,
+            L2_VTR_OP.L2_POP_1,
+            93)
 
         #
         # Disable UU flooding, learning and ARP terminaation. makes this test
@@ -306,17 +323,17 @@ class TestDVR(VppTestCase):
         route_2.add_vpp_config()
 
         #
-        # packets are dropped because bridge does not flood unkown unicast
+        # packets are dropped because bridge does not flood unknown unicast
         #
         self.send_and_assert_no_replies(self.pg0, pkt_no_tag)
 
         #
         # Enable L3 extraction on pgs
         #
-        self.vapi.sw_interface_set_l2_emulation(self.pg0.sw_if_index)
-        self.vapi.sw_interface_set_l2_emulation(self.pg1.sw_if_index)
-        self.vapi.sw_interface_set_l2_emulation(sub_if_on_pg2.sw_if_index)
-        self.vapi.sw_interface_set_l2_emulation(sub_if_on_pg3.sw_if_index)
+        self.vapi.l2_emulation(self.pg0.sw_if_index)
+        self.vapi.l2_emulation(self.pg1.sw_if_index)
+        self.vapi.l2_emulation(sub_if_on_pg2.sw_if_index)
+        self.vapi.l2_emulation(sub_if_on_pg3.sw_if_index)
 
         #
         # now we expect the packet forward according to the DVR route
@@ -345,14 +362,14 @@ class TestDVR(VppTestCase):
         #
         # cleanup
         #
-        self.vapi.sw_interface_set_l2_emulation(self.pg0.sw_if_index,
-                                                enable=0)
-        self.vapi.sw_interface_set_l2_emulation(self.pg1.sw_if_index,
-                                                enable=0)
-        self.vapi.sw_interface_set_l2_emulation(sub_if_on_pg2.sw_if_index,
-                                                enable=0)
-        self.vapi.sw_interface_set_l2_emulation(sub_if_on_pg3.sw_if_index,
-                                                enable=0)
+        self.vapi.l2_emulation(self.pg0.sw_if_index,
+                               enable=0)
+        self.vapi.l2_emulation(self.pg1.sw_if_index,
+                               enable=0)
+        self.vapi.l2_emulation(sub_if_on_pg2.sw_if_index,
+                               enable=0)
+        self.vapi.l2_emulation(sub_if_on_pg3.sw_if_index,
+                               enable=0)
 
         self.vapi.sw_interface_set_l2_bridge(self.pg0.sw_if_index,
                                              1, enable=0)