From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id E13C8A00BE; Wed, 29 Apr 2020 11:30:00 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id B1D351D99C; Wed, 29 Apr 2020 11:30:00 +0200 (CEST) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by dpdk.org (Postfix) with ESMTP id 20E121D99B for ; Wed, 29 Apr 2020 11:29:57 +0200 (CEST) IronPort-SDR: KWyEUSAC8QBGedtBHriG5uKp9aorCcAU3RJ34qFHipXdtMQBBTxb5fFkC2PdnR21KHqmry0S7S cSd/k+YM+Jcg== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Apr 2020 02:29:57 -0700 IronPort-SDR: Cd7Nxqh3lknpNfY7pblRxWaUQvOkcIeotolcUIC/B/4GKOvII9vWuHYlAR4oh81+82vtsd7N0c GzecpD8HPejg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,331,1583222400"; d="scan'208";a="276115836" Received: from unknown (HELO cb-dts.sh.intel.com) ([10.240.183.58]) by orsmga002.jf.intel.com with ESMTP; 29 Apr 2020 02:29:54 -0700 From: ChenBo To: dts@dpdk.org Cc: ChenBo Date: Wed, 29 Apr 2020 17:13:26 +0800 Message-Id: <20200429091326.17171-1-box.c.chen@intel.com> X-Mailer: git-send-email 2.17.1 Subject: [dts] [PATCH V1] test/ddp_l2tpv3: Adapt to Python 3 format X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.15 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 Sender: "dts" Adapt to Python 3 format, remove invalid variables Signed-off-by: ChenBo --- tests/TestSuite_ddp_l2tpv3.py | 427 +++++++++++++++++++--------------- 1 file changed, 235 insertions(+), 192 deletions(-) diff --git a/tests/TestSuite_ddp_l2tpv3.py b/tests/TestSuite_ddp_l2tpv3.py index 710a069..552232b 100644 --- a/tests/TestSuite_ddp_l2tpv3.py +++ b/tests/TestSuite_ddp_l2tpv3.py @@ -35,28 +35,26 @@ l2tpv3 test script. """ import time import re -import sys -import utils from test_case import TestCase from pmd_output import PmdOutput -from settings import get_nic_name from scapy.all import * import random + + class TestDdpL2tpv3(TestCase): def set_up_all(self): + self.dut.session.copy_file_to('dep/l2tpv3oip-l4.pkg', "/tmp/") + self.dut_testpmd = PmdOutput(self.dut) self.dut_ports = self.dut.get_ports(self.nic) - profile_file = 'dep/l2tpv3oip-l4.pkg' - profile_dst = "/tmp/" - self.dut.session.copy_file_to(profile_file, profile_dst) + self.used_dut_port = self.dut_ports[0] + tester_port = self.tester.get_local_port(self.used_dut_port) + self.tester_intf = self.tester.get_interface(tester_port) out = self.dut.send_expect("cat config/common_base", "]# ", 10) self.PF_Q_strip = 'CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_PF' pattern = "(%s=)(\d*)" % self.PF_Q_strip self.PF_QUEUE = self.element_strip(out, pattern) - self.used_dut_port = self.dut_ports[0] - tester_port = self.tester.get_local_port(self.used_dut_port) - self.tester_intf = self.tester.get_interface(tester_port) - self.dut_testpmd = PmdOutput(self.dut) + self.PF_Q_strip = 'CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_PF' def set_up(self): self.load_profile() @@ -69,13 +67,12 @@ class TestDdpL2tpv3(TestCase): s = re.compile(pattern) res = s.search(out) if res is None: - print 'Queue number not in output.' + print('Queue number not in output.') return None else: result = res.group(2) return int(result) - def load_profile(self): """ Load profile to update FVL configuration tables, profile will be @@ -84,15 +81,16 @@ class TestDdpL2tpv3(TestCase): self.dut_testpmd.start_testpmd( "Default", "--pkt-filter-mode=perfect --port-topology=chained \ --txq=%s --rxq=%s --disable-rss" - % (self.PF_QUEUE, self.PF_QUEUE)) - self.dut_testpmd.execute_cmd('port stop 0') + % (self.PF_QUEUE, self.PF_QUEUE)) + self.dut_testpmd.execute_cmd('port stop all') time.sleep(1) self.dut_testpmd.execute_cmd( 'ddp add 0 /tmp/l2tpv3oip-l4.pkg,/tmp/l2tpv3oip-l4.bak') out = self.dut_testpmd.execute_cmd('ddp get list 0') self.verify("Profile number is: 1" in out, "Failed to load ddp profile!!!") - self.dut_testpmd.execute_cmd('port start 0') + self.dut_testpmd.execute_cmd('port start all') + time.sleep(3) def l2tpv3pkts(self, keyword): """ @@ -101,7 +99,7 @@ class TestDdpL2tpv3(TestCase): pkt = [] if keyword is not 'def': if keyword is "l2tpv3oipv4": - pkt.append("Ether()/IP(proto=115)/Raw('\\x00\\x00\\x03\\xe9')") + pkt.append("Ether()/IP(proto=115)/Raw('\\x00\\x00\\x03\\xe9')") pkt.append("Ether()/IP(proto=115)/Raw('\\x00\\x00\\x03\\fe9')") if keyword is "l2tpv3oipv4_dst": pkt.append("Ether()/IP(dst=\"8.8.8.8\",proto=115)/Raw('\\x00\\x00\\x03\\xe9')") @@ -128,16 +126,20 @@ class TestDdpL2tpv3(TestCase): pkt.append("Ether()/IPv6(src=\"1:2:3:4:5:6:7:8\",nh=115)/Raw('\\x00\\x00\\x03\\xf9')") pkt.append("Ether()/IPv6(src=\"1111:2:3:4:5:6:7:8\",nh=115)/Raw('\\x00\\x00\\x03\\xe9')") if keyword is "l2tpv3oipv6_src_dst": - pkt.append("Ether()/IPv6(src=\"2:3:4:5:6:7:8:9\",dst=\"6:5:4:3:2:1:8:9\",nh=115)/Raw('\\x00\\x00\\x03\\xe9')") - pkt.append("Ether()/IPv6(src=\"2:3:4:5:6:7:8:9\",dst=\"6:5:4:3:2:1:8:9\",nh=115)/Raw('\\x00\\x00\\x03\\xf9')") - pkt.append("Ether()/IPv6(src=\"2222:3:4:5:6:7:8:9\",dst=\"6:5:4:3:2:1:8:9\",nh=115)/Raw('\\x00\\x00\\x03\\xe9')") - pkt.append("Ether()/IPv6(src=\"2:3:4:5:6:7:8:9\",dst=\"6666:5:4:3:2:1:8:9\",nh=115)/Raw('\\x00\\x00\\x03\\xe9')") + pkt.append( + "Ether()/IPv6(src=\"2:3:4:5:6:7:8:9\",dst=\"6:5:4:3:2:1:8:9\",nh=115)/Raw('\\x00\\x00\\x03\\xe9')") + pkt.append( + "Ether()/IPv6(src=\"2:3:4:5:6:7:8:9\",dst=\"6:5:4:3:2:1:8:9\",nh=115)/Raw('\\x00\\x00\\x03\\xf9')") + pkt.append( + "Ether()/IPv6(src=\"2222:3:4:5:6:7:8:9\",dst=\"6:5:4:3:2:1:8:9\",nh=115)/Raw('\\x00\\x00\\x03\\xe9')") + pkt.append( + "Ether()/IPv6(src=\"2:3:4:5:6:7:8:9\",dst=\"6666:5:4:3:2:1:8:9\",nh=115)/Raw('\\x00\\x00\\x03\\xe9')") if keyword is "l2tpv3_ipv4_ipv6": pkt.append("Ether()/IP(proto=115)/Raw('\\x00\\x00\\x03\\xe9')") pkt.append("Ether()/IP(proto=115)/Raw('\\x00\\x00\\x03\\xf9')") pkt.append("Ether()/IPv6(nh=115)/Raw('\\x00\\x00\\x03\\xe9')") pkt.append("Ether()/IPv6(nh=115)/Raw('\\x00\\x00\\x03\\xf9')") - if keyword is "l2tpv3oip_v4src_v6src" : + if keyword is "l2tpv3oip_v4src_v6src": pkt.append("Ether()/IP(src=\"1.3.5.7\",proto=115)/Raw('\\x00\\x00\\x03\\xe9')") pkt.append("Ether()/IP(src=\"1.3.5.7\",proto=115)/Raw('\\x00\\x00\\x03\\xa9')") pkt.append("Ether()/IP(src=\"11.3.5.7\",proto=115)/Raw('\\x00\\x00\\x03\\xe9')") @@ -156,10 +158,14 @@ class TestDdpL2tpv3(TestCase): pkt.append("Ether()/IP(src=\"9.8.7.6\",dst=\"4.5.6.7\",proto=115)/Raw('\\x00\\x00\\x03\\xf9')") pkt.append("Ether()/IP(src=\"99.8.7.6\",dst=\"4.5.6.7\",proto=115)/Raw('\\x00\\x00\\x03\\xe9')") pkt.append("Ether()/IP(src=\"9.8.7.6\",dst=\"44.5.6.7\",proto=115)/Raw('\\x00\\x00\\x03\\xe9')") - pkt.append("Ether()/IPv6(src=\"1:2:3:4:5:6:7:8\",dst=\"9:8:7:6:5:4:3:2\",nh=115)/Raw('\\x00\\x00\\x03\\xe9')") - pkt.append("Ether()/IPv6(src=\"1:2:3:4:5:6:7:8\",dst=\"9:8:7:6:5:4:3:2\",nh=115)/Raw('\\x00\\x00\\x03\\xf9')") - pkt.append("Ether()/IPv6(src=\"1111:2:3:4:5:6:7:8\",dst=\"9:8:7:6:5:4:3:2\",nh=115)/Raw('\\x00\\x00\\x03\\xe9')") - pkt.append("Ether()/IPv6(src=\"1:2:3:4:5:6:7:8\",dst=\"9999:8:7:6:5:4:3:2\",nh=115)/Raw('\\x00\\x00\\x03\\xe9')") + pkt.append( + "Ether()/IPv6(src=\"1:2:3:4:5:6:7:8\",dst=\"9:8:7:6:5:4:3:2\",nh=115)/Raw('\\x00\\x00\\x03\\xe9')") + pkt.append( + "Ether()/IPv6(src=\"1:2:3:4:5:6:7:8\",dst=\"9:8:7:6:5:4:3:2\",nh=115)/Raw('\\x00\\x00\\x03\\xf9')") + pkt.append( + "Ether()/IPv6(src=\"1111:2:3:4:5:6:7:8\",dst=\"9:8:7:6:5:4:3:2\",nh=115)/Raw('\\x00\\x00\\x03\\xe9')") + pkt.append( + "Ether()/IPv6(src=\"1:2:3:4:5:6:7:8\",dst=\"9999:8:7:6:5:4:3:2\",nh=115)/Raw('\\x00\\x00\\x03\\xe9')") if keyword is "l2tpv3oip_v4_v6_udp": pkt.append("Ether()/IP(dst=\"9.7.5.3\",proto=115)/Raw('\\x00\\x00\\x03\\xe9')") pkt.append("Ether()/IP(dst=\"9.7.5.3\",proto=115)/Raw('\\x00\\x00\\x03\\xb9')") @@ -168,27 +174,27 @@ class TestDdpL2tpv3(TestCase): pkt.append("Ether()/IP()/UDP()") return pkt - def send_and_verify(self,keyword='def'): + def send_and_verify(self, keyword='def'): """ Send packets and verify result. """ pkt = self.l2tpv3pkts(keyword) - qnum=[] + qnum = [] for i in range(len(pkt)): - self.tester.scapy_append('sendp([%s], iface="%s")'%(pkt[i], self.tester_intf)) - self.tester.scapy_execute() - out = self.dut.get_session_output(timeout=2) - pattern = "port (\d)/queue (\d{1,2}): received (\d) packets" - qnum.append(self.element_strip(out, pattern)) + self.tester.scapy_append('sendp([%s], iface="%s")' % (pkt[i], self.tester_intf)) + self.tester.scapy_execute() + out = self.dut.get_session_output(timeout=2) + pattern = "port (\d)/queue (\d{1,2}): received (\d) packets" + qnum.append(self.element_strip(out, pattern)) return qnum - def run_fd_test(self, keyword,crlwords_ipv4,crlwords_ipv6): + def run_fd_test(self, keyword, crlwords_ipv4, crlwords_ipv6): """ Configure Flow director rules. keywords: keywords have IPv4/IPv6 SIP DIP and UDP """ - self.dut_testpmd.execute_cmd('port stop 0') + self.dut_testpmd.execute_cmd('port stop all') self.dut_testpmd.execute_cmd('port config 0 pctype 28 fdir_inset clear all') self.dut_testpmd.execute_cmd('port config 0 pctype 38 fdir_inset clear all') if crlwords_ipv4 is not None: @@ -197,248 +203,282 @@ class TestDdpL2tpv3(TestCase): if crlwords_ipv6 is not None: for field in crlwords_ipv6: self.dut_testpmd.execute_cmd('port config 0 pctype 38 fdir_inset set field {}'.format(field)) - self.dut_testpmd.execute_cmd('port start 0') + self.dut_testpmd.execute_cmd('port start all') self.dut_testpmd.execute_cmd('start') self.dut_testpmd.execute_cmd('set verbose 1') - qdef=[] + qdef = [] qnum = self.send_and_verify(keyword) for i in range(len(qnum)): self.verify(qnum[i] == 0, "Receive packet from wrong queue!!!") - queue = random.randint(1, self.PF_QUEUE - 1) + queue = random.randint(1, self.PF_QUEUE - 1) if 'l2tpv3oipv4' is keyword: - - self.dut_testpmd.execute_cmd( 'flow create 0 ingress pattern eth / ipv4 / l2tpv3oip session_id is 1001 / end actions queue index {} / end'.format(queue)) - qdef.append(queue) #Queue Number as configured in the rule for matched sessionID - qdef.append(0) #Default Queue number to check for in case of non matching sessionID + self.dut_testpmd.execute_cmd( + 'flow create 0 ingress pattern eth / ipv4 / l2tpv3oip session_id is 1001 / end actions queue index {} / end'.format( + queue)) + qdef.append(queue) # Queue Number as configured in the rule for matched sessionID + qdef.append(0) # Default Queue number to check for in case of non matching sessionID if 'l2tpv3oipv4_dst' is keyword: - self.dut_testpmd.execute_cmd( 'flow create 0 ingress pattern eth / ipv4 dst is 8.8.8.8 / l2tpv3oip session_id is 1001 / end actions queue index {} / end'.format(queue)) - qdef.append(queue) #Queue Number as configured in the rule for matched sessionID - qdef.append(0) #Default Queue number to check for in case of non matching sessionID - qdef.append(0) #Default Queue number to check for in case of non matching DIP - + self.dut_testpmd.execute_cmd( + 'flow create 0 ingress pattern eth / ipv4 dst is 8.8.8.8 / l2tpv3oip session_id is 1001 / end actions queue index {} / end'.format( + queue)) + qdef.append(queue) # Queue Number as configured in the rule for matched sessionID + qdef.append(0) # Default Queue number to check for in case of non matching sessionID + qdef.append(0) # Default Queue number to check for in case of non matching DIP if 'l2tpv3oipv4_src' is keyword: - self.dut_testpmd.execute_cmd( 'flow create 0 ingress pattern eth / ipv4 src is 1.1.1.1 / l2tpv3oip session_id is 1001 / end actions queue index {} / end'.format(queue)) - qdef.append(queue) #Queue Number as configured in the rule for matched sessionID - qdef.append(0) #Default Queue number to check for in case of non matching sessionID - qdef.append(0) #Default Queue number to check for in case of non matching SIP + self.dut_testpmd.execute_cmd( + 'flow create 0 ingress pattern eth / ipv4 src is 1.1.1.1 / l2tpv3oip session_id is 1001 / end actions queue index {} / end'.format( + queue)) + qdef.append(queue) # Queue Number as configured in the rule for matched sessionID + qdef.append(0) # Default Queue number to check for in case of non matching sessionID + qdef.append(0) # Default Queue number to check for in case of non matching SIP if 'l2tpv3oipv4_src_dst' is keyword: - self.dut_testpmd.execute_cmd( 'flow create 0 ingress pattern eth / ipv4 src is 5.5.5.5 dst is 2.2.2.2 / l2tpv3oip session_id is 1001 / end actions queue index {} / end'.format(queue)) - qdef.append(queue) #Queue Number as configured in the rule for matched sessionID - qdef.append(0) #Default Queue number to check for in case of non matching sessionID - qdef.append(0) #Default Queue number to check for in case of non matching SIP - qdef.append(0) #Default Queue number to check for in case of non matching DIP + self.dut_testpmd.execute_cmd( + 'flow create 0 ingress pattern eth / ipv4 src is 5.5.5.5 dst is 2.2.2.2 / l2tpv3oip session_id is 1001 / end actions queue index {} / end'.format( + queue)) + qdef.append(queue) # Queue Number as configured in the rule for matched sessionID + qdef.append(0) # Default Queue number to check for in case of non matching sessionID + qdef.append(0) # Default Queue number to check for in case of non matching SIP + qdef.append(0) # Default Queue number to check for in case of non matching DIP if 'l2tpv3oipv6' is keyword: - self.dut_testpmd.execute_cmd( 'flow create 0 ingress pattern eth / ipv6 / l2tpv3oip session_id is 1001 / end actions queue index {} / end'.format(queue)) - qdef.append(queue) #Queue Number as configured in the rule for matched sessionID - qdef.append(0) #Default Queue number to check for in case of non matching sessionID + self.dut_testpmd.execute_cmd( + 'flow create 0 ingress pattern eth / ipv6 / l2tpv3oip session_id is 1001 / end actions queue index {} / end'.format( + queue)) + qdef.append(queue) # Queue Number as configured in the rule for matched sessionID + qdef.append(0) # Default Queue number to check for in case of non matching sessionID if 'l2tpv3oipv6_dst' is keyword: - self.dut_testpmd.execute_cmd( 'flow create 0 ingress pattern eth / ipv6 dst is 8:7:6:5:4:3:2:1 / l2tpv3oip session_id is 1001 / end actions queue index {} / end'.format(queue)) - qdef.append(queue) #Queue Number as configured in the rule for matched sessionID - qdef.append(0) #Default Queue number to check for in case of non matching sessionID - qdef.append(0) #Default Queue number to check for in case of non matching DIP + self.dut_testpmd.execute_cmd( + 'flow create 0 ingress pattern eth / ipv6 dst is 8:7:6:5:4:3:2:1 / l2tpv3oip session_id is 1001 / end actions queue index {} / end'.format( + queue)) + qdef.append(queue) # Queue Number as configured in the rule for matched sessionID + qdef.append(0) # Default Queue number to check for in case of non matching sessionID + qdef.append(0) # Default Queue number to check for in case of non matching DIP if 'l2tpv3oipv6_src' is keyword: - self.dut_testpmd.execute_cmd('flow create 0 ingress pattern eth / ipv6 src is 1:2:3:4:5:6:7:8 / l2tpv3oip session_id is 1001 / end actions queue index {} / end'.format(queue)) - qdef.append(queue) #Queue Number as configured in the rule for matched sessionID - qdef.append(0) #Default Queue number to check for in case of non matching sessionID - qdef.append(0) #Default Queue number to check for in case of non matching SIP + self.dut_testpmd.execute_cmd( + 'flow create 0 ingress pattern eth / ipv6 src is 1:2:3:4:5:6:7:8 / l2tpv3oip session_id is 1001 / end actions queue index {} / end'.format( + queue)) + qdef.append(queue) # Queue Number as configured in the rule for matched sessionID + qdef.append(0) # Default Queue number to check for in case of non matching sessionID + qdef.append(0) # Default Queue number to check for in case of non matching SIP if 'l2tpv3oipv6_src_dst' is keyword: - self.dut_testpmd.execute_cmd( 'flow create 0 ingress pattern eth / ipv6 src is 2:3:4:5:6:7:8:9 dst is 6:5:4:3:2:1:8:9 / l2tpv3oip session_id is 1001 / end actions queue index {} / end'.format(queue)) - qdef.append(queue) #Queue Number as configured in the rule for matched sessionID - qdef.append(0) #Default Queue number to check for in case of non matching sessionID - qdef.append(0) #Default Queue number to check for in case of non matching SIP - qdef.append(0) #Default Queue number to check for in case of non matching DIP + self.dut_testpmd.execute_cmd( + 'flow create 0 ingress pattern eth / ipv6 src is 2:3:4:5:6:7:8:9 dst is 6:5:4:3:2:1:8:9 / l2tpv3oip session_id is 1001 / end actions queue index {} / end'.format( + queue)) + qdef.append(queue) # Queue Number as configured in the rule for matched sessionID + qdef.append(0) # Default Queue number to check for in case of non matching sessionID + qdef.append(0) # Default Queue number to check for in case of non matching SIP + qdef.append(0) # Default Queue number to check for in case of non matching DIP if 'l2tpv3_ipv4_ipv6' is keyword: - self.dut_testpmd.execute_cmd( 'flow create 0 ingress pattern eth / ipv4 / l2tpv3oip session_id is 1001 / end actions queue index {} / end'.format(queue)) - qdef.append(queue) #Queue Number as configured in the rule for matched sessionID - qdef.append(0) #Default Queue number to check for in case of non matching sessionID + self.dut_testpmd.execute_cmd( + 'flow create 0 ingress pattern eth / ipv4 / l2tpv3oip session_id is 1001 / end actions queue index {} / end'.format( + queue)) + qdef.append(queue) # Queue Number as configured in the rule for matched sessionID + qdef.append(0) # Default Queue number to check for in case of non matching sessionID queue = random.randint(1, self.PF_QUEUE - 1) - out=self.dut_testpmd.execute_cmd( 'flow create 0 ingress pattern eth / ipv6 / l2tpv3oip session_id is 1001 / end actions queue index {} / end'.format(queue)) - qdef.append(queue) #Queue Number as configured in the rule for matched sessionID - qdef.append(0) #Default Queue number to check for in case of non matching sessionID + self.dut_testpmd.execute_cmd( + 'flow create 0 ingress pattern eth / ipv6 / l2tpv3oip session_id is 1001 / end actions queue index {} / end'.format( + queue)) + qdef.append(queue) # Queue Number as configured in the rule for matched sessionID + qdef.append(0) # Default Queue number to check for in case of non matching sessionID if 'l2tpv3oip_v4src_v6src' is keyword: - self.dut_testpmd.execute_cmd( 'flow create 0 ingress pattern eth / ipv4 src is 1.3.5.7 / l2tpv3oip session_id is 1001 / end actions queue index {} / end'.format(queue)) - qdef.append(queue) #Queue Number as configured in the rule for matched sessionID - qdef.append(0) #Default Queue number to check for in case of non matching sessionID - qdef.append(0) #Default Queue number to check for in case of non matching IPv4 SIP + self.dut_testpmd.execute_cmd( + 'flow create 0 ingress pattern eth / ipv4 src is 1.3.5.7 / l2tpv3oip session_id is 1001 / end actions queue index {} / end'.format( + queue)) + qdef.append(queue) # Queue Number as configured in the rule for matched sessionID + qdef.append(0) # Default Queue number to check for in case of non matching sessionID + qdef.append(0) # Default Queue number to check for in case of non matching IPv4 SIP queue = random.randint(1, self.PF_QUEUE - 1) - out=self.dut_testpmd.execute_cmd( 'flow create 0 ingress pattern eth / ipv6 src is 1:3:5:7:9:2:4:6 / l2tpv3oip session_id is 1001 / end actions queue index {} / end'.format(queue)) - qdef.append(queue) #Queue Number as configured in the rule for matched sessionID - qdef.append(0) #Default Queue number to check for in case of non matching sessionID - qdef.append(0) #Default Queue number to check for in case of non matching IPv6 SIP + self.dut_testpmd.execute_cmd( + 'flow create 0 ingress pattern eth / ipv6 src is 1:3:5:7:9:2:4:6 / l2tpv3oip session_id is 1001 / end actions queue index {} / end'.format( + queue)) + qdef.append(queue) # Queue Number as configured in the rule for matched sessionID + qdef.append(0) # Default Queue number to check for in case of non matching sessionID + qdef.append(0) # Default Queue number to check for in case of non matching IPv6 SIP if 'l2tpv3oip_v4dst_v6dst' is keyword: - self.dut_testpmd.execute_cmd( 'flow create 0 ingress pattern eth / ipv4 dst is 9.7.5.3 / l2tpv3oip session_id is 1001 / end actions queue index {} / end'.format(queue)) - qdef.append(queue) #Queue Number as configured in the rule for matched sessionID - qdef.append(0) #Default Queue number to check for in case of non matching sessionID - qdef.append(0) #Default Queue number to check for in case of non matching IPv4 DIP + self.dut_testpmd.execute_cmd( + 'flow create 0 ingress pattern eth / ipv4 dst is 9.7.5.3 / l2tpv3oip session_id is 1001 / end actions queue index {} / end'.format( + queue)) + qdef.append(queue) # Queue Number as configured in the rule for matched sessionID + qdef.append(0) # Default Queue number to check for in case of non matching sessionID + qdef.append(0) # Default Queue number to check for in case of non matching IPv4 DIP queue = random.randint(1, self.PF_QUEUE - 1) - self.dut_testpmd.execute_cmd( 'flow create 0 ingress pattern eth / ipv6 dst is 2:4:6:8:1:3:5:7 / l2tpv3oip session_id is 1001 / end actions queue index {} / end'.format(queue)) - qdef.append(queue) #Queue Number as configured in the rule for matched sessionID - qdef.append(0) #Default Queue number to check for in case of non matching sessionID - qdef.append(0) #Default Queue number to check for in case of non matching IPv6 DIP + self.dut_testpmd.execute_cmd( + 'flow create 0 ingress pattern eth / ipv6 dst is 2:4:6:8:1:3:5:7 / l2tpv3oip session_id is 1001 / end actions queue index {} / end'.format( + queue)) + qdef.append(queue) # Queue Number as configured in the rule for matched sessionID + qdef.append(0) # Default Queue number to check for in case of non matching sessionID + qdef.append(0) # Default Queue number to check for in case of non matching IPv6 DIP if 'l2tpv3oip_v4srcdst_v6srcdst' is keyword: - self.dut_testpmd.execute_cmd( 'flow create 0 ingress pattern eth / ipv4 src is 9.8.7.6 dst is 4.5.6.7 / l2tpv3oip session_id is 1001 / end actions queue index {} / end'.format(queue)) - qdef.append(queue) #Queue Number as configured in the rule for matched sessionID - qdef.append(0) #Default Queue number to check for in case of non matching sessionID - qdef.append(0) #Default Queue number to check for in case of non matching IPv4 SIP - qdef.append(0) #Default Queue number to check for in case of non matching IPv4 DIP + self.dut_testpmd.execute_cmd( + 'flow create 0 ingress pattern eth / ipv4 src is 9.8.7.6 dst is 4.5.6.7 / l2tpv3oip session_id is 1001 / end actions queue index {} / end'.format( + queue)) + qdef.append(queue) # Queue Number as configured in the rule for matched sessionID + qdef.append(0) # Default Queue number to check for in case of non matching sessionID + qdef.append(0) # Default Queue number to check for in case of non matching IPv4 SIP + qdef.append(0) # Default Queue number to check for in case of non matching IPv4 DIP queue = random.randint(1, self.PF_QUEUE - 1) - self.dut_testpmd.execute_cmd( 'flow create 0 ingress pattern eth / ipv6 src is 1:2:3:4:5:6:7:8 dst is 9:8:7:6:5:4:3:2 / l2tpv3oip session_id is 1001 / end actions queue index {} / end'.format(queue)) - qdef.append(queue) #Queue Number as configured in the rule for matched sessionID - qdef.append(0) #Default Queue number to check for in case of non matching sessionID - qdef.append(0) #Default Queue number to check for in case of non matching IPv6 SIP - qdef.append(0) #Default Queue number to check for in case of non matching IPv6 DIP + self.dut_testpmd.execute_cmd( + 'flow create 0 ingress pattern eth / ipv6 src is 1:2:3:4:5:6:7:8 dst is 9:8:7:6:5:4:3:2 / l2tpv3oip session_id is 1001 / end actions queue index {} / end'.format( + queue)) + qdef.append(queue) # Queue Number as configured in the rule for matched sessionID + qdef.append(0) # Default Queue number to check for in case of non matching sessionID + qdef.append(0) # Default Queue number to check for in case of non matching IPv6 SIP + qdef.append(0) # Default Queue number to check for in case of non matching IPv6 DIP if 'l2tpv3oip_v4_v6_udp' is keyword: - self.dut_testpmd.execute_cmd( 'flow create 0 ingress pattern eth / ipv4 / l2tpv3oip session_id is 1001 / end actions queue index {} / end'.format(queue)) - qdef.append(queue) #Queue Number as configured in the rule for matched sessionID - qdef.append(0) #Default Queue number to check for in case of non matching sessionID + self.dut_testpmd.execute_cmd( + 'flow create 0 ingress pattern eth / ipv4 / l2tpv3oip session_id is 1001 / end actions queue index {} / end'.format( + queue)) + qdef.append(queue) # Queue Number as configured in the rule for matched sessionID + qdef.append(0) # Default Queue number to check for in case of non matching sessionID queue = random.randint(1, self.PF_QUEUE - 1) - self.dut_testpmd.execute_cmd( 'flow create 0 ingress pattern eth / ipv6 / l2tpv3oip session_id is 1001 / end actions queue index {} / end'.format(queue)) - qdef.append(queue) #Queue Number as configured in the rule for matched sessionID - qdef.append(0) #Default Queue number to check for in case of non matching sessionID + self.dut_testpmd.execute_cmd( + 'flow create 0 ingress pattern eth / ipv6 / l2tpv3oip session_id is 1001 / end actions queue index {} / end'.format( + queue)) + qdef.append(queue) # Queue Number as configured in the rule for matched sessionID + qdef.append(0) # Default Queue number to check for in case of non matching sessionID queue = random.randint(1, self.PF_QUEUE - 1) - self.dut_testpmd.execute_cmd( 'flow create 0 ingress pattern eth / ipv4 / udp / end actions queue index {} / end'.format(queue)) - qdef.append(queue) #Queue Number as configured in the rule + self.dut_testpmd.execute_cmd( + 'flow create 0 ingress pattern eth / ipv4 / udp / end actions queue index {} / end'.format(queue)) + qdef.append(queue) # Queue Number as configured in the rule - qnum=self.send_and_verify(keyword) + qnum = self.send_and_verify(keyword) for i in range(len(qdef)): - self.verify(qdef[i] == qnum[i], "Receive packet from wrong queue!!!") - self.dut_testpmd.execute_cmd("flow flush 0") # Delete all the flow director rules + self.verify(qdef[i] == qnum[i], "Receive packet from wrong queue!!!") + self.dut_testpmd.execute_cmd("flow flush 0") # Delete all the flow director rules def test_l2tpv3oipv4(self): """ L2TPv3 PAY is supported by NVM with profile updated. - Default flow director input set is sessionID + Default flow director input set is sessionID flow director works to send matched packets to configured queue, otherwise to queue 0. """ keyword = 'l2tpv3oipv4' - crlwords_ipv4=range(44,46) - crlwords_ipv6=None - self.run_fd_test(keyword,crlwords_ipv4,crlwords_ipv6) + crlwords_ipv4 = range(44, 46) + crlwords_ipv6 = None + self.run_fd_test(keyword, crlwords_ipv4, crlwords_ipv6) def test_l2tpv3oipv4_src(self): """ Flow director input set is sessionID + SIP for pctype 28 """ - crlwords_ipv4=list(range(15,17))+list(range(44,46)) - crlwords_ipv6=None + crlwords_ipv4 = list(range(15, 17)) + list(range(44, 46)) + crlwords_ipv6 = None keyword = 'l2tpv3oipv4_src' - self.run_fd_test(keyword,crlwords_ipv4,crlwords_ipv6) + self.run_fd_test(keyword, crlwords_ipv4, crlwords_ipv6) def test_l2tpv3oipv4_dst(self): """ Flow director input set is sessionID + DIP for pctype 28 """ - crlwords_ipv4=list(range(27,29))+list(range(44,46)) - crlwords_ipv6=None + crlwords_ipv4 = list(range(27, 29)) + list(range(44, 46)) + crlwords_ipv6 = None keyword = 'l2tpv3oipv4_dst' - self.run_fd_test(keyword,crlwords_ipv4,crlwords_ipv6) + self.run_fd_test(keyword, crlwords_ipv4, crlwords_ipv6) def test_l2tpv3oipv4_src_dst(self): """ Flow director input set is sessionID + SIP + DIP for pctype 28 """ - crlwords_ipv4=list(range(15,17))+list(range(27,29))+list(range(44,46)) - crlwords_ipv6=None + crlwords_ipv4 = list(range(15, 17)) + list(range(27, 29)) + list(range(44, 46)) + crlwords_ipv6 = None keyword = 'l2tpv3oipv4_src_dst' - self.run_fd_test(keyword,crlwords_ipv4,crlwords_ipv6) + self.run_fd_test(keyword, crlwords_ipv4, crlwords_ipv6) def test_l2tpv3oipv6(self): - """ Flow director input set is sessionID for pctyp 38 """ - crlwords_ipv6=range(44,46) - crlwords_ipv4=None + crlwords_ipv6 = range(44, 46) + crlwords_ipv4 = None keyword = 'l2tpv3oipv6' - self.run_fd_test(keyword,crlwords_ipv4,crlwords_ipv6) + self.run_fd_test(keyword, crlwords_ipv4, crlwords_ipv6) def test_l2tpv3oipv6_dst(self): """ Flow director input set is sessionID + DIP for pctype 38 """ - crlwords_ipv4=None - crlwords_ipv6=list(range(21,29))+list(range(44,46)) + crlwords_ipv4 = None + crlwords_ipv6 = list(range(21, 29)) + list(range(44, 46)) keyword = 'l2tpv3oipv6_dst' - self.run_fd_test(keyword,crlwords_ipv4,crlwords_ipv6) + self.run_fd_test(keyword, crlwords_ipv4, crlwords_ipv6) def test_l2tpv3oipv6_src(self): """ Flow director input set is sessionID + SIP for pctype 38 """ - crlwords_ipv4=None - crlwords_ipv6=list(range(13,21))+list(range(44,46)) + crlwords_ipv4 = None + crlwords_ipv6 = list(range(13, 21)) + list(range(44, 46)) keyword = 'l2tpv3oipv6_src' - self.run_fd_test(keyword,crlwords_ipv4,crlwords_ipv6) + self.run_fd_test(keyword, crlwords_ipv4, crlwords_ipv6) def test_l2tpv3oipv6_src_dst(self): """ Flow director input set is sessionID + SIP + DIP for pctype 38 """ - crlwords_ipv4=None - crlwords_ipv6=list(range(13,29))+list(range(44,46)) + crlwords_ipv4 = None + crlwords_ipv6 = list(range(13, 29)) + list(range(44, 46)) keyword = 'l2tpv3oipv6_src_dst' - self.run_fd_test(keyword,crlwords_ipv4,crlwords_ipv6) + self.run_fd_test(keyword, crlwords_ipv4, crlwords_ipv6) def test_l2tpv3_ipv4_ipv6(self): """ Flow director input set is sessionID for pctype 28 and 38 """ - crlwords_ipv4=range(44,46) - crlwords_ipv6=range(44,46) + crlwords_ipv4 = range(44, 46) + crlwords_ipv6 = range(44, 46) keyword = 'l2tpv3_ipv4_ipv6' - self.run_fd_test(keyword,crlwords_ipv4,crlwords_ipv6) + self.run_fd_test(keyword, crlwords_ipv4, crlwords_ipv6) def test_l2tpv3oip_v4src_v6src(self): """ Flow director input set is sessionID + SIP for pctype 28 and 38 """ - crlwords_ipv4=list(range(15,17))+list(range(44,46)) - crlwords_ipv6=list(range(13,21))+list(range(44,46)) + crlwords_ipv4 = list(range(15, 17)) + list(range(44, 46)) + crlwords_ipv6 = list(range(13, 21)) + list(range(44, 46)) keyword = 'l2tpv3oip_v4src_v6src' - self.run_fd_test(keyword,crlwords_ipv4,crlwords_ipv6) + self.run_fd_test(keyword, crlwords_ipv4, crlwords_ipv6) def test_l2tpv3oip_v4dst_v6dst(self): """ Flow director input set is sessionID + DIP for pctype 28 and 38 """ - crlwords_ipv4=list(range(27,29))+list(range(44,46)) - crlwords_ipv6=list(range(21,29))+list(range(44,46)) + crlwords_ipv4 = list(range(27, 29)) + list(range(44, 46)) + crlwords_ipv6 = list(range(21, 29)) + list(range(44, 46)) keyword = 'l2tpv3oip_v4dst_v6dst' - self.run_fd_test(keyword,crlwords_ipv4,crlwords_ipv6) + self.run_fd_test(keyword, crlwords_ipv4, crlwords_ipv6) def test_l2tpv3oip_v4srcdst_v6srcdst(self): """ Flow director input set is sessionID + SIP + DIP for pctype 28 and 38 """ - crlwords_ipv4=list(range(15,17))+list(range(27,29))+list(range(44,46)) - crlwords_ipv6=list(range(13,29))+list(range(44,46)) - keyword = 'l2tpv3oip_v4srcdst_v6srcdst' - self.run_fd_test(keyword,crlwords_ipv4,crlwords_ipv6) + crlwords_ipv4 = list(range(15, 17)) + list(range(27, 29)) + list(range(44, 46)) + crlwords_ipv6 = list(range(13, 29)) + list(range(44, 46)) + keyword = 'l2tpv3oip_v4srcdst_v6srcdst' + self.run_fd_test(keyword, crlwords_ipv4, crlwords_ipv6) def test_l2tpv3oip_v4_v6_udp(self): """ Flow director input set is sessionID for pctype 28 and 38 """ - crlwords_ipv4=range(44,46) - crlwords_ipv6=range(44,46) - keyword = 'l2tpv3oip_v4_v6_udp' - self.run_fd_test(keyword,crlwords_ipv4,crlwords_ipv6) + crlwords_ipv4 = range(44, 46) + crlwords_ipv6 = range(44, 46) + keyword = 'l2tpv3oip_v4_v6_udp' + self.run_fd_test(keyword, crlwords_ipv4, crlwords_ipv6) def test_l2tpv3oip_load_profile(self): """ @@ -446,15 +486,15 @@ class TestDdpL2tpv3(TestCase): Step1: Check if it is already loaded, if loaded delete the same Step2: Load the profile """ - self.dut_testpmd.execute_cmd('port stop 0') + self.dut_testpmd.execute_cmd('port stop all') - out=self.dut_testpmd.execute_cmd('ddp get list 0') + out = self.dut_testpmd.execute_cmd('ddp get list 0') if "L2TPv3oIP with L4 payload" in out: - print "Profile is already loaded!!" - out=self.dut_testpmd.execute_cmd('ddp del 0 /tmp/l2tpv3oip-l4.bak') - out=self.dut_testpmd.execute_cmd('ddp add 0 /tmp/l2tpv3oip-l4.pkg,/tmp/l2tpv3oip-l4.bak') - out=self.dut_testpmd.execute_cmd('ddp get list 0') - self.verify("L2TPv3oIP with L4 payload" in out,"Failed to Load DDP profile ") + print("Profile is already loaded!!") + out = self.dut_testpmd.execute_cmd('ddp del 0 /tmp/l2tpv3oip-l4.bak') + out = self.dut_testpmd.execute_cmd('ddp add 0 /tmp/l2tpv3oip-l4.pkg,/tmp/l2tpv3oip-l4.bak') + out = self.dut_testpmd.execute_cmd('ddp get list 0') + self.verify("L2TPv3oIP with L4 payload" in out, "Failed to Load DDP profile ") def test_l2tpv3oip_delete_profile(self): """ @@ -462,21 +502,19 @@ class TestDdpL2tpv3(TestCase): Step1: Check if profile is loaded, if loaded, delete the same Step2: Add the profile again """ - self.dut_testpmd.execute_cmd('port stop 0') - out=self.dut_testpmd.execute_cmd('ddp get list 0') + self.dut_testpmd.execute_cmd('port stop all') + out = self.dut_testpmd.execute_cmd('ddp get list 0') if "L2TPv3oIP with L4 payload" not in out: - out=self.dut_testpmd.execute_cmd('ddp add 0 /tmp/l2tpv3oip-l4.pkg,/tmp/l2tpv3oip-l4.bak') - out=self.dut_testpmd.execute_cmd('ddp get list 0') - self.verify("L2TPv3oIP with L4 payload" in out,"Error in loading the Profile") - out=self.dut_testpmd.execute_cmd('ddp del 0 /tmp/l2tpv3oip-l4.bak') - print out - out=self.dut_testpmd.execute_cmd('ddp get list 0') - print out - self.verify("Profile number is: 0" in out,"Error in @@deleting the Profile !!") - out=self.dut_testpmd.execute_cmd('ddp add 0 /tmp/l2tpv3oip-l4.pkg,/tmp/l2tpv3oip-l4.bak') - out=self.dut_testpmd.execute_cmd('ddp get list 0') - self.verify("L2TPv3oIP with L4 payload" in out,"Error in loading the Profile") + out = self.dut_testpmd.execute_cmd('ddp add 0 /tmp/l2tpv3oip-l4.pkg,/tmp/l2tpv3oip-l4.bak') + out = self.dut_testpmd.execute_cmd('ddp get list 0') + self.verify("L2TPv3oIP with L4 payload" in out, "Error in loading the Profile") + self.dut_testpmd.execute_cmd('ddp del 0 /tmp/l2tpv3oip-l4.bak') + out = self.dut_testpmd.execute_cmd('ddp get list 0') + self.verify("Profile number is: 0" in out, "Error in @@deleting the Profile !!") + self.dut_testpmd.execute_cmd('ddp add 0 /tmp/l2tpv3oip-l4.pkg,/tmp/l2tpv3oip-l4.bak') + out = self.dut_testpmd.execute_cmd('ddp get list 0') + self.verify("L2TPv3oIP with L4 payload" in out, "Error in loading the Profile") def test_l2tpv3oip_delete_rules(self): """ @@ -486,20 +524,26 @@ class TestDdpL2tpv3(TestCase): Step3: Flush all rules """ queue = random.randint(1, self.PF_QUEUE - 1) - self.dut_testpmd.execute_cmd( 'flow create 0 ingress pattern eth / ipv4 / l2tpv3oip session_id is 1001 / end actions queue index {} / end'.format(queue)) - self.dut_testpmd.execute_cmd( 'flow create 0 ingress pattern eth / ipv4 / l2tpv3oip session_id is 1002 / end actions queue index {} / end'.format(queue)) - self.dut_testpmd.execute_cmd( 'flow create 0 ingress pattern eth / ipv4 / l2tpv3oip session_id is 1003 / end actions queue index {} / end'.format(queue)) - out=self.dut_testpmd.execute_cmd('flow list 0') - verify=out.splitlines() - self.verify(len(verify)== 6,"Flow rules not added") - self.dut_testpmd.execute_cmd( 'flow destroy 0 rule 0') - out=self.dut_testpmd.execute_cmd('flow list 0') - verify=out.splitlines() - self.verify(len(verify)== 5,"Flow rules not destroyed") - self.dut_testpmd.execute_cmd( 'flow flush 0') - out=self.dut_testpmd.execute_cmd('flow list 0') - verify=out.splitlines() - self.verify(len(verify)== 1,"Flow rules not destroyed") + self.dut_testpmd.execute_cmd( + 'flow create 0 ingress pattern eth / ipv4 / l2tpv3oip session_id is 1001 / end actions queue index {} / end'.format( + queue)) + self.dut_testpmd.execute_cmd( + 'flow create 0 ingress pattern eth / ipv4 / l2tpv3oip session_id is 1002 / end actions queue index {} / end'.format( + queue)) + self.dut_testpmd.execute_cmd( + 'flow create 0 ingress pattern eth / ipv4 / l2tpv3oip session_id is 1003 / end actions queue index {} / end'.format( + queue)) + out = self.dut_testpmd.execute_cmd('flow list 0') + verify = out.splitlines() + self.verify(len(verify) == 6, "Flow rules not added") + self.dut_testpmd.execute_cmd('flow destroy 0 rule 0') + out = self.dut_testpmd.execute_cmd('flow list 0') + verify = out.splitlines() + self.verify(len(verify) == 5, "Flow rules not destroyed") + self.dut_testpmd.execute_cmd('flow flush 0') + out = self.dut_testpmd.execute_cmd('flow list 0') + verify = out.splitlines() + self.verify(len(verify) == 1, "Flow rules not destroyed") def tear_down(self): self.dut_testpmd.execute_cmd('stop') @@ -516,4 +560,3 @@ class TestDdpL2tpv3(TestCase): def tear_down_all(self): pass - -- 2.17.1