[V1,2/2] tests/large_vf: modify script to adapt to changes in dpdk

Message ID 20230208183556.20779-2-hongbox.li@intel.com (mailing list archive)
State Superseded
Headers
Series [V1,1/2] test_plans/large_vf: modify script to adapt to changes in dpdk |

Checks

Context Check Description
ci/Intel-dts-format-test success Testing OK
ci/Intel-dts-pylama-test success Testing OK
ci/Intel-dts-doc-test success Testing OK
ci/Intel-dts-suite-test success Testing OK

Commit Message

Li, HongboX Feb. 8, 2023, 6:35 p.m. UTC
  1.after dpdk is modified, if all ports fail to start, dpdk still allows testpmd to enter the command line, instead of unconditionally terminating testpmd.
According to dpdk commit 7e40372522c("app/testpmd: fix interactive mode with no ports").

2.after driver is modified, the RX rings available decreased(now from CVL 4.2 default number of queues are created according to the single NUMA CPU cores), so modify script to adapt.
According to DCR=3871("Linux CVL - change driver defaults for number of queues").


Signed-off-by: Hongbo Li <hongbox.li@intel.com>
---
 tests/TestSuite_large_vf.py | 23 +++++++++++++++--------
 1 file changed, 15 insertions(+), 8 deletions(-)
  

Patch

diff --git a/tests/TestSuite_large_vf.py b/tests/TestSuite_large_vf.py
index 4e2ff1d6..fb03145e 100644
--- a/tests/TestSuite_large_vf.py
+++ b/tests/TestSuite_large_vf.py
@@ -110,8 +110,7 @@  different_queues_switch = {
 
 pf_large_vf_fdir_coexist = {
     "name": "test_pf_large_vf_fdir_coexist",
-    "param": [21, 63],
-    "check_param": (54, 63),
+    "param": [21],
     "count": 1,
 }
 
@@ -124,7 +123,7 @@  exceed_256_queues = {
 more_than_3_vfs_256_queues = {
     "name": "test_more_than_3_vfs_256_queues",
     "param": "--txq=256 --rxq=256",
-    "check_param": "Cause: Start ports failed",
+    "check_param": "Start ports failed",
 }
 
 max_vfs_256_queues_3 = [
@@ -296,6 +295,7 @@  class TestLargeVf(TestCase):
 
     def rte_flow_process(self, vectors):
         test_results = {}
+        self.rule_num = []
         for tv in vectors:
             try:
                 subcase_name = tv["name"]
@@ -322,14 +322,14 @@  class TestLargeVf(TestCase):
                         self.pmdout_list[0],
                         self.pf0_intf,
                         tv["param"][0],
-                        tv["param"][1],
+                        self.max_ring_num - 1,
                     )
                     self.send_pkts_pf_check(
                         self.pmdout_list[0],
                         self.pf0_intf,
                         self.pf0_mac,
                         tv["param"][0],
-                        tv["check_param"],
+                        self.rule_num,
                         tv["count"],
                     )
                     self.create_fdir_rule(vectors[0]["rule"])
@@ -373,11 +373,14 @@  class TestLargeVf(TestCase):
                                 + "-- -i "
                                 + tv["param"]
                             )
-                            out = self.pmd_output.execute_cmd(cmd, "#")
+                            out = self.pmd_output.execute_cmd(
+                                cmd, "testpmd> ", timeout=30
+                            )
                             self.verify(
                                 tv["check_param"] in out,
                                 "fail: testpmd start successfully",
                             )
+                            self.pmd_output.quit()
                             self.pmdout_list[0].execute_cmd("quit", "# ")
                             break
                         else:
@@ -399,11 +402,12 @@  class TestLargeVf(TestCase):
                                     + "-- -i "
                                     + tv["param"]
                                 )
-                                out = self.pmd_output.execute_cmd(cmd, "#")
+                                out = self.pmd_output.execute_cmd(cmd, "testpmd> ")
                                 self.verify(
                                     tv["check_param"] in out,
                                     "fail: testpmd start successfully",
                                 )
+                                self.pmd_output.quit()
                                 # quit all testpmd
                                 self.pmdout_list[0].execute_cmd("quit", "# ")
                                 self.pmdout_list[1].execute_cmd("quit", "# ")
@@ -515,6 +519,7 @@  class TestLargeVf(TestCase):
                 pf_intf, ip, action
             )
             pmdout.execute_cmd(cmd, "#")
+            self.rule_num.append(action)
             ip += 1
             action -= 1
         self.validation_pf_rule(pmdout, pf_intf, 10)
@@ -534,7 +539,7 @@  class TestLargeVf(TestCase):
             ip += 1
         time.sleep(1)
         out = pmdout.execute_cmd("ethtool -S %s" % pf_intf, "# ")
-        for queue in range(check_param[0], check_param[1] + 1):
+        for queue in check_param:
             packet_str = "rx_queue_%d_packets: (\d+)" % queue
             packet = re.search(packet_str, out).group(1)
             self.verify(
@@ -544,8 +549,10 @@  class TestLargeVf(TestCase):
 
     def destroy_pf_rule(self, pmdout, pf_intf):
         rule_str = "Filter:.*?(\d+)"
+        max_ring_str = "(\d+) RX rings available"
         out = pmdout.execute_cmd("ethtool -n %s" % pf_intf, "#")
         rule_list = re.findall(rule_str, out)
+        self.max_ring_num = int(re.search(max_ring_str, out).group(1))
         if rule_list:
             for rule in rule_list:
                 cmd = "ethtool -N {} delete {}".format(pf_intf, rule)