X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=test%2Ftest_pipe.py;h=6e3edca3c500cd44c41cf32cfefd64dcab9e48cf;hb=770a0deaadfb2d26cbc5da05f84578a7bd92e9d2;hp=a89c1e90236176fba37e18b39cbf6b691b354b3b;hpb=17ff3c1fa5687255a118c53223fa2cd49132d929;p=vpp.git diff --git a/test/test_pipe.py b/test/test_pipe.py index a89c1e90236..6e3edca3c50 100644 --- a/test/test_pipe.py +++ b/test/test_pipe.py @@ -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): @@ -32,14 +35,11 @@ class VppPipe(VppInterface): self.result = self._test.vapi.pipe_create( 0 if self.instance == 0xffffffff else 1, self.instance) - self.set_sw_if_index(self.result.parent_sw_if_index) + self.set_sw_if_index(self.result.sw_if_index) def remove_vpp_config(self): self._test.vapi.pipe_delete( - self.result.parent_sw_if_index) - - def __str__(self): - return self.object_id() + self.result.sw_if_index) def object_id(self): return "pipe-%d" % (self._sw_if_index) @@ -47,20 +47,28 @@ class VppPipe(VppInterface): def query_vpp_config(self): pipes = self._test.vapi.pipe_dump() for p in pipes: - if p.parent_sw_if_index == self.result.parent_sw_if_index: + if p.sw_if_index == self.result.sw_if_index: return True return False def set_unnumbered(self, ip_sw_if_index, is_add=True): - res = self._test.vapi.sw_interface_set_unnumbered( - self.east, ip_sw_if_index, is_add) - res = self._test.vapi.sw_interface_set_unnumbered( - self.west, ip_sw_if_index, is_add) + res = self._test.vapi.sw_interface_set_unnumbered(ip_sw_if_index, + self.east, is_add) + res = self._test.vapi.sw_interface_set_unnumbered(ip_sw_if_index, + self.west, is_add) 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() @@ -78,9 +86,7 @@ class TestPipe(VppTestCase): def test_pipe(self): """ Pipes """ - pipes = [] - pipes.append(VppPipe(self)) - pipes.append(VppPipe(self, 10)) + pipes = [VppPipe(self), VppPipe(self, 10)] for p in pipes: p.add_vpp_config() @@ -102,16 +108,16 @@ class TestPipe(VppTestCase): self.pg1.sw_if_index, enable=1) - # test bi-drectional L2 flow pg0<->pg1 + # test bi-directional L2 flow pg0<->pg1 p = (Ether(src=self.pg0.remote_mac, dst=self.pg1.remote_mac) / 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 @@ -134,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, @@ -144,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 @@ -194,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, @@ -215,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 @@ -224,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, @@ -234,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()