test suite reviews and discussions
 help / color / mirror / Atom feed
* [dts] [PATCH V5] tests/userspace_ethtool: add method wait port link up and add checklist
@ 2022-06-08  2:34 Jiale Song
  2022-06-15  8:38 ` lijuan.tu
  0 siblings, 1 reply; 3+ messages in thread
From: Jiale Song @ 2022-06-08  2:34 UTC (permalink / raw)
  To: dts; +Cc: Jiale Song

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset=y, Size: 7595 bytes --]

fix 4 issue:
  1.check and wait for the port status of the tester and dut to be up and delete some unnecessary delays.
  2.700 Series not support port disconnect by tools of linux, add 'I40E_10G-10G_BASE_T_X722'
and 'I40E_10G-10G_BASE_T_BC'.
  3.ensure that the dpdk app has exited and rebind the driver.
  4.'IGC-I225_LM' not suport this case, add to checklist.

Signed-off-by: Jiale Song <songx.jiale@intel.com>
---
 conf/test_case_checklist.json        |  7 +++--
 tests/TestSuite_userspace_ethtool.py | 46 ++++++++++++++++++----------
 2 files changed, 34 insertions(+), 19 deletions(-)

diff --git a/conf/test_case_checklist.json b/conf/test_case_checklist.json
index 053841ce..db94c446 100644
--- a/conf/test_case_checklist.json
+++ b/conf/test_case_checklist.json
@@ -2131,13 +2131,14 @@
                 "I40E_10G-SFP_X722",
                 "I40E_10G-10G_BASE_T_X722",
                 "IAVF_10G-X722_VF",
-                "I40E_10G-10G_BASE_T_BC"
+                "I40E_10G-10G_BASE_T_BC",
+                "IGC-I225_LM"
             ],
             "Target": [
                 "ALL"
             ],
-            "Bug ID": "",
-            "Comments": "Know dpdk issue, DPDK-2513"
+            "Bug ID": "DPDK-2513, DPDK-30123",
+            "Comments": "the driver not suport this case"
         }
     ],
     "multicast_mode": [
diff --git a/tests/TestSuite_userspace_ethtool.py b/tests/TestSuite_userspace_ethtool.py
index adbba999..7129301e 100644
--- a/tests/TestSuite_userspace_ethtool.py
+++ b/tests/TestSuite_userspace_ethtool.py
@@ -28,7 +28,7 @@ class TestUserspaceEthtool(TestCase):
         """
         self.ports = self.dut.get_ports()
         self.verify(len(self.ports) >= 2, "No ports found for " + self.nic)
-
+        self.other_700_nic = ["I40E_10G-10G_BASE_T_X722", "I40E_10G-10G_BASE_T_BC"]
         # build sample app
         out = self.dut.build_dpdk_apps("examples/ethtool")
         self.verify("Error" not in out, "compilation error 1")
@@ -263,18 +263,25 @@ class TestUserspaceEthtool(TestCase):
             portinfo["net_dev"].bind_driver(portinfo["ori_driver"])
 
         self.dut.send_expect(self.cmd, "EthApp>", 60)
+        for port in self.ports:
+            tester_port = self.tester.get_local_port(port)
+            intf = self.tester.get_interface(tester_port)
+            self.tester.is_interface_up(intf)
         # ethtool doesn't support port disconnect by tools of linux
         # only detect physical link disconnect status
         verify_pass = True
         verify_msg = ""
-        if not (self.is_eth_series_nic(700) or self.is_eth_series_nic(800)):
+        if not (
+            self.is_eth_series_nic(700)
+            or self.other_700_nic
+            or self.is_eth_series_nic(800)
+        ):
             # check link status dump function
             for port in self.ports:
                 tester_port = self.tester.get_local_port(port)
                 intf = self.tester.get_interface(tester_port)
                 self.tester.send_expect("ip link set dev %s down" % intf, "# ")
-            # wait for link stable
-            time.sleep(5)
+                self.tester.is_interface_down(intf)
 
             out = self.dut.send_expect("link", "EthApp>", 60)
             link_pattern = r"Port (\d+): (.*)"
@@ -299,8 +306,7 @@ class TestUserspaceEthtool(TestCase):
                 tester_port = self.tester.get_local_port(port)
                 intf = self.tester.get_interface(tester_port)
                 self.tester.send_expect("ip link set dev %s up" % intf, "# ")
-            # wait for link stable
-            time.sleep(5)
+                self.tester.is_interface_up(intf)
 
         # check port stats function
         pkt = Packet(pkt_type="UDP")
@@ -447,12 +453,13 @@ class TestUserspaceEthtool(TestCase):
             )
             pkt = Packet(pkt_type="UDP")
             tester_port = self.tester.get_local_port(port)
+            intf = self.tester.get_interface(tester_port)
+            self.tester.is_interface_up(intf)
             self.verify(
                 self.ethapp_check_link_status(index, "Up") == True,
                 "Fail to Open port{}".format(index),
             )
-
-            intf = self.tester.get_interface(tester_port)
+            time.sleep(1)
             pkt.send_pkt(self.tester, tx_port=intf, count=4)
             rx_pkts, tx_pkts = self.strip_portstats(index)
             self.verify(
@@ -512,8 +519,14 @@ class TestUserspaceEthtool(TestCase):
         for index in range(len(self.ports)):
             port = self.ports[index]
             ori_rx_pkts, _ = self.strip_portstats(index)
-            # add sleep time for update link status with Intel® Ethernet 700 Series nic
-            time.sleep(10)
+            # check port link status is up
+            tester_port = self.tester.get_local_port(port)
+            intf = self.tester.get_interface(tester_port)
+            self.tester.is_interface_up(intf)
+            self.verify(
+                self.ethapp_check_link_status(index, "Up") == True,
+                "Fail to Open port{}".format(index),
+            )
             # stop port
             self.dut.send_expect("stop %d" % index, "EthApp>")
             # about ICE_25G-E810C_SFP(8086:1593),there have a kernel driver link status issue
@@ -530,13 +543,12 @@ class TestUserspaceEthtool(TestCase):
                 )
             # check packet not forwarded when port is stop
             pkt = Packet(pkt_type="UDP")
-            tester_port = self.tester.get_local_port(port)
-            intf = self.tester.get_interface(tester_port)
             pkt.send_pkt(self.tester, tx_port=intf, count=4)
             rx_pkts, tx_pkts = self.strip_portstats(index)
             self.verify(rx_pkts == ori_rx_pkts, "Failed to stop port")
             # restart port and check packet can normally forwarded
             self.dut.send_expect("open %d" % index, "EthApp>")
+            self.tester.is_interface_up(intf)
             self.verify(
                 self.ethapp_check_link_status(index, "Up") == True,
                 "Fail to Open port{}".format(index),
@@ -575,7 +587,6 @@ class TestUserspaceEthtool(TestCase):
                 # Intel® Ethernet 800 Series should stop port before set mtu
                 if self.nic in ["ICE_25G-E810C_SFP", "ICE_100G-E810C_QSFP"]:
                     self.dut.send_expect("stop %s" % index, "EthApp>")
-
                 # The mtu threshold is 2022,When it is greater than 2022, the open/stop port is required.
                 if mtu > mtu_threshold:
                     if self.nic in [
@@ -592,7 +603,11 @@ class TestUserspaceEthtool(TestCase):
                 if self.nic in ["ICE_25G-E810C_SFP", "ICE_100G-E810C_QSFP"]:
                     self.dut.send_expect("open %s" % index, "EthApp>")
 
-                time.sleep(5)
+                self.tester.is_interface_up(intf)
+                self.verify(
+                    self.ethapp_check_link_status(index, "Up") == True,
+                    "Fail to Open port{}".format(index),
+                )
                 ori_rx_pkts, _ = self.strip_portstats(index)
                 pkt_size = mtu + HEADER_SIZE["eth"] + offset
                 pkt = Packet(pkt_type="UDP", pkt_len=pkt_size)
@@ -677,9 +692,8 @@ class TestUserspaceEthtool(TestCase):
         """
         Run after each test case.
         """
-        self.dut.bind_interfaces_linux(self.drivername)
         self.dut.kill_all()
-        pass
+        self.dut.bind_interfaces_linux(self.drivername)
 
     def tear_down_all(self):
         """
-- 
2.25.1


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

* [dts] [PATCH V5] tests/userspace_ethtool: add method wait port link up and add checklist
  2022-06-08  2:34 [dts] [PATCH V5] tests/userspace_ethtool: add method wait port link up and add checklist Jiale Song
@ 2022-06-15  8:38 ` lijuan.tu
  0 siblings, 0 replies; 3+ messages in thread
