X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=test%2Ftest_memif.py;h=6413cfdbf2022568a8f2a1b0c34051919f7ed225;hb=053204ab039d34a990ff0e14c32ce3b294fcce0e;hp=6d462bae018ba8b00bab56327e27d9941dc37261;hpb=997439170aa3bb562c84e882c45331ba476e7c8e;p=vpp.git diff --git a/test/test_memif.py b/test/test_memif.py index 6d462bae018..6413cfdbf20 100644 --- a/test/test_memif.py +++ b/test/test_memif.py @@ -1,11 +1,15 @@ +import socket 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 * +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): @@ -43,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: @@ -91,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() @@ -144,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) @@ -182,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, @@ -200,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] @@ -217,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, @@ -238,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 @@ -257,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)