Tested-by: Chen, BoX C Regards, Chen Bo > -----Original Message----- > From: Chen, BoX C > Sent: April 29, 2020 17:13 > To: dts@dpdk.org > Cc: Chen, BoX C > Subject: [dts][PATCH V1] test/ddp_l2tpv3: Adapt to Python 3 format > > 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\\x > e9')") > @@ -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\\x0 > 0\\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=1 > 15)/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=1 > 15)/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\",n > h=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\",n > h=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=11 > + 5)/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\\x > e9')") > > pkt.append("Ether()/IP(src=\"1.3.5.7\",proto=115)/Raw('\\x00\\x00\\x03\\x > a9')") > > 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('\\x0 > 0\\x00\\x03\\xf9')") > > pkt.append("Ether()/IP(src=\"99.8.7.6\",dst=\"4.5.6.7\",proto=115)/Raw('\\x > 00\\x00\\x03\\xe9')") > > pkt.append("Ether()/IP(src=\"9.8.7.6\",dst=\"44.5.6.7\",proto=115)/Raw('\\x > 00\\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=1 > 15)/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=1 > 15)/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\",n > h=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\",n > h=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=11 > + 5)/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\\x > e9')") > > pkt.append("Ether()/IP(dst=\"9.7.5.3\",proto=115)/Raw('\\x00\\x00\\x03\\x > b9')") > @@ -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