From: lijuan.tu @ 2022-06-15  8:38 UTC (permalink / raw)
  To: dts, Jiale Song; +Cc: Jiale Song

On Wed,  8 Jun 2022 10:34:23 +0800, Jiale Song <songx.jiale@intel.com> wrote:
> fix 4 issue:
>   1.check and wait for the port status of the tester and dut to be up and delete some unnecessary delays.
>   2.700 Series not support port disconnect by tools of linux, add 'I40E_10G-10G_BASE_T_X722'
> and 'I40E_10G-10G_BASE_T_BC'.
>   3.ensure that the dpdk app has exited and rebind the driver.
>   4.'IGC-I225_LM' not suport this case, add to checklist.
> 
> Signed-off-by: Jiale Song <songx.jiale@intel.com>


Applied, thanks

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

* [dts] [PATCH V5] tests/userspace_ethtool: add method wait port link up and add checklist
@ 2022-06-07  3:09 Jiale Song
  0 siblings, 0 replies; 3+ messages in thread
From: Jiale Song @ 2022-06-07  3:09 UTC (permalink / raw)
  To: dts; +Cc: Jiale Song

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset=y, Size: 7592 bytes --]

fix 4 issue:
  1.check and wait for the port status of the tester and dut to be up and delete some unnecessary delays.
  2.700 Series not support port disconnect by tools of linux, add 'I40E_10G-10G_BASE_T_X722'
