From patchwork Wed Nov 24 10:58:14 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Xu, HailinX" X-Patchwork-Id: 104639 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 43152A0C52; Wed, 24 Nov 2021 04:28:22 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3D6DB40E0F; Wed, 24 Nov 2021 04:28:22 +0100 (CET) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by mails.dpdk.org (Postfix) with ESMTP id 0A52F40040 for ; Wed, 24 Nov 2021 04:28:19 +0100 (CET) X-IronPort-AV: E=McAfee;i="6200,9189,10177"; a="235013824" X-IronPort-AV: E=Sophos;i="5.87,258,1631602800"; d="scan'208";a="235013824" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Nov 2021 19:28:19 -0800 X-IronPort-AV: E=Sophos;i="5.87,258,1631602800"; d="scan'208";a="497517700" Received: from unknown (HELO localhost.localdomain) ([10.240.183.55]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Nov 2021 19:28:17 -0800 From: Hailin Xu To: dts@dpdk.org, qi.fu@intel.com Cc: Hailin Xu Subject: [dts][PATCH v3 2/3] tests/cvl_rss_configure: change test case Date: Wed, 24 Nov 2021 18:58:14 +0800 Message-Id: <20211124105815.32225-3-hailinx.xu@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211124105815.32225-1-hailinx.xu@intel.com> References: <20211124105815.32225-1-hailinx.xu@intel.com> X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dts-bounces@dpdk.org 1. Change code to support rss common interface and adapt to test plan. 2. Change packet checkpoint from queue to hash value. Signed-off-by: Hailin Xu Tested-by: Xu Hailin --- tests/TestSuite_cvl_rss_configure.py | 437 +++++++++++++-------------- 1 file changed, 211 insertions(+), 226 deletions(-) diff --git a/tests/TestSuite_cvl_rss_configure.py b/tests/TestSuite_cvl_rss_configure.py index 1c4ffbfc..e0dbd420 100644 --- a/tests/TestSuite_cvl_rss_configure.py +++ b/tests/TestSuite_cvl_rss_configure.py @@ -29,166 +29,192 @@ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -import json -import os -import re import time -from collections import OrderedDict - -from scapy.contrib.gtp import * - -import framework.packet as packet -import tests.rte_flow_common as rfc -from framework.packet import IncreaseIP, IncreaseIPv6 -from framework.pmd_output import PmdOutput from framework.test_case import TestCase -from framework.utils import BLUE, RED - -out = os.popen("pip list|grep scapy ") -version_result =out.read() -p=re.compile('scapy\s+2\.3\.\d+') -m=p.search(version_result) - -tv_mac_ip_ipv4 = { - "name":"tv_mac_ip_ipv4", - "scapy_str":['Ether(dst="00:00:00:00:01:00")/IP(src="192.168.0.%d", dst="192.168.0.%d")/("X"*480)' %(i, i+10) for i in range(0,100)], - "check_func_param": {"expect_port":0} -} - -tv_mac_ip_ipv6 = { - "name":"tv_mac_ip_ipv6", - "scapy_str": ['Ether(dst="00:00:00:00:01:00")/IPv6(src="2001::%d", dst="2001::%d")/("X"*480)' %(i, i+10) for i in range(0,100)], - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv4_udp_l3_random = { - "name":"tv_mac_ipv4_udp_l3_random", - "scapy_str":['Ether(dst="00:00:00:00:01:00")/IP(src="192.168.0.%d", dst="192.168.0.%d")/UDP()/("X"*480)' %(i,i+10) for i in range(0,100)], - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv4_udp_l4_random = { - "name":"tv_mac_ipv4_udp_l4_random", - "scapy_str":['Ether(dst="00:00:00:00:01:00")/IP()/UDP(sport=%d, dport=%d)/("X"*480)' %(i+50,i+55) for i in range(0,100)], - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv6_udp_l3_random = { - "name":"tv_mac_ipv6_udp_l3_random", - "scapy_str":['Ether(dst="00:00:00:00:01:00")/IPv6(src="2001::%d", dst="2001::%d")/UDP()/("X"*480)' %(i,i+10) for i in range(0,100)], - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv6_udp_l4_random = { - "name":"tv_mac_ipv6_udp_l4_random", - "scapy_str":['Ether(dst="00:00:00:00:01:00")/IPv6()/UDP(sport=%d, dport=%d)/("X"*480)' %(i+50,i+55) for i in range(0,100)], - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv4_tcp_l3_random = { - "name":"tv_mac_ipv4_tcp_l3_random", - "scapy_str":['Ether(dst="00:00:00:00:01:00")/IP(src="192.168.0.%d", dst="192.168.0.%d")/TCP()/("X"*480)' %(i,i+10) for i in range(0,100)], - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv4_tcp_l4_random = { - "name":"tv_mac_ipv4_tcp_l4_random", - "scapy_str":['Ether(dst="00:00:00:00:01:00")/IP()/TCP(sport=%d, dport=%d)/("X"*480)' %(i+50,i+55) for i in range(0,100)], - "check_func_param": {"expect_port":0} -} - -tv_mac_ipv6_tcp_l3_random = { - "name":"tv_mac_ipv6_tcp_l3_random", - "scapy_str":['Ether(dst="00:00:00:00:01:00")/IPv6(src="2001::%d", dst="2001::%d")/TCP()/("X"*480)' %(i,i+10) for i in range(0,100)], - "check_func_param": {"expect_port":0} +from framework.pmd_output import PmdOutput +from framework import packet +from .rte_flow_common import RssProcessing + +mac_ipv4_basic_pkt = 'Ether(dst="00:00:00:00:01:00")/IP(src="192.168.0.2", dst="192.168.0.3")/("X"*480)' +mac_ipv6_basic_pkt = 'Ether(dst="00:00:00:00:01:00")/IPv6(src="2001::2", dst="2001::3")/("X"*480)' +mac_ipv4_tcp_basic_pkt = 'Ether(dst="00:00:00:00:01:00")/IP(src="192.168.0.2", dst="192.168.0.3")/TCP(sport=1026, dport=1027)/("X"*480)' +mac_ipv6_tcp_basic_pkt = 'Ether(dst="00:00:00:00:01:00")/IPv6(src="2001::2", dst="2001::3")/TCP(sport=1026, dport=1027)/("X"*480)' +mac_ipv4_udp_basic_pkt = 'Ether(dst="00:00:00:00:01:00")/IP(src="192.168.0.2", dst="192.168.0.3")/UDP(sport=1026, dport=1027)/("X"*480)' +mac_ipv6_udp_basic_pkt = 'Ether(dst="00:00:00:00:01:00")/IPv6(src="2001::2", dst="2001::3")/UDP(sport=1026, dport=1027)/("X"*480)' +mac_ipv4_sctp_basic_pkt = 'Ether(dst="00:00:00:00:01:00")/IP(src="192.168.0.2", dst="192.168.0.3")/SCTP(sport=1026, dport=1027)/("X"*480)' +mac_ipv6_sctp_basic_pkt = 'Ether(dst="00:00:00:00:01:00")/IPv6(src="2001::2", dst="2001::3")/TCP(sport=1026, dport=1027)/("X"*480)' + +mac_ipv4_changed_pkt = ['Ether(dst="00:00:00:00:01:00")/IP(src="192.168.0.2", dst="192.168.0.5")/("X"*480)', + 'Ether(dst="00:00:00:00:01:00")/IP(src="192.168.0.5", dst="192.168.0.3")/("X"*480)'] + +mac_ipv6_changed_pkt = ['Ether(dst="00:00:00:00:01:00")/IPv6(src="2001::2", dst="2001::5")/("X"*480)', + 'Ether(dst="00:00:00:00:01:00")/IPv6(src="2001::5", dst="2001::3")/("X"*480)'] + +mac_ipv4_tcp_changed_l3_pkt = ['Ether(dst="00:00:00:00:01:00")/IP(src="192.168.0.2", dst="192.168.0.5")/TCP(sport=1026, dport=1027)/("X"*480)', + 'Ether(dst="00:00:00:00:01:00")/IP(src="192.168.0.5", dst="192.168.0.3")/TCP(sport=1026, dport=1027)/("X"*480)'] + +mac_ipv4_tcp_changed_l4_pkt = ['Ether(dst="00:00:00:00:01:00")/IP(src="192.168.0.2", dst="192.168.0.3")/TCP(sport=1025, dport=1027)/("X"*480)', + 'Ether(dst="00:00:00:00:01:00")/IP(src="192.168.0.2", dst="192.168.0.3")/TCP(sport=1026, dport=1025)/("X"*480)'] + +mac_ipv6_tcp_changed_l3_pkt = ['Ether(dst="00:00:00:00:01:00")/IPv6(src="2001::2", dst="2001::5")/TCP(sport=1026, dport=1027)/("X"*480)', + 'Ether(dst="00:00:00:00:01:00")/IPv6(src="2001::5", dst="2001::3")/TCP(sport=1026, dport=1027)/("X"*480)'] + +mac_ipv6_tcp_changed_l4_pkt = ['Ether(dst="00:00:00:00:01:00")/IPv6(src="2001::2", dst="2001::3")/TCP(sport=1025, dport=1027)/("X"*480)', + 'Ether(dst="00:00:00:00:01:00")/IPv6(src="2001::2", dst="2001::3")/TCP(sport=1026, dport=1025)/("X"*480)'] + +mac_ipv4_udp_changed_l3_pkt = [sv.replace("/TCP", "/UDP") for sv in mac_ipv4_tcp_changed_l3_pkt] +mac_ipv4_udp_changed_l4_pkt = [sv.replace("/TCP", "/UDP") for sv in mac_ipv4_tcp_changed_l4_pkt] + +mac_ipv6_udp_changed_l3_pkt = [sv.replace("/TCP", "/UDP") for sv in mac_ipv6_tcp_changed_l3_pkt] +mac_ipv6_udp_changed_l4_pkt = [sv.replace("/TCP", "/UDP") for sv in mac_ipv6_tcp_changed_l4_pkt] + +mac_ipv4_sctp_changed_l3_pkt = [sv.replace("/TCP", "/SCTP") for sv in mac_ipv4_tcp_changed_l3_pkt] +mac_ipv4_sctp_changed_l4_pkt = [sv.replace("/TCP", "/SCTP") for sv in mac_ipv4_tcp_changed_l4_pkt] + +mac_ipv6_sctp_changed_l3_pkt = [sv.replace("/TCP", "/SCTP") for sv in mac_ipv6_tcp_changed_l3_pkt] +mac_ipv6_sctp_changed_l4_pkt = [sv.replace("/TCP", "/SCTP") for sv in mac_ipv6_tcp_changed_l4_pkt] + +command_line_option_rss_ip = { + 'sub_casename': 'command_line_option_rss_ip', + 'port_id': 0, + 'test': [ + {'send_packet': mac_ipv4_basic_pkt, + 'action': {'save_hash': 'ip-ipv4'}}, + {'send_packet': mac_ipv4_changed_pkt, + 'action': {'check_hash_different': 'ip-ipv4'}}, + {'send_packet': mac_ipv6_basic_pkt, + 'action': {'save_hash': 'ip-ipv6'}}, + {'send_packet': mac_ipv6_changed_pkt, + 'action': {'check_hash_different': 'ip-ipv4'}}, + # ipv4/ipv6 tcp + {'send_packet': mac_ipv4_tcp_basic_pkt, + 'action': {'save_hash': 'ipv4-tcp'}}, + {'send_packet': mac_ipv4_tcp_changed_l3_pkt, + 'action': {'check_hash_different': 'ipv4-tcp'}}, + {'send_packet': mac_ipv4_tcp_changed_l4_pkt, + 'action': {'check_hash_same': 'ipv4-tcp'}}, + {'send_packet': mac_ipv6_tcp_basic_pkt, + 'action': {'save_hash': 'ipv6-tcp'}}, + {'send_packet': mac_ipv6_tcp_changed_l3_pkt, + 'action': {'check_hash_different': 'ipv6-tcp'}}, + {'send_packet': mac_ipv6_tcp_changed_l4_pkt, + 'action': {'check_hash_same': 'ipv6-tcp'}}, + # ipv4/ipv6 udp + {'send_packet': mac_ipv4_udp_basic_pkt, + 'action': {'save_hash': 'ipv4-udp'}}, + {'send_packet': mac_ipv4_udp_changed_l3_pkt, + 'action': {'check_hash_different': 'ipv4-udp'}}, + {'send_packet': mac_ipv4_udp_changed_l4_pkt, + 'action': {'check_hash_same': 'ipv4-udp'}}, + {'send_packet': mac_ipv6_udp_basic_pkt, + 'action': {'save_hash': 'ipv6-udp'}}, + {'send_packet': mac_ipv6_udp_changed_l3_pkt, + 'action': {'check_hash_different': 'ipv6-udp'}}, + {'send_packet': mac_ipv6_udp_changed_l4_pkt, + 'action': {'check_hash_same': 'ipv6-udp'}}, + # ipv4/ipv6 sctp + {'send_packet': mac_ipv4_sctp_basic_pkt, + 'action': {'save_hash': 'ipv4-sctp'}}, + {'send_packet': mac_ipv4_sctp_changed_l3_pkt, + 'action': {'check_hash_different': 'ipv4-sctp'}}, + {'send_packet': mac_ipv4_sctp_changed_l4_pkt, + 'action': {'check_hash_same': 'ipv4-sctp'}}, + {'send_packet': mac_ipv6_sctp_basic_pkt, + 'action': {'save_hash': 'ipv6-sctp'}}, + {'send_packet': mac_ipv6_sctp_changed_l3_pkt, + 'action': {'check_hash_different': 'ipv6-sctp'}}, + {'send_packet': mac_ipv6_sctp_changed_l4_pkt, + 'action': {'check_hash_same': 'ipv6-sctp'}} + ] } -tv_mac_ipv6_tcp_l4_random = { - "name":"tv_mac_ipv6_tcp_l4_random", - "scapy_str":['Ether(dst="00:00:00:00:01:00")/IPv6()/TCP(sport=%d, dport=%d)/("X"*480)' %(i+50,i+55) for i in range(0,100)], - "check_func_param": {"expect_port":0} +command_line_option_rss_udp = { + 'sub_casename': 'command_line_option_rss_udp', + 'port_id': 0, + 'test': [ + # ipv4/ipv6 udp + {'send_packet': mac_ipv4_udp_basic_pkt, + 'action': {'save_hash': 'ipv4-udp'}}, + {'send_packet': mac_ipv4_udp_changed_l3_pkt, + 'action': {'check_hash_different': 'ipv4-udp'}}, + {'send_packet': mac_ipv4_udp_changed_l4_pkt, + 'action': {'check_hash_different': 'ipv4-udp'}}, + {'send_packet': mac_ipv6_udp_basic_pkt, + 'action': {'save_hash': 'ipv6-udp'}}, + {'send_packet': mac_ipv6_udp_changed_l3_pkt, + 'action': {'check_hash_different': 'ipv6-udp'}}, + {'send_packet': mac_ipv6_udp_changed_l4_pkt, + 'action': {'check_hash_different': 'ipv6-udp'}}, + # ipv4/ipv6 tcp/sctp + {'send_packet': mac_ipv4_basic_pkt, + 'action': {'check_no_hash': 'ip-ipv4'}}, + {'send_packet': mac_ipv6_basic_pkt, + 'action': {'check_no_hash': 'ip-ipv6'}}, + {'send_packet': mac_ipv4_tcp_basic_pkt, + 'action': {'check_no_hash': 'ipv4-tcp'}}, + {'send_packet': mac_ipv6_tcp_basic_pkt, + 'action': {'check_no_hash': 'ipv6-tcp'}}, + {'send_packet': mac_ipv4_sctp_basic_pkt, + 'action': {'check_no_hash': 'ipv4-sctp'}}, + {'send_packet': mac_ipv6_sctp_basic_pkt, + 'action': {'check_no_hash': 'ipv6-sctp'}}, + ] } -tv_mac_ipv4_sctp = { - "name":"tv_mac_ipv4_sctp", - "scapy_str":['Ether(dst="00:00:00:00:01:00")/IP(src="192.168.0.%d", dst="192.168.0.%d")/SCTP()/("X"*480)' %(i,i+10) for i in range(0,100)], - "check_func_param": {"expect_port":0} +command_line_option_disable_rss = { + 'sub_casename': 'command_line_option_disable', + 'port_id': 0, + 'test': [ + # all + {'send_packet': mac_ipv4_basic_pkt, + 'action': {'check_no_hash': 'ip-ipv4'}}, + {'send_packet': mac_ipv4_basic_pkt, + 'action': {'check_no_hash': 'ip-ipv6'}}, + {'send_packet': mac_ipv4_tcp_basic_pkt, + 'action': {'check_no_hash': 'ipv4-tcp'}}, + {'send_packet': mac_ipv6_tcp_basic_pkt, + 'action': {'check_no_hash': 'ipv6-tcp'}}, + {'send_packet': mac_ipv4_udp_basic_pkt, + 'action': {'check_no_hash': 'ipv4-udp'}}, + {'send_packet': mac_ipv6_udp_basic_pkt, + 'action': {'check_no_hash': 'ipv6-udp'}}, + {'send_packet': mac_ipv4_sctp_basic_pkt, + 'action': {'check_no_hash': 'ipv4-sctp'}}, + {'send_packet': mac_ipv6_sctp_basic_pkt, + 'action': {'check_no_hash': 'ipv6-sctp'}}, + ] } -tv_mac_ipv6_sctp = { - "name":"tv_mac_ipv6_sctp", - "scapy_str":['Ether(dst="00:00:00:00:01:00")/IPv6(src="2001::%d", dst="2001::%d")/SCTP()/("X"*480)' %(i,i+10) for i in range(0,100)], - "check_func_param": {"expect_port":0} +rss_configure_to_ip = { + 'sub_casename': 'rss_configure_to_ip', + 'port_id': 0, + 'test': command_line_option_rss_ip['test'] } -tvs_mac_rss_ip = [ - tv_mac_ip_ipv4, - tv_mac_ip_ipv6 - ] - -tvs_mac_rss_l3 = [ - tv_mac_ip_ipv4, - tv_mac_ip_ipv6, - tv_mac_ipv4_udp_l3_random, - tv_mac_ipv6_udp_l3_random, - tv_mac_ipv4_tcp_l3_random, - tv_mac_ipv6_tcp_l3_random, - tv_mac_ipv4_sctp, - tv_mac_ipv6_sctp - ] - -tvs_mac_rss_l4 = [ - tv_mac_ipv4_udp_l4_random, - tv_mac_ipv6_udp_l4_random, - tv_mac_ipv4_tcp_l4_random, - tv_mac_ipv6_tcp_l4_random - ] - -tvs_mac_rss_udp = [ - tv_mac_ipv4_udp_l3_random, - tv_mac_ipv4_udp_l4_random, - tv_mac_ipv6_udp_l3_random, - tv_mac_ipv6_udp_l4_random - ] - -tvs_mac_rss_udp_l4 = [ - tv_mac_ipv4_udp_l4_random, - tv_mac_ipv6_udp_l4_random - ] - -tvs_mac_rss_tcp = [ - tv_mac_ipv4_tcp_l3_random, - tv_mac_ipv4_tcp_l4_random, - tv_mac_ipv6_tcp_l3_random, - tv_mac_ipv6_tcp_l4_random - ] +rss_configure_to_udp = eval(str(command_line_option_rss_udp) + .replace("command_line_option_rss_udp", "rss_configure_to_udp")) -tvs_mac_rss_tcp_l4 = [ - tv_mac_ipv4_tcp_l4_random, - tv_mac_ipv6_tcp_l4_random - ] +rss_configure_to_tcp = eval(str(rss_configure_to_udp).replace("to_udp", "to_tcp") + .replace("/UDP", "/UDP1") + .replace("-udp", "-udp1") + .replace("/TCP", "/UDP") + .replace("-tcp", "-udp") + .replace("/UDP1", "/TCP") + .replace("-udp1", "-tcp")) -tvs_mac_rss_sctp = [ - tv_mac_ipv4_sctp, - tv_mac_ipv6_sctp - ] +rss_configure_to_sctp = eval(str(rss_configure_to_udp).replace("to_udp", "to_sctp") + .replace("/UDP", "/UDP1") + .replace("-udp", "-udp1") + .replace("/SCTP", "/UDP") + .replace("-sctp", "-udp") + .replace("/UDP1", "/SCTP") + .replace("-udp1", "-sctp")) -tvs_mac_rss_all = [ - tv_mac_ip_ipv4, - tv_mac_ip_ipv6, - tv_mac_ipv4_udp_l3_random, - tv_mac_ipv4_udp_l4_random, - tv_mac_ipv6_udp_l3_random, - tv_mac_ipv6_udp_l4_random, - tv_mac_ipv4_tcp_l3_random, - tv_mac_ipv4_tcp_l4_random, - tv_mac_ipv6_tcp_l3_random, - tv_mac_ipv6_tcp_l4_random, - tv_mac_ipv4_sctp, - tv_mac_ipv6_sctp - ] +rss_configure_to_all = eval(str(command_line_option_rss_ip).replace("to_udp", "to_all") + .replace("check_hash_same", "check_hash_different")) -test_results = OrderedDict() +rss_configure_to_default = eval(str(command_line_option_rss_ip).replace("to_udp", "to_all") + .replace("check_hash_same", "check_hash_different")) class RSSConfigureTest(TestCase): @@ -198,6 +224,7 @@ class RSSConfigureTest(TestCase): Generic filter Prerequistites """ self.dut_ports = self.dut.get_ports(self.nic) + self.dut.bind_interfaces_linux(self.drivername) # Verify that enough ports are available self.verify(len(self.dut_ports) >= 1, "Insufficient ports") #self.cores = "1S/8C/1T" @@ -209,108 +236,66 @@ class RSSConfigureTest(TestCase): self.pf_mac = self.dut.get_mac_address(0) self.pf_pci = self.dut.ports_info[self.dut_ports[0]]['pci'] self.verify(self.nic in ["columbiaville_25g","columbiaville_100g"], "%s nic not support ethertype filter" % self.nic) + self.rsspro = RssProcessing(self, self.pmdout, [self.__tx_iface], rxq=16) def set_up(self): """ Run before each test case. """ - self.dut.kill_all() - - def tear_down(self): - """ - Run after each test case. - """ - self.dut.kill_all() - - def tear_down_all(self): - """ - Run after each test suite. - """ - self.dut.kill_all() + pass - def create_testpmd_command(self, line_option): - """ - Create testpmd command for non-pipeline mode - """ - #Prepare testpmd EAL and parameters - all_eal_param = self.dut.create_eal_parameters(ports=[self.pf_pci]) - print(all_eal_param) #print eal parameters - command = self.dut.apps_name['test-pmd'] + all_eal_param + " -- -i --rxq=10 --txq=10" + line_option - return command - - def _rss_validate_pattern(self, test_vectors, command, rss_type, is_rss): - - global test_results - out = self.dut.send_expect(command, "testpmd> ", 120) - self.logger.debug(out) #print the log - self.dut.send_expect("set fwd rxonly", "testpmd> ", 15) - self.dut.send_expect("set verbose 1", "testpmd> ", 15) + def launch_testpmd(self, line_option="", rss_type=""): + self.pmdout.start_testpmd(ports=[self.pf_pci], param="--rxq=16 --txq=16 " + line_option) + self.pmdout.execute_cmd("set fwd rxonly") + self.pmdout.execute_cmd("set verbose 1") if rss_type != "": - self.dut.send_expect("port config all rss %s" % rss_type, "testpmd> ", 15) - - test_results.clear() - self.count = 1 - self.mac_count=100 - for tv in test_vectors: - self.dut.send_expect("start", "testpmd> ", 15) - time.sleep(2) - tv["check_func_param"]["expect_port"] = self.dut_ports[0] - print("expect_port is", self.dut_ports[0]) - - #send a packet - pkt = packet.Packet() - pkt.update_pkt(tv["scapy_str"]) - pkt.send_pkt(self.tester, tx_port=self.__tx_iface, count=self.count) - - out = self.dut.send_expect("stop", "testpmd> ",60) - print(out) - check_result = [] - check_result = rfc.check_packets_of_each_queue(out) - self.verify(check_result[0] == is_rss, check_result[1]) - - self.dut.send_expect("quit", "#") + self.pmdout.execute_cmd("port config all rss %s" % rss_type) + self.pmdout.execute_cmd("start") def test_command_line_option_rss_ip(self): - command = self.create_testpmd_command(line_option = " --rss-ip") - self._rss_validate_pattern(tvs_mac_rss_l3, command, rss_type = "", is_rss = True) - self._rss_validate_pattern(tvs_mac_rss_l4, command, rss_type = "", is_rss = False) + self.launch_testpmd(line_option="--rss-ip") + self.rsspro.handle_rss_distribute_cases(command_line_option_rss_ip) def test_command_line_option_rss_udp(self): - command = self.create_testpmd_command(line_option = " --rss-udp") - self._rss_validate_pattern(tvs_mac_rss_udp, command, rss_type = "", is_rss = True) - self._rss_validate_pattern(tvs_mac_rss_ip, command, rss_type = "", is_rss = False) - self._rss_validate_pattern(tvs_mac_rss_tcp, command, rss_type = "", is_rss = False) - self._rss_validate_pattern(tvs_mac_rss_sctp, command, rss_type = "", is_rss = False) + self.launch_testpmd(line_option="--rss-udp") + self.rsspro.handle_rss_distribute_cases(command_line_option_rss_udp) def test_command_line_option_rss_disable(self): - command = self.create_testpmd_command(line_option = " --disable-rss") - self._rss_validate_pattern(tvs_mac_rss_all, command, rss_type = "", is_rss = False) + self.launch_testpmd(line_option="--disable-rss") + self.rsspro.handle_rss_distribute_cases(command_line_option_disable_rss) def test_rss_configure_to_ip(self): - command = self.create_testpmd_command(line_option = "") - self._rss_validate_pattern(tvs_mac_rss_l3, command, rss_type = "", is_rss = True) - self._rss_validate_pattern(tvs_mac_rss_l4, command, rss_type = "", is_rss = False) + self.launch_testpmd(rss_type="ip") + self.rsspro.handle_rss_distribute_cases(rss_configure_to_ip) def test_rss_configure_to_udp(self): - command = self.create_testpmd_command(line_option = "") - self._rss_validate_pattern(tvs_mac_rss_udp, command, rss_type = "udp", is_rss = True) - self._rss_validate_pattern(tvs_mac_rss_tcp_l4, command, rss_type = "udp", is_rss = False) + self.launch_testpmd(rss_type="udp") + self.rsspro.handle_rss_distribute_cases(rss_configure_to_udp) def test_rss_configure_to_tcp(self): - command = self.create_testpmd_command(line_option = "") - self._rss_validate_pattern(tvs_mac_rss_tcp, command, rss_type = "tcp", is_rss = True) - self._rss_validate_pattern(tvs_mac_rss_udp_l4, command, rss_type = "tcp", is_rss = False) + self.launch_testpmd(rss_type="tcp") + self.rsspro.handle_rss_distribute_cases(rss_configure_to_tcp) def test_rss_configure_to_sctp(self): - command = self.create_testpmd_command(line_option = "") - self._rss_validate_pattern(tvs_mac_rss_sctp, command, rss_type = "sctp", is_rss = True) - self._rss_validate_pattern(tvs_mac_rss_udp_l4, command, rss_type = "sctp", is_rss = False) - self._rss_validate_pattern(tvs_mac_rss_tcp_l4, command, rss_type = "sctp", is_rss = False) + self.launch_testpmd(rss_type="sctp") + self.rsspro.handle_rss_distribute_cases(rss_configure_to_sctp) def test_rss_configure_to_all(self): - command = self.create_testpmd_command(line_option = "") - self._rss_validate_pattern(tvs_mac_rss_all, command, rss_type = "all", is_rss = True) + self.launch_testpmd(rss_type="all") + self.rsspro.handle_rss_distribute_cases(rss_configure_to_all) def test_rss_configure_to_default(self): - command = self.create_testpmd_command(line_option = "") - self._rss_validate_pattern(tvs_mac_rss_all, command, rss_type = "default", is_rss = True) + self.launch_testpmd(rss_type="default") + self.rsspro.handle_rss_distribute_cases(rss_configure_to_default) + + def tear_down(self): + """ + Run after each test case. + """ + self.pmdout.execute_cmd("quit", "# ") + + def tear_down_all(self): + """ + Run after each test suite. + """ + self.dut.kill_all()