test suite reviews and discussions
 help / color / mirror / Atom feed
* [dts] [PATCH V1] test/ddp_l2tpv3: Adapt to Python 3 format
@ 2020-04-29  9:13 ChenBo
  2020-04-29  9:31 ` Chen, BoX C
  2020-05-06  3:23 ` Tu, Lijuan
  0 siblings, 2 replies; 3+ messages in thread
From: ChenBo @ 2020-04-29  9:13 UTC (permalink / raw)
  To: dts; +Cc: ChenBo

Adapt to Python 3 format, remove invalid variables

Signed-off-by: ChenBo <box.c.chen@intel.com>
---
 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


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [dts] [PATCH V1] test/ddp_l2tpv3: Adapt to Python 3 format
  2020-04-29  9:13 [dts] [PATCH V1] test/ddp_l2tpv3: Adapt to Python 3 format ChenBo
@ 2020-04-29  9:31 ` Chen, BoX C
  2020-05-06  3:23 ` Tu, Lijuan
  1 sibling, 0 replies; 3+ messages in thread
From: Chen, BoX C @ 2020-04-29  9:31 UTC (permalink / raw)
  To: dts

[-- Attachment #1: Type: text/plain, Size: 44472 bytes --]

Tested-by: Chen, BoX C <box.c.chen@intel.com>



Regards,
Chen Bo

> -----Original Message-----
> From: Chen, BoX C
> Sent: April 29, 2020 17:13
> To: dts@dpdk.org
> Cc: Chen, BoX C <box.c.chen@intel.com>
> Subject: [dts][PATCH V1] test/ddp_l2tpv3: Adapt to Python 3 format
> 
> Adapt to Python 3 format, remove invalid variables
> 
> Signed-off-by: ChenBo <box.c.chen@intel.com>
> ---
>  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


[-- Attachment #2: TestDdpL2tpv3.log --]
[-- Type: application/octet-stream, Size: 616366 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [dts] [PATCH V1] test/ddp_l2tpv3: Adapt to Python 3 format
  2020-04-29  9:13 [dts] [PATCH V1] test/ddp_l2tpv3: Adapt to Python 3 format ChenBo
  2020-04-29  9:31 ` Chen, BoX C
@ 2020-05-06  3:23 ` Tu, Lijuan
  1 sibling, 0 replies; 3+ messages in thread
From: Tu, Lijuan @ 2020-05-06  3:23 UTC (permalink / raw)
  To: Chen, BoX C, dts; +Cc: Chen, BoX C

Applied, thanks

> -----Original Message-----
> From: dts [mailto:dts-bounces@dpdk.org] On Behalf Of ChenBo
> Sent: Wednesday, April 29, 2020 5:13 PM
> To: dts@dpdk.org
> Cc: Chen, BoX C <box.c.chen@intel.com>
> Subject: [dts] [PATCH V1] test/ddp_l2tpv3: Adapt to Python 3 format
> 
> Adapt to Python 3 format, remove invalid variables
> 
> Signed-off-by: ChenBo <box.c.chen@intel.com>
> ---
>  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


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-05-06  3:23 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-29  9:13 [dts] [PATCH V1] test/ddp_l2tpv3: Adapt to Python 3 format ChenBo
2020-04-29  9:31 ` Chen, BoX C
2020-05-06  3:23 ` Tu, Lijuan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).