and 'I40E_10G-10G_BASE_T_BC'.
  3.ensure that the dpdk app has exited and rebind the driver.
  4.igc driver not suport this case, add to checklist.

Signed-off-by: Jiale Song <songx.jiale@intel.com>
---
 conf/test_case_checklist.json        |  7 +++--
 tests/TestSuite_userspace_ethtool.py | 46 ++++++++++++++++++----------
 2 files changed, 34 insertions(+), 19 deletions(-)

diff --git a/conf/test_case_checklist.json b/conf/test_case_checklist.json
index 053841ce..db94c446 100644
--- a/conf/test_case_checklist.json
+++ b/conf/test_case_checklist.json
@@ -2131,13 +2131,14 @@
                 "I40E_10G-SFP_X722",
                 "I40E_10G-10G_BASE_T_X722",
                 "IAVF_10G-X722_VF",
-                "I40E_10G-10G_BASE_T_BC"
+                "I40E_10G-10G_BASE_T_BC",
+                "IGC-I225_LM"
             ],
             "Target": [
                 "ALL"
             ],
-            "Bug ID": "",
-            "Comments": "Know dpdk issue, DPDK-2513"
+            "Bug ID": ""DPDK-2513, DPDK-30123,
+            "Comments": "the driver not suport this case"
         }
     ],
     "multicast_mode": [
diff --git a/tests/TestSuite_userspace_ethtool.py b/tests/TestSuite_userspace_ethtool.py
index adbba999..7129301e 100644
--- a/tests/TestSuite_userspace_ethtool.py
+++ b/tests/TestSuite_userspace_ethtool.py
@@ -28,7 +28,7 @@ class TestUserspaceEthtool(TestCase):
         """
         self.ports = self.dut.get_ports()
         self.verify(len(self.ports) >= 2, "No ports found for " + self.nic)
-
+        self.other_700_nic = ["I40E_10G-10G_BASE_T_X722", "I40E_10G-10G_BASE_T_BC"]
         # build sample app
         out = self.dut.build_dpdk_apps("examples/ethtool")
         self.verify("Error" not in out, "compilation error 1")
@@ -263,18 +263,25 @@ class TestUserspaceEthtool(TestCase):
             portinfo["net_dev"].bind_driver(portinfo["ori_driver"])
 
         self.dut.send_expect(self.cmd, "EthApp>", 60)
+        for port in self.ports:
+            tester_port = self.tester.get_local_port(port)
+            intf = self.tester.get_interface(tester_port)
+            self.tester.is_interface_up(intf)
         # ethtool doesn't support port disconnect by tools of linux
         # only detect physical link disconnect status
         verify_pass = True
         verify_msg = ""
-        if not (self.is_eth_series_nic(700) or self.is_eth_series_nic(800)):
+        if not (
+            self.is_eth_series_nic(700)
+            or self.other_700_nic
+            or self.is_eth_series_nic(800)
+        ):
             # check link status dump function
             for port in self.ports:
                 tester_port = self.tester.get_local_port(port)
                 intf = self.tester.get_interface(tester_port)
                 self.tester.send_expect("ip link set dev %s down" % intf, "# ")
-            # wait for link stable
-            time.sleep(5)
+                self.tester.is_interface_down(intf)
 
             out = self.dut.send_expect("link", "EthApp>", 60)
             link_pattern = r"Port (\d+): (.*)"
@@ -299,8 +306,7 @@ class TestUserspaceEthtool(TestCase):
                 tester_port = self.tester.get_local_port(port)
                 intf = self.tester.get_interface(tester_port)
                 self.tester.send_expect("ip link set dev %s up" % intf, "# ")
-            # wait for link stable
-            time.sleep(5)
+                self.tester.is_interface_up(intf)
 
         # check port stats function
         pkt = Packet(pkt_type="UDP")
@@ -447,12 +453,13 @@ class TestUserspaceEthtool(TestCase):
             )
             pkt = Packet(pkt_type="UDP")
             tester_port = self.tester.get_local_port(port)
+            intf = self.tester.get_interface(tester_port)
+            self.tester.is_interface_up(intf)
             self.verify(
                 self.ethapp_check_link_status(index, "Up") == True,
                 "Fail to Open port{}".format(index),
             )
-
-            intf = self.tester.get_interface(tester_port)
+            time.sleep(1)
             pkt.send_pkt(self.tester, tx_port=intf, count=4)
             rx_pkts, tx_pkts = self.strip_portstats(index)
             self.verify(
@@ -512,8 +519,14 @@ class TestUserspaceEthtool(TestCase):
         for index in range(len(self.ports)):
             port = self.ports[index]
             ori_rx_pkts, _ = self.strip_portstats(index)
-            # add sleep time for update link status with Intel® Ethernet 700 Series nic
-            time.sleep(10)
+            # check port link status is up
+            tester_port = self.tester.get_local_port(port)
+            intf = self.tester.get_interface(tester_port)
+            self.tester.is_interface_up(intf)
+            self.verify(
+                self.ethapp_check_link_status(index, "Up") == True,
+                "Fail to Open port{}".format(index),
+            )
             # stop port
             self.dut.send_expect("stop %d" % index, "EthApp>")
             # about ICE_25G-E810C_SFP(8086:1593),there have a kernel driver link status issue
@@ -530,13 +543,12 @@ class TestUserspaceEthtool(TestCase):
                 )
             # check packet not forwarded when port is stop
             pkt = Packet(pkt_type="UDP")
-            tester_port = self.tester.get_local_port(port)
-            intf = self.tester.get_interface(tester_port)
             pkt.send_pkt(self.tester, tx_port=intf, count=4)
             rx_pkts, tx_pkts = self.strip_portstats(index)
             self.verify(rx_pkts == ori_rx_pkts, "Failed to stop port")
             # restart port and check packet can normally forwarded
             self.dut.send_expect("open %d" % index, "EthApp>")
+            self.tester.is_interface_up(intf)
             self.verify(
                 self.ethapp_check_link_status(index, "Up") == True,
                 "Fail to Open port{}".format(index),
@@ -575,7 +587,6 @@ class TestUserspaceEthtool(TestCase):
                 # Intel® Ethernet 800 Series should stop port before set mtu
                 if self.nic in ["ICE_25G-E810C_SFP", "ICE_100G-E810C_QSFP"]:
                     self.dut.send_expect("stop %s" % index, "EthApp>")
-
                 # The mtu threshold is 2022,When it is greater than 2022, the open/stop port is required.
                 if mtu > mtu_threshold:
                     if self.nic in [
@@ -592,7 +603,11 @@ class TestUserspaceEthtool(TestCase):
                 if self.nic in ["ICE_25G-E810C_SFP", "ICE_100G-E810C_QSFP"]:
                     self.dut.send_expect("open %s" % index, "EthApp>")
 
-                time.sleep(5)
+                self.tester.is_interface_up(intf)
+                self.verify(
+                    self.ethapp_check_link_status(index, "Up") == True,
+                    "Fail to Open port{}".format(index),
+                )
                 ori_rx_pkts, _ = self.strip_portstats(index)
                 pkt_size = mtu + HEADER_SIZE["eth"] + offset
                 pkt = Packet(pkt_type="UDP", pkt_len=pkt_size)
@@ -677,9 +692,8 @@ class TestUserspaceEthtool(TestCase):
         """
         Run after each test case.
         """
-        self.dut.bind_interfaces_linux(self.drivername)
         self.dut.kill_all()
-        pass
+        self.dut.bind_interfaces_linux(self.drivername)
 
     def tear_down_all(self):
         """
-- 
2.25.1


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

end of thread, other threads:[~2022-06-15  8:38 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-08  2:34 [dts] [PATCH V5] tests/userspace_ethtool: add method wait port link up and add checklist Jiale Song
2022-06-15  8:38 ` lijuan.tu
  -- strict thread matches above, loose matches on Subject: below --
2022-06-07  3:09 Jiale Song

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).