api: Cleanup APIs interface.api
[vpp.git] / test / test_memif.py
index 6da8bf5..6413cfd 100644 (file)
@@ -3,11 +3,13 @@ import unittest
 
 from scapy.layers.l2 import Ether
 from scapy.layers.inet import IP, ICMP
+import six
 
 from framework import VppTestCase, VppTestRunner, running_extended_tests
 from remote_test import RemoteClass, RemoteVppTestCase
 from vpp_memif import MEMIF_MODE, MEMIF_ROLE, remove_all_memif_vpp_config, \
     VppSocketFilename, VppMemif
+from vpp_ip_route import VppIpRoute, VppRoutePath
 
 
 class TestMemif(VppTestCase):
@@ -45,37 +47,39 @@ class TestMemif(VppTestCase):
     def _check_socket_filename(self, dump, socket_id, filename):
         for d in dump:
             if (d.socket_id == socket_id) and (
-                    d.socket_filename.rstrip("\0") == filename):
+                    d.socket_filename.rstrip(b"\0") == filename):
                 return True
         return False
 
     def test_memif_socket_filename_add_del(self):
-        """ Memif socket filenale add/del """
+        """ Memif socket filename add/del """
 
         # dump default socket filename
         dump = self.vapi.memif_socket_filename_dump()
         self.assertTrue(
             self._check_socket_filename(
-                dump, 0, self.tempdir + "/memif.sock"))
+                dump, 0, b"%s/memif.sock" % six.ensure_binary(
+                    self.tempdir, encoding='utf-8')))
 
         memif_sockets = []
         # existing path
         memif_sockets.append(
             VppSocketFilename(
-                self, 1, self.tempdir + "/memif1.sock"))
+                self, 1, b"%s/memif1.sock" % six.ensure_binary(
+                    self.tempdir, encoding='utf-8')))
         # default path (test tempdir)
         memif_sockets.append(
             VppSocketFilename(
                 self,
                 2,
-                "memif2.sock",
+                b"memif2.sock",
                 add_default_folder=True))
         # create new folder in default folder
         memif_sockets.append(
             VppSocketFilename(
                 self,
                 3,
-                "sock/memif3.sock",
+                b"sock/memif3.sock",
                 add_default_folder=True))
 
         for sock in memif_sockets:
@@ -93,7 +97,8 @@ class TestMemif(VppTestCase):
         dump = self.vapi.memif_socket_filename_dump()
         self.assertTrue(
             self._check_socket_filename(
-                dump, 0, self.tempdir + "/memif.sock"))
+                dump, 0, b"%s/memif.sock" % six.ensure_binary(
+                    self.tempdir, encoding='utf-8')))
 
     def _create_delete_test_one_interface(self, memif):
         memif.add_vpp_config()
@@ -146,26 +151,27 @@ class TestMemif(VppTestCase):
         self._create_delete_test_one_interface(memif)
 
     def test_memif_create_custom_socket(self):
-        """ Memif create with non-default socket filname """
+        """ Memif create with non-default socket filename """
 
         memif_sockets = []
         # existing path
         memif_sockets.append(
             VppSocketFilename(
-                self, 1, self.tempdir + "/memif1.sock"))
+                self, 1, b"%s/memif1.sock" % six.ensure_binary(
+                    self.tempdir, encoding='utf-8')))
         # default path (test tempdir)
         memif_sockets.append(
             VppSocketFilename(
                 self,
                 2,
-                "memif2.sock",
+                b"memif2.sock",
                 add_default_folder=True))
         # create new folder in default folder
         memif_sockets.append(
             VppSocketFilename(
                 self,
                 3,
-                "sock/memif3.sock",
+                b"sock/memif3.sock",
                 add_default_folder=True))
 
         memif = VppMemif(self, MEMIF_ROLE.SLAVE, MEMIF_MODE.ETHERNET)
@@ -184,7 +190,8 @@ class TestMemif(VppTestCase):
                          ring_size=1024, buffer_size=2048)
 
         remote_socket = VppSocketFilename(self.remote_test, 1,
-                                          self.tempdir + "/memif.sock")
+                                          b"%s/memif.sock" % six.ensure_binary(
+                                              self.tempdir, encoding='utf-8'))
         remote_socket.add_vpp_config()
 
         remote_memif = VppMemif(self.remote_test, MEMIF_ROLE.MASTER,
@@ -202,14 +209,14 @@ class TestMemif(VppTestCase):
         pkts = []
         for i in range(num):
             pkt = (Ether(dst=pg.local_mac, src=pg.remote_mac) /
-                   IP(src=pg.remote_ip4, dst=memif.ip4_addr) /
+                   IP(src=pg.remote_ip4, dst=memif.ip_prefix.address) /
                    ICMP(id=memif.if_id, type='echo-request', seq=i))
             pkts.append(pkt)
         return pkts
 
     def _verify_icmp(self, pg, memif, rx, seq):
         ip = rx[IP]
-        self.assertEqual(ip.src, memif.ip4_addr)
+        self.assertEqual(ip.src, memif.ip_prefix.address)
         self.assertEqual(ip.dst, pg.remote_ip4)
         self.assertEqual(ip.proto, 1)
         icmp = rx[ICMP]
@@ -219,10 +226,12 @@ class TestMemif(VppTestCase):
 
     def test_memif_ping(self):
         """ Memif ping """
+
         memif = VppMemif(self, MEMIF_ROLE.SLAVE,  MEMIF_MODE.ETHERNET)
 
         remote_socket = VppSocketFilename(self.remote_test, 1,
-                                          self.tempdir + "/memif.sock")
+                                          b"%s/memif.sock" % six.ensure_binary(
+                                              self.tempdir, encoding='utf-8'))
         remote_socket.add_vpp_config()
 
         remote_memif = VppMemif(self.remote_test, MEMIF_ROLE.MASTER,
@@ -240,11 +249,11 @@ class TestMemif(VppTestCase):
         self.assertTrue(remote_memif.wait_for_link_up(5))
 
         # add routing to remote vpp
-        dst_addr = socket.inet_pton(socket.AF_INET, self.pg0._local_ip4_subnet)
-        dst_addr_len = 24
-        next_hop_addr = socket.inet_pton(socket.AF_INET, memif.ip4_addr)
-        self.remote_test.vapi.ip_add_del_route(
-            dst_addr, dst_addr_len, next_hop_addr)
+        route = VppIpRoute(self.remote_test, self.pg0._local_ip4_subnet, 24,
+                           [VppRoutePath(memif.ip_prefix.address, 0xffffffff)],
+                           register=False)
+
+        route.add_vpp_config()
 
         # create ICMP echo-request from local pg to remote memif
         packet_num = 10
@@ -259,6 +268,8 @@ class TestMemif(VppTestCase):
             self._verify_icmp(self.pg0, remote_memif, c, seq)
             seq += 1
 
+        route.remove_vpp_config()
+
 
 if __name__ == '__main__':
     unittest.main(testRunner=VppTestRunner)