[V2,2/2] tests/ipv4_reassembly: modify script to adapt changes in dpdk

Message ID 20230320180503.3307034-3-songx.jiale@intel.com (mailing list archive)
State Accepted
Headers
Series modify script to adapt 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

Jiale, SongX March 20, 2023, 6:05 p.m. UTC
DPDK increase default value for config parameter RTE_LIBRTE_IP_FRAG_MAX_FRAG from 4 to 8.
Modify the script to adapt to this change.

According to dpdk commit f8e0f8ce90303b("ip_frag: increase default maximum of fragments").

Signed-off-by: Song Jiale <songx.jiale@intel.com>
---
 tests/TestSuite_ipv4_reassembly.py | 40 ++++++++++++++++++++++--------
 1 file changed, 30 insertions(+), 10 deletions(-)

V2:
-modify incorrect parameters.
  

Comments

Peng, Yuan March 21, 2023, 6:10 a.m. UTC | #1
> -----Original Message-----
> From: Song Jiale <songx.jiale@intel.com>
> Sent: Tuesday, March 21, 2023 2:05 AM
> To: dts@dpdk.org
> Cc: Jiale, SongX <songx.jiale@intel.com>
> Subject: [dts] [PATCH V2 2/2] tests/ipv4_reassembly: modify script to adapt
> changes in dpdk
> 
> DPDK increase default value for config parameter
> RTE_LIBRTE_IP_FRAG_MAX_FRAG from 4 to 8.
> Modify the script to adapt to this change.
> 
> According to dpdk commit f8e0f8ce90303b("ip_frag: increase default
> maximum of fragments").
> 
> Signed-off-by: Song Jiale <songx.jiale@intel.com>
> ---

Acked-by: Yuan Peng <yuan.peng@intel.com>
  
Tu, Lijuan March 28, 2023, 1:04 a.m. UTC | #2
On Mon, 20 Mar 2023 18:05:03 +0000, Song Jiale <songx.jiale@intel.com> wrote:
> DPDK increase default value for config parameter RTE_LIBRTE_IP_FRAG_MAX_FRAG from 4 to 8.
> Modify the script to adapt to this change.
> 
> According to dpdk commit f8e0f8ce90303b("ip_frag: increase default maximum of fragments").
> 
> Signed-off-by: Song Jiale <songx.jiale@intel.com>

Reviewed-by: Lijuan Tu <lijuan.tu@intel.com>
Series applied, thanks
  

Patch

diff --git a/tests/TestSuite_ipv4_reassembly.py b/tests/TestSuite_ipv4_reassembly.py
index 58b3fe3e..1e9f7f4e 100644
--- a/tests/TestSuite_ipv4_reassembly.py
+++ b/tests/TestSuite_ipv4_reassembly.py
@@ -10,6 +10,7 @@  Test the IP reassembly feature
 """
 
 import os
+import re
 import time
 
 from scapy.layers.inet import IP, TCP, Ether, fragment
@@ -92,7 +93,7 @@  class TestIpReassembly(TestCase):
     # Test cases.
     #
 
-    def set_max_num_of_fragments(self, num_of_fragments=4):
+    def set_max_num_of_fragments(self, num_of_fragments):
         """
         Changes the maximum number of frames by modifying the example app code.
         """
@@ -104,6 +105,22 @@  class TestIpReassembly(TestCase):
         self.dut.send_expect("rm -rf %s" % self.target, "# ", 5)
         self.dut.build_install_dpdk(self.target)
 
+    def get_dpdk_default_config(self, config_params, config_file=""):
+        if config_file == "":
+            config_file = "config/rte_config.h"
+        out = self.dut.send_expect(
+            "cat %s | grep %s" % (config_file, config_params), "[~|~\]]# "
+        )
+        if len(out) == 0:
+            self.verify(False, "Not Found Parameter %s !!!" % config_params)
+        regex = r"#define\s+%s\s+(\d+)" % config_params
+        m = re.match(regex, out)
+        if m:
+            default_value = m.group(1)
+            return int(default_value)
+        else:
+            self.verify(False, "Not Get Parameter %s Value!!!" % config_params)
+
     def set_tester_iface_mtu(self, iface, mtu=1500):
         """
         Set the interface MTU value.
@@ -393,6 +410,9 @@  class TestIpReassembly(TestCase):
         dut_ports = self.dut.get_ports(self.nic)
         dut_port = dut_ports[0]
         self.destination_mac = self.dut.get_mac_address(dut_port)
+        self.default_max_fragments = self.get_dpdk_default_config(
+            "RTE_LIBRTE_IP_FRAG_MAX_FRAG"
+        )
 
     def test_send_1K_frames_split_in_4_and_1K_maxflows(self):
         """
@@ -442,14 +462,10 @@  class TestIpReassembly(TestCase):
             self.verify_all()
             self.dut.send_expect("^C", "# ")
             time.sleep(5)
-            self.set_max_num_of_fragments(4)
-            time.sleep(5)
 
         except Exception as e:
             self.dut.send_expect("^C", "# ")
             time.sleep(2)
-            self.set_max_num_of_fragments()
-            self.compile_example_app()
             raise e
 
     def test_packets_are_forwarded_after_ttl_timeout(self):
@@ -500,12 +516,14 @@  class TestIpReassembly(TestCase):
 
     def test_send_more_fragments_than_supported(self):
         """
-        Sends 1 frame split in 5 fragments. Since the max number of
-        fragments is set to 4 by default, the packet can't be forwarded back.
+        Sends 1 frame split in into maximum fragments + 1 fragment, the packet can't be forwarded back.
         """
 
         self.test_config = IpReassemblyTestConfig(
-            self, number_of_frames=1, frags_per_frame=5, payload_size=180
+            self,
+            number_of_frames=1,
+            frags_per_frame=self.default_max_fragments + 1,
+            payload_size=(self.default_max_fragments + 1) * 40 - 20,
         )
         self.execute_example_app()
 
@@ -527,7 +545,6 @@  class TestIpReassembly(TestCase):
         self.test_config = IpReassemblyTestConfig(
             self, number_of_frames=1, flowttl="3s"
         )
-        self.compile_example_app()
         self.execute_example_app()
         self.tcpdump_start_sniffing()
 
@@ -563,7 +580,6 @@  class TestIpReassembly(TestCase):
         )
         try:
             self.set_tester_iface_mtu(self.test_config.tester_iface, mtu)
-            self.compile_example_app()
             self.execute_example_app()
             self.send_n_siff_packets()
             self.verify_all()
@@ -602,6 +618,10 @@  class TestIpReassembly(TestCase):
         """
 
         self.dut.send_expect("^C", "# ")
+        self.max_fragments = self.get_dpdk_default_config("RTE_LIBRTE_IP_FRAG_MAX_FRAG")
+        if self.max_fragments != self.default_max_fragments:
+            self.set_max_num_of_fragments(self.default_max_fragments)
+            self.compile_example_app()
 
     def tear_down_all(self):
         """