ipsec: IPSec protection for multi-point tunnel interfaces
[vpp.git] / test / test_pipe.py
index d2f21ef..6e3edca 100644 (file)
@@ -1,13 +1,16 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 from socket import AF_INET, AF_INET6, inet_pton
+import unittest
+
+from scapy.packet import Raw
+from scapy.layers.l2 import Ether
+from scapy.layers.inet import IP, UDP
 
 from framework import VppTestCase, VppTestRunner
 from vpp_interface import VppInterface
 from vpp_ip_route import VppIpTable, VppIpRoute, VppRoutePath
 
-from scapy.packet import Raw
-from scapy.layers.l2 import Ether
-from scapy.layers.inet import IP, UDP
+NUM_PKTS = 67
 
 
 class VppPipe(VppInterface):
@@ -38,9 +41,6 @@ class VppPipe(VppInterface):
         self._test.vapi.pipe_delete(
             self.result.sw_if_index)
 
-    def __str__(self):
-        return self.object_id()
-
     def object_id(self):
         return "pipe-%d" % (self._sw_if_index)
 
@@ -61,6 +61,14 @@ class VppPipe(VppInterface):
 class TestPipe(VppTestCase):
     """ Pipes """
 
+    @classmethod
+    def setUpClass(cls):
+        super(TestPipe, cls).setUpClass()
+
+    @classmethod
+    def tearDownClass(cls):
+        super(TestPipe, cls).tearDownClass()
+
     def setUp(self):
         super(TestPipe, self).setUp()
 
@@ -106,10 +114,10 @@ class TestPipe(VppTestCase):
              IP(src="1.1.1.1",
                 dst="1.1.1.2") /
              UDP(sport=1234, dport=1234) /
-             Raw('\xa5' * 100))
+             Raw(b'\xa5' * 100))
 
-        self.send_and_expect(self.pg0, p * 65, self.pg1)
-        self.send_and_expect(self.pg1, p * 65, self.pg0)
+        self.send_and_expect(self.pg0, p * NUM_PKTS, self.pg1)
+        self.send_and_expect(self.pg1, p * NUM_PKTS, self.pg0)
 
         #
         # Attach ACL to ensure features are run on the pipe
@@ -132,8 +140,8 @@ class TestPipe(VppTestCase):
         self.vapi.acl_interface_set_acl_list(pipes[0].east,
                                              0,
                                              [acl.acl_index])
-        self.send_and_assert_no_replies(self.pg0, p * 65)
-        self.send_and_expect(self.pg1, p * 65, self.pg0)
+        self.send_and_assert_no_replies(self.pg0, p * NUM_PKTS)
+        self.send_and_expect(self.pg1, p * NUM_PKTS, self.pg0)
 
         # remove from output and apply on input
         self.vapi.acl_interface_set_acl_list(pipes[0].east,
@@ -142,13 +150,13 @@ class TestPipe(VppTestCase):
         self.vapi.acl_interface_set_acl_list(pipes[0].west,
                                              1,
                                              [acl.acl_index])
-        self.send_and_assert_no_replies(self.pg0, p * 65)
-        self.send_and_expect(self.pg1, p * 65, self.pg0)
+        self.send_and_assert_no_replies(self.pg0, p * NUM_PKTS)
+        self.send_and_expect(self.pg1, p * NUM_PKTS, self.pg0)
         self.vapi.acl_interface_set_acl_list(pipes[0].west,
                                              0,
                                              [])
-        self.send_and_expect(self.pg0, p * 65, self.pg1)
-        self.send_and_expect(self.pg1, p * 65, self.pg0)
+        self.send_and_expect(self.pg0, p * NUM_PKTS, self.pg1)
+        self.send_and_expect(self.pg1, p * NUM_PKTS, self.pg0)
 
         #
         # L3 routes in two separate tables so a pipe can be used to L3
@@ -192,20 +200,20 @@ class TestPipe(VppTestCase):
                   IP(src="1.1.1.2",
                      dst="1.1.1.1") /
                   UDP(sport=1234, dport=1234) /
-                  Raw('\xa5' * 100))
+                  Raw(b'\xa5' * 100))
 
         # bind the pipe ends to the correct tables
         self.vapi.sw_interface_set_table(pipes[1].west, 0, 2)
         self.vapi.sw_interface_set_table(pipes[1].east, 0, 1)
 
         # IP is not enabled on the pipes at this point
-        self.send_and_assert_no_replies(self.pg2, p_east * 65)
+        self.send_and_assert_no_replies(self.pg2, p_east * NUM_PKTS)
 
         # IP enable the Pipes by making them unnumbered
         pipes[0].set_unnumbered(self.pg2.sw_if_index)
         pipes[1].set_unnumbered(self.pg3.sw_if_index)
 
-        self.send_and_expect(self.pg2, p_east * 65, self.pg3)
+        self.send_and_expect(self.pg2, p_east * NUM_PKTS, self.pg3)
 
         # and the return path
         p_west = (Ether(src=self.pg3.remote_mac,
@@ -213,8 +221,8 @@ class TestPipe(VppTestCase):
                   IP(src="1.1.1.1",
                      dst="1.1.1.2") /
                   UDP(sport=1234, dport=1234) /
-                  Raw('\xa5' * 100))
-        self.send_and_expect(self.pg3, p_west * 65, self.pg2)
+                  Raw(b'\xa5' * 100))
+        self.send_and_expect(self.pg3, p_west * NUM_PKTS, self.pg2)
 
         #
         # Use ACLs to test features run on the Pipes
@@ -222,8 +230,8 @@ class TestPipe(VppTestCase):
         self.vapi.acl_interface_set_acl_list(pipes[1].east,
                                              0,
                                              [acl.acl_index])
-        self.send_and_assert_no_replies(self.pg2, p_east * 65)
-        self.send_and_expect(self.pg3, p_west * 65, self.pg2)
+        self.send_and_assert_no_replies(self.pg2, p_east * NUM_PKTS)
+        self.send_and_expect(self.pg3, p_west * NUM_PKTS, self.pg2)
 
         # remove from output and apply on input
         self.vapi.acl_interface_set_acl_list(pipes[1].east,
@@ -232,13 +240,13 @@ class TestPipe(VppTestCase):
         self.vapi.acl_interface_set_acl_list(pipes[1].west,
                                              1,
                                              [acl.acl_index])
-        self.send_and_assert_no_replies(self.pg2, p_east * 65)
-        self.send_and_expect(self.pg3, p_west * 65, self.pg2)
+        self.send_and_assert_no_replies(self.pg2, p_east * NUM_PKTS)
+        self.send_and_expect(self.pg3, p_west * NUM_PKTS, self.pg2)
         self.vapi.acl_interface_set_acl_list(pipes[1].west,
                                              0,
                                              [])
-        self.send_and_expect(self.pg2, p_east * 65, self.pg3)
-        self.send_and_expect(self.pg3, p_west * 65, self.pg2)
+        self.send_and_expect(self.pg2, p_east * NUM_PKTS, self.pg3)
+        self.send_and_expect(self.pg3, p_west * NUM_PKTS, self.pg2)
 
         # cleanup (so the tables delete)
         self.pg2.unconfig_ip4()