[V1,1/2] tests/kernelpf_iavf: modify script VLAN filter enable requires a port VLAN is assigned

Message ID 20220601100331.66-1-weiyuanx.li@intel.com (mailing list archive)
State Superseded
Headers
Series [V1,1/2] tests/kernelpf_iavf: modify script VLAN filter enable requires a port VLAN is assigned |

Commit Message

Weiyuan Li June 1, 2022, 10:03 a.m. UTC
  From: Weiyuan Li <weiyuanx.li@intel.com>

1. Modify script VLAN filter enable requires a port VLAN is assigned.
2. Tcpdump timeout, increase the '-nn' to skip the DNS reverse domain name resolution operation.
3. Add failure processing repair sometimes failed to execute command 'ip link set'.

Signed-off-by: Weiyuan Li <weiyuanx.li@intel.com>
---

v2:
-Add comment restart testpmd after remove VLAN from PF devcie according to test plan modification.

 tests/TestSuite_kernelpf_iavf.py | 41 ++++++++++++++++++++++----------
 1 file changed, 29 insertions(+), 12 deletions(-)
  

Patch

diff --git a/tests/TestSuite_kernelpf_iavf.py b/tests/TestSuite_kernelpf_iavf.py
index bb20e687..9391b4b0 100644
--- a/tests/TestSuite_kernelpf_iavf.py
+++ b/tests/TestSuite_kernelpf_iavf.py
@@ -1,5 +1,5 @@ 
 # SPDX-License-Identifier: BSD-3-Clause
-# Copyright(c) 2019 Intel Corporation
+# Copyright(c) 2022 Intel Corporation
 #
 
 """
@@ -206,13 +206,24 @@  class TestKernelpfIavf(TestCase):
         self.vm_testpmd.execute_cmd("stop")
         self.vm_testpmd.execute_cmd("set fwd txonly")
         self.tester.send_expect("rm -f tcpdump.pcap", "#")
-        self.tester.send_expect("tcpdump -i %s 2>tcpdump.out &" % self.tester_intf, "#")
+        self.tester.send_expect(
+            "tcpdump -nn -i %s 2>tcpdump.out &" % self.tester_intf, "#"
+        )
         self.vm_testpmd.execute_cmd("start")
         time.sleep(1)
         self.vm_testpmd.execute_cmd("stop")
         self.tester.send_expect("killall tcpdump", "#")
         time.sleep(1)
-        cap_packet = self.tester.send_expect("cat tcpdump.out", "#", 30)
+        retry_times = 50
+        while retry_times:
+            with open("/root/tcpdump.out", "r") as files:
+                for fl in files:
+                    if "packet" in fl:
+                        break
+            retry_times -= 1
+        cap_packet = self.tester.send_expect(
+            "cat tcpdump.out | grep 'packet'", "# ", 30
+        )
         stats = self.vm_testpmd.get_pmd_stats(0)
         cap_tcp_num = re.findall("(\d+) packets", cap_packet)
         nums = sum(map(int, cap_tcp_num))
@@ -355,9 +366,13 @@  class TestKernelpfIavf(TestCase):
         vf can receive packet with right vlan id, can't receive wrong vlan id packet
         """
         random_vlan = random.randint(1, MAX_VLAN)
-        self.dut.send_expect(
+        out = self.dut.send_expect(
             "ip link set %s vf 0 vlan %s" % (self.host_intf, random_vlan), "# "
         )
+        if "Resource temporarily unavailable" in out:
+            self.dut.send_expect(
+                "ip link set %s vf 0 vlan %s" % (self.host_intf, random_vlan), "# "
+            )
         out = self.dut.send_expect("ip link show %s" % self.host_intf, "# ")
         self.verify("vlan %d" % random_vlan in out, "Failed to add pvid on VF0")
 
@@ -380,14 +395,17 @@  class TestKernelpfIavf(TestCase):
         self.verify(len(receive_pkt) == 1, "tester received wrong vlan packet!!!")
 
         # remove vlan
-        self.vm_testpmd.execute_cmd("stop")
-        self.vm_testpmd.execute_cmd("port stop all")
+        self.vm_testpmd.quit()
         self.dut.send_expect("ip link set %s vf 0 vlan 0" % self.host_intf, "# ")
         out = self.dut.send_expect("ip link show %s" % self.host_intf, "# ")
         self.verify("vlan %d" % random_vlan not in out, "Failed to remove pvid on VF0")
         # send packet without vlan
-        self.vm_testpmd.execute_cmd("port reset 0")
-        self.vm_testpmd.execute_cmd("port start all")
+        self.vm_testpmd.start_testpmd("all")
+        self.vm_testpmd.execute_cmd("set fwd mac")
+        self.vm_testpmd.execute_cmd("set verbose 1")
+        self.vm_testpmd.execute_cmd("vlan set filter on 0")
+        self.vm_testpmd.execute_cmd("vlan set strip on 0")
+        self.vm_testpmd.execute_cmd("rx_vlan add 10 0")
         self.vm_testpmd.execute_cmd("start")
         out = self.send_and_getout(vlan=0, pkt_type="UDP")
         self.verify(self.vf_mac in out, "Not received packet without vlan!!!")
@@ -429,6 +447,7 @@  class TestKernelpfIavf(TestCase):
         self.vm_testpmd.execute_cmd("set verbose 1")
         self.vm_testpmd.execute_cmd("vlan set filter on 0")
         self.vm_testpmd.execute_cmd("vlan set strip on 0")
+        self.vm_testpmd.execute_cmd("rx_vlan add 10 0")
         self.vm_testpmd.execute_cmd("start")
         # send packet without vlan, vf can receive packet
         out = self.send_and_getout(pkt_type="UDP")
@@ -543,6 +562,7 @@  class TestKernelpfIavf(TestCase):
         self.vm_testpmd.execute_cmd("port start all")
         self.vm_testpmd.execute_cmd("set fwd mac")
         self.vm_testpmd.execute_cmd("set verbose 1")
+        self.vm_testpmd.execute_cmd("rx_vlan add 10 0")
         self.vm_testpmd.execute_cmd("start")
 
         # error vlan id
@@ -1050,10 +1070,7 @@  class TestKernelpfIavf(TestCase):
         self.scapy_send_packet(self.vf_mac, self.tester_intf, vlan_flags=True, count=10)
         out = self.vm_dut.get_session_output()
         packets = len(re.findall("received 1 packets", out))
-        if self.kdriver == "i40e" and self.driver_version < "2.13.10":
-            self.verify(packets == 10, "Not receive expected packet")
-        else:
-            self.verify(packets == 0, "Receive expected packet")
+        self.verify(packets == 10, "Receive expected packet")
 
         # send 10 untagged packets, and check 10 untagged packets received
         self.scapy_send_packet(self.vf_mac, self.tester_intf, count=10)