test suite reviews and discussions
 help / color / mirror / Atom feed
* [dts][PATCH V2 1/2] test_plans/telemetry:add 22.07 new feature
@ 2022-08-04 16:58 Zhimin Huang
  2022-08-04 16:58 ` [dts][PATCH V2 2/2] tests/telemetry:add " Zhimin Huang
  2022-08-12  6:22 ` [dts][PATCH V2 1/2] test_plans/telemetry:add " Peng, Yuan
  0 siblings, 2 replies; 5+ messages in thread
From: Zhimin Huang @ 2022-08-04 16:58 UTC (permalink / raw)
  To: dts; +Cc: Zhimin Huang

add 22.07 new feature, support get laser power value in telemetry client.

Signed-off-by: Zhimin Huang <zhiminx.huang@intel.com>
---
 test_plans/telemetry_test_plan.rst | 70 +++++++++++++++++++++++++++++-
 1 file changed, 69 insertions(+), 1 deletion(-)

diff --git a/test_plans/telemetry_test_plan.rst b/test_plans/telemetry_test_plan.rst
index 16568cd3..4034a541 100644
--- a/test_plans/telemetry_test_plan.rst
+++ b/test_plans/telemetry_test_plan.rst
@@ -200,4 +200,72 @@ Test case:  Stats of 4 ports for testpmd and telemetry with different  type nic
 	a.	Ensure # of ports stats being returned == # of ports
 	b.	Ensure packet counts (eg rx_good_packets) is 0
 	c.   Ensure extended NIC stats are shown (depends on PMD used for testing, refer to ixgbe/i40e tests for PMD xstats)
-	d.	Ensure extended NIC stats are 0 (eg: rx_q0_packets == 0)
\ No newline at end of file
+	d.	Ensure extended NIC stats are 0 (eg: rx_q0_packets == 0)
+
+Test case: read nic Laser Power via dpdk
+========================================
+
+1.Bind ports to dpdk::
+
+      ./usertools/dpdk-devbind.py --bind=vfio-pci 18:00.0 18.00.1 88:00.0 88:00.1
+
+2.Launch the dpdk testpmd with teltmetry::
+
+      ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd --telemetry  -- -i
+
+3.Launch the telemetry client::
+
+      python ./usertools/dpdk-telemetry.py
+
+4.Excute command in telemtry client::
+
+      --> /ethdev/module_eeprom,<port number>
+
+5.check the testpmd and telemetry show info same as 'ethtool -m'::
+
+      ethtool -m ens25f1 | grep 'Laser output power'
+      Laser output power                        : 0.6703 mW / -1.74 dBm
+
+Test case: check Laser Power in different optical modules
+=========================================================
+
+1.set port 0 and port 1 with diffent optical modules
+
+2.Launch the dpdk testpmd with teltmetry::
+
+      ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd --telemetry  -- -i
+
+3.Launch the telemetry client::
+
+      python ./usertools/dpdk-telemetry.py
+
+4.Excute command in telemtry client::
+
+      --> /ethdev/module_eeprom,0
+      --> /ethdev/module_eeprom,1
+
+5.check port 0 and port 1 have different Laser Power
+
+Test case: check Laser Power in same optical modules
+====================================================
+
+1.set port 0 and port 1 with same optical modules
+
+2.Launch the dpdk testpmd with teltmetry::
+
+      ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd --telemetry  -- -i
+
+3.Launch the telemetry client::
+
+      python ./usertools/dpdk-telemetry.py
+
+4.Excute command in telemtry client::
+
+      --> /ethdev/module_eeprom,0
+      --> /ethdev/module_eeprom,1
+
+5.check port 0 and port 1 have same Laser Power
+
+.. note::
+
+   the laser power will change slightly with the voltage and temperature
-- 
2.17.1


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

* [dts][PATCH V2 2/2] tests/telemetry:add 22.07 new feature
  2022-08-04 16:58 [dts][PATCH V2 1/2] test_plans/telemetry:add 22.07 new feature Zhimin Huang
@ 2022-08-04 16:58 ` Zhimin Huang
  2022-08-08  1:21   ` Jiale, SongX
  2022-09-20 11:10   ` Tu, Lijuan
  2022-08-12  6:22 ` [dts][PATCH V2 1/2] test_plans/telemetry:add " Peng, Yuan
  1 sibling, 2 replies; 5+ messages in thread
From: Zhimin Huang @ 2022-08-04 16:58 UTC (permalink / raw)
  To: dts; +Cc: Zhimin Huang

add 22.07 new feature, support get laser power value in telemetry client.

Signed-off-by: Zhimin Huang <zhiminx.huang@intel.com>
---
 tests/TestSuite_telemetry.py | 184 ++++++++++++++++++++++++++++++++++-
 1 file changed, 183 insertions(+), 1 deletion(-)

diff --git a/tests/TestSuite_telemetry.py b/tests/TestSuite_telemetry.py
index 97c1c748..1dda5502 100644
--- a/tests/TestSuite_telemetry.py
+++ b/tests/TestSuite_telemetry.py
@@ -539,6 +539,127 @@ class TestTelemetry(TestCase):
             self.close_telemetry_server()
             raise Exception(e)
 
+    def start_telemetry_server_and_get_module_eeprom(self, port_id):
+        try:
+            self.change_flag = True
+            self.dut.bind_interfaces_linux("vfio-pci")
+            out = self.start_telemetry_server()
+            self.tester.is_interface_up(self.tester_iface0)
+            p = re.search("socket /var/run/dpdk/(.+?)/", out)
+            self.start_dpdk_telemetry(p.group(1))
+            module_eeprom_output = self.dut_telemetry.send_expect(
+                "/ethdev/module_eeprom,{}".format(port_id), "--> "
+            )
+            self.close_telemetry_server()
+            return module_eeprom_output
+        except Exception as e:
+            self.close_telemetry_server()
+            raise Exception(e)
+
+    def start_dpdk_telemetry(self, *args):
+        self.dut_telemetry = self.dut.new_session()
+        dpdk_tool = os.path.join(self.target_dir, "usertools/dpdk-telemetry.py")
+        self.dut_telemetry.send_expect(
+            "python3 " + dpdk_tool + " -f {}".format(args[0]), "--> ", 5
+        )
+
+    def verify_nic_laser_power_via_dpdk(self, laser_powers, *ports):
+        if isinstance(laser_powers, str):
+            laser_powers = [laser_powers]
+        for laser_power, port in zip(laser_powers, ports):
+            laser_power_via_dpdk = self.get_nic_laser_power_via_dpdk(port)
+            dpdk_float_values = self.get_float_laser_power_values(laser_power_via_dpdk)
+            eth_float_values = self.get_float_laser_power_values(laser_power)
+            test_flag = [
+                abs(v_d - v_e) for v_d, v_e in zip(dpdk_float_values, eth_float_values)
+            ]
+            self.logger.info(
+                "dpdk:{} eth:{}".format(dpdk_float_values, eth_float_values)
+            )
+            self.verify(
+                [flag <= 0.1 for flag in test_flag],
+                "dpdk:{} eth:{},get the incorrect laser power values".format(
+                    dpdk_float_values, eth_float_values
+                ),
+            )
+
+    def verify_laser_Power_in_different_optical_modules(self, laser_powers, *ports):
+        laser_power_via_dpdk = self.get_nic_laser_power_via_dpdk(ports[-1])
+        dpdk_float_values = self.get_float_laser_power_values(laser_power_via_dpdk)
+        eth_float_values = self.get_float_laser_power_values(laser_powers[0])
+        self.logger.info(
+            "dpdk port 1: {}   eth port 0: {}".format(
+                dpdk_float_values, eth_float_values
+            )
+        )
+        test_flag = [
+            abs(v_d - v_e) for v_d, v_e in zip(dpdk_float_values, eth_float_values)
+        ]
+        self.verify(
+            [flag > 0.1 for flag in test_flag],
+            "different optical modules should have different laser power values",
+        )
+
+    def verify_laser_Power_in_same_optical_modules(self, laser_powers, *ports):
+        laser_power_via_dpdk = self.get_nic_laser_power_via_dpdk(ports[-1])
+        dpdk_float_values = self.get_float_laser_power_values(laser_power_via_dpdk)
+        eth_float_values = self.get_float_laser_power_values(laser_powers[0])
+        self.logger.info(
+            "dpdk port 1: {}   eth port 0: {}".format(
+                dpdk_float_values, eth_float_values
+            )
+        )
+        test_flag = [
+            abs(v_d - v_e) for v_d, v_e in zip(dpdk_float_values, eth_float_values)
+        ]
+        self.verify(
+            [flag <= 0.1 for flag in test_flag],
+            "same optical modules should have same laser power values",
+        )
+
+    def get_float_laser_power_values(self, output):
+        p = re.findall(r"(\d+\.\d+.)", output)
+        float_list = list(map(float, p))
+        return float_list
+
+    def get_nic_laser_power_via_ethtool(self, intf):
+        output = self.d_a_console(
+            "ethtool -m {} | grep 'Laser output power'".format(intf)
+        )
+        rex_output = re.search(r"Laser output power\s+:.*", output)
+        if not rex_output:
+            return False
+        return rex_output.group()
+
+    def get_nic_laser_power_via_dpdk(self, port):
+        out = self.start_telemetry_server_and_get_module_eeprom(port)
+        laser_power_via_dpdk = self.get_nic_laser_power_via_dpdk_rex(out)
+        return laser_power_via_dpdk
+
+    def get_nic_laser_power_via_dpdk_rex(self, output):
+        rex_output = re.search(r'"Laser output power":.*?dBm"', output)
+        if not rex_output:
+            return False
+        return rex_output.group()
+
+    def check_interface_link_up(self, intf):
+        try:
+            link = self.dut.is_interface_up(intf)
+            self.verify(link, "link is down")
+        except Exception as e:
+            self.d_a_console("ifconfig {} up".format(intf))
+        finally:
+            time.sleep(3)
+
+    def skip_unsupported_get_laser_power(self, *intfs):
+        laser_power_list = []
+        for intf in intfs:
+            output = self.get_nic_laser_power_via_ethtool(intf)
+            if not output:
+                return False
+            laser_power_list.append(output)
+        return laser_power_list
+
     #
     # Test cases.
     #
@@ -550,6 +671,11 @@ class TestTelemetry(TestCase):
         # get ports information
         self.dut_ports = self.dut.get_ports()
         self.verify(len(self.dut_ports) >= 2, "Insufficient ports")
+        self.pf0_intf = self.dut.ports_info[self.dut_ports[0]]["intf"]
+        self.pf1_intf = self.dut.ports_info[self.dut_ports[1]]["intf"]
+        self.tester_iface0 = self.tester.get_interface(
+            self.tester.get_local_port(self.dut_ports[0])
+        )
         self.init_test_binary_files()
         self.nic_grp = self.get_ports_by_nic_type()
         self.used_ports = []
@@ -559,7 +685,7 @@ class TestTelemetry(TestCase):
         """
         Run before each test case.
         """
-        pass
+        self.dut.bind_interfaces_linux("vfio-pci")
 
     def tear_down(self):
         """
@@ -585,3 +711,59 @@ class TestTelemetry(TestCase):
         Stats of 2 ports for testpmd and telemetry with same type nic
         """
         self.verify_same_nic_with_2ports()
+
+    def test_read_nic_laser_power_via_dpdk(self):
+        """
+        read laser power, check testpmd show correct laser power
+        """
+        self.dut.bind_interfaces_linux(self.kdriver)
+        self.check_interface_link_up(self.pf0_intf)
+        laser_power_list = self.skip_unsupported_get_laser_power(self.pf0_intf)
+        self.skip_case(laser_power_list, "The test need Optical module to support")
+        self.verify_nic_laser_power_via_dpdk(laser_power_list, self.dut_ports[0])
+
+    def test_check_laser_power_in_different_optical_modules(self):
+        """
+        set different optical modules in two ports and check the testpmd show different laser power
+        """
+        self.dut.bind_interfaces_linux(self.kdriver)
+        [self.check_interface_link_up(i) for i in [self.pf0_intf, self.pf1_intf]]
+        laser_power_list = self.skip_unsupported_get_laser_power(
+            self.pf0_intf, self.pf1_intf
+        )
+        self.skip_case(laser_power_list, "The test need Optical module to support")
+        float_list = [
+            self.get_float_laser_power_values(laser_power)
+            for laser_power in laser_power_list
+        ]
+        self.skip_case(
+            abs(float_list[0][0] - float_list[1][0]) > 0.1
+            and abs(float_list[0][1] - float_list[1][1]) > 0.1,
+            "The test need different optical module in two ports",
+        )
+        self.verify_laser_Power_in_different_optical_modules(
+            laser_power_list, self.dut_ports[0], self.dut_ports[1]
+        )
+
+    def test_check_laser_power_in_same_optical_modules(self):
+        """
+        set same optical modules in two ports and check the testpmd show same laser power
+        """
+        self.dut.bind_interfaces_linux(self.kdriver)
+        [self.check_interface_link_up(i) for i in [self.pf0_intf, self.pf1_intf]]
+        laser_power_list = self.skip_unsupported_get_laser_power(
+            self.pf0_intf, self.pf1_intf
+        )
+        self.skip_case(laser_power_list, "The test need Optical module to support")
+        float_list = [
+            self.get_float_laser_power_values(laser_power)
+            for laser_power in laser_power_list
+        ]
+        self.skip_case(
+            abs(float_list[0][0] - float_list[1][0]) <= 0.1
+            and abs(float_list[0][1] - float_list[1][1]) <= 0.1,
+            "The test need same optical module in two ports",
+        )
+        self.verify_laser_Power_in_same_optical_modules(
+            laser_power_list, self.dut_ports[0], self.dut_ports[1]
+        )
-- 
2.17.1


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

* RE: [dts][PATCH V2 2/2] tests/telemetry:add 22.07 new feature
  2022-08-04 16:58 ` [dts][PATCH V2 2/2] tests/telemetry:add " Zhimin Huang
@ 2022-08-08  1:21   ` Jiale, SongX
  2022-09-20 11:10   ` Tu, Lijuan
  1 sibling, 0 replies; 5+ messages in thread
From: Jiale, SongX @ 2022-08-08  1:21 UTC (permalink / raw)
  To: Huang, ZhiminX, dts; +Cc: Huang, ZhiminX

> -----Original Message-----
> From: Zhimin Huang <zhiminx.huang@intel.com>
> Sent: Friday, August 5, 2022 12:59 AM
> To: dts@dpdk.org
> Cc: Huang, ZhiminX <zhiminx.huang@intel.com>
> Subject: [dts][PATCH V2 2/2] tests/telemetry:add 22.07 new feature
> 
> add 22.07 new feature, support get laser power value in telemetry client.
> 
> Signed-off-by: Zhimin Huang <zhiminx.huang@intel.com>
> ---
Tested-by: Jiale Song < songx.jiale@intel.com>

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

* RE: [dts][PATCH V2 1/2] test_plans/telemetry:add 22.07 new feature
  2022-08-04 16:58 [dts][PATCH V2 1/2] test_plans/telemetry:add 22.07 new feature Zhimin Huang
  2022-08-04 16:58 ` [dts][PATCH V2 2/2] tests/telemetry:add " Zhimin Huang
@ 2022-08-12  6:22 ` Peng, Yuan
  1 sibling, 0 replies; 5+ messages in thread
From: Peng, Yuan @ 2022-08-12  6:22 UTC (permalink / raw)
  To: Huang, ZhiminX, dts; +Cc: Huang, ZhiminX

Acked-by: Peng, Yuan <yuan.peng@intel.com>

-----Original Message-----
From: Zhimin Huang <zhiminx.huang@intel.com> 
Sent: Friday, August 5, 2022 12:59 AM
To: dts@dpdk.org
Cc: Huang, ZhiminX <zhiminx.huang@intel.com>
Subject: [dts][PATCH V2 1/2] test_plans/telemetry:add 22.07 new feature

add 22.07 new feature, support get laser power value in telemetry client.

Signed-off-by: Zhimin Huang <zhiminx.huang@intel.com>
---

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

* RE: [dts][PATCH V2 2/2] tests/telemetry:add 22.07 new feature
  2022-08-04 16:58 ` [dts][PATCH V2 2/2] tests/telemetry:add " Zhimin Huang
  2022-08-08  1:21   ` Jiale, SongX
@ 2022-09-20 11:10   ` Tu, Lijuan
  1 sibling, 0 replies; 5+ messages in thread
From: Tu, Lijuan @ 2022-09-20 11:10 UTC (permalink / raw)
  To: Huang, ZhiminX, dts; +Cc: Huang, ZhiminX



> -----Original Message-----
> From: Zhimin Huang <zhiminx.huang@intel.com>
> Sent: Friday, August 5, 2022 12:59 AM
> To: dts@dpdk.org
> Cc: Huang, ZhiminX <zhiminx.huang@intel.com>
> Subject: [dts][PATCH V2 2/2] tests/telemetry:add 22.07 new feature

Please revise your subject. 22.07 is not the key message to get what patch do.
> 
> add 22.07 new feature, support get laser power value in telemetry client.
> 
> Signed-off-by: Zhimin Huang <zhiminx.huang@intel.com>
> ---
>  tests/TestSuite_telemetry.py | 184 ++++++++++++++++++++++++++++++++++-
>  1 file changed, 183 insertions(+), 1 deletion(-)
> 
> diff --git a/tests/TestSuite_telemetry.py b/tests/TestSuite_telemetry.py index
> 97c1c748..1dda5502 100644
> --- a/tests/TestSuite_telemetry.py
> +++ b/tests/TestSuite_telemetry.py
> @@ -539,6 +539,127 @@ class TestTelemetry(TestCase):
>              self.close_telemetry_server()
>              raise Exception(e)
> 
> +    def start_telemetry_server_and_get_module_eeprom(self, port_id):
> +        try:
> +            self.change_flag = True
> +            self.dut.bind_interfaces_linux("vfio-pci")

It's not a good idea to use hardcode, please use self. drivername instead.

> +            out = self.start_telemetry_server()
> +            self.tester.is_interface_up(self.tester_iface0)
> +            p = re.search("socket /var/run/dpdk/(.+?)/", out)
> +            self.start_dpdk_telemetry(p.group(1))
> +            module_eeprom_output = self.dut_telemetry.send_expect(
> +                "/ethdev/module_eeprom,{}".format(port_id), "--> "
> +            )
> +            self.close_telemetry_server()
> +            return module_eeprom_output
> +        except Exception as e:
> +            self.close_telemetry_server()
> +            raise Exception(e)
> +
> +    def start_dpdk_telemetry(self, *args):
> +        self.dut_telemetry = self.dut.new_session()
> +        dpdk_tool = os.path.join(self.target_dir, "usertools/dpdk-telemetry.py")
> +        self.dut_telemetry.send_expect(
> +            "python3 " + dpdk_tool + " -f {}".format(args[0]), "--> ", 5
> +        )
> +
> +    def verify_nic_laser_power_via_dpdk(self, laser_powers, *ports):
> +        if isinstance(laser_powers, str):
> +            laser_powers = [laser_powers]
> +        for laser_power, port in zip(laser_powers, ports):
> +            laser_power_via_dpdk = self.get_nic_laser_power_via_dpdk(port)
> +            dpdk_float_values =
> self.get_float_laser_power_values(laser_power_via_dpdk)
> +            eth_float_values = self.get_float_laser_power_values(laser_power)
> +            test_flag = [
> +                abs(v_d - v_e) for v_d, v_e in zip(dpdk_float_values, eth_float_values)
> +            ]
> +            self.logger.info(
> +                "dpdk:{} eth:{}".format(dpdk_float_values, eth_float_values)
> +            )
> +            self.verify(
> +                [flag <= 0.1 for flag in test_flag],
> +                "dpdk:{} eth:{},get the incorrect laser power values".format(
> +                    dpdk_float_values, eth_float_values
> +                ),
> +            )
> +
> +    def verify_laser_Power_in_different_optical_modules(self, laser_powers,
> *ports):
> +        laser_power_via_dpdk = self.get_nic_laser_power_via_dpdk(ports[-1])
> +        dpdk_float_values =
> self.get_float_laser_power_values(laser_power_via_dpdk)
> +        eth_float_values = self.get_float_laser_power_values(laser_powers[0])
> +        self.logger.info(
> +            "dpdk port 1: {}   eth port 0: {}".format(
> +                dpdk_float_values, eth_float_values
> +            )
> +        )
> +        test_flag = [
> +            abs(v_d - v_e) for v_d, v_e in zip(dpdk_float_values, eth_float_values)
> +        ]
> +        self.verify(
> +            [flag > 0.1 for flag in test_flag],
> +            "different optical modules should have different laser power values",
> +        )
> +
> +    def verify_laser_Power_in_same_optical_modules(self, laser_powers,
> *ports):
> +        laser_power_via_dpdk = self.get_nic_laser_power_via_dpdk(ports[-1])
> +        dpdk_float_values =
> self.get_float_laser_power_values(laser_power_via_dpdk)
> +        eth_float_values = self.get_float_laser_power_values(laser_powers[0])
> +        self.logger.info(
> +            "dpdk port 1: {}   eth port 0: {}".format(
> +                dpdk_float_values, eth_float_values
> +            )
> +        )
> +        test_flag = [
> +            abs(v_d - v_e) for v_d, v_e in zip(dpdk_float_values, eth_float_values)
> +        ]
> +        self.verify(
> +            [flag <= 0.1 for flag in test_flag],
> +            "same optical modules should have same laser power values",
> +        )
> +
> +    def get_float_laser_power_values(self, output):
> +        p = re.findall(r"(\d+\.\d+.)", output)
> +        float_list = list(map(float, p))
> +        return float_list
> +
> +    def get_nic_laser_power_via_ethtool(self, intf):
> +        output = self.d_a_console(
> +            "ethtool -m {} | grep 'Laser output power'".format(intf)
> +        )
> +        rex_output = re.search(r"Laser output power\s+:.*", output)
> +        if not rex_output:
> +            return False
> +        return rex_output.group()

Mixed use with bool and string. And the value will finally goes to:
	+    def get_float_laser_power_values(self, output):
	+        p = re.findall(r"(\d+\.\d+.)", output)
	+        float_list = list(map(float, p))
	+        return float_list
If it is False, exception will happen.

> +
> +    def get_nic_laser_power_via_dpdk(self, port):
> +        out = self.start_telemetry_server_and_get_module_eeprom(port)
> +        laser_power_via_dpdk = self.get_nic_laser_power_via_dpdk_rex(out)
> +        return laser_power_via_dpdk
> +
> +    def get_nic_laser_power_via_dpdk_rex(self, output):
> +        rex_output = re.search(r'"Laser output power":.*?dBm"', output)
> +        if not rex_output:
> +            return False
> +        return rex_output.group()
> +
> +    def check_interface_link_up(self, intf):
> +        try:
> +            link = self.dut.is_interface_up(intf)
> +            self.verify(link, "link is down")
> +        except Exception as e:
> +            self.d_a_console("ifconfig {} up".format(intf))
> +        finally:
> +            time.sleep(3)
> +
> +    def skip_unsupported_get_laser_power(self, *intfs):
> +        laser_power_list = []
> +        for intf in intfs:
> +            output = self.get_nic_laser_power_via_ethtool(intf)
> +            if not output:
> +                return False
> +            laser_power_list.append(output)
> +        return laser_power_list
> +
>      #
>      # Test cases.
>      #
> @@ -550,6 +671,11 @@ class TestTelemetry(TestCase):
>          # get ports information
>          self.dut_ports = self.dut.get_ports()
>          self.verify(len(self.dut_ports) >= 2, "Insufficient ports")
> +        self.pf0_intf = self.dut.ports_info[self.dut_ports[0]]["intf"]
> +        self.pf1_intf = self.dut.ports_info[self.dut_ports[1]]["intf"]
> +        self.tester_iface0 = self.tester.get_interface(
> +            self.tester.get_local_port(self.dut_ports[0])
> +        )
>          self.init_test_binary_files()
>          self.nic_grp = self.get_ports_by_nic_type()
>          self.used_ports = []
> @@ -559,7 +685,7 @@ class TestTelemetry(TestCase):
>          """
>          Run before each test case.
>          """
> -        pass
> +        self.dut.bind_interfaces_linux("vfio-pci")

Hardcode with above.

> 
>      def tear_down(self):
>          """
> @@ -585,3 +711,59 @@ class TestTelemetry(TestCase):
>          Stats of 2 ports for testpmd and telemetry with same type nic
>          """
>          self.verify_same_nic_with_2ports()
> +
> +    def test_read_nic_laser_power_via_dpdk(self):
> +        """
> +        read laser power, check testpmd show correct laser power
> +        """
> +        self.dut.bind_interfaces_linux(self.kdriver)

If skip case, the interface bound to kdriver, please restore to self.drivername, else impact other suites.

> +        self.check_interface_link_up(self.pf0_intf)
> +        laser_power_list = self.skip_unsupported_get_laser_power(self.pf0_intf)
> +        self.skip_case(laser_power_list, "The test need Optical module to support")
> +        self.verify_nic_laser_power_via_dpdk(laser_power_list,
> + self.dut_ports[0])
> +
> +    def test_check_laser_power_in_different_optical_modules(self):
> +        """
> +        set different optical modules in two ports and check the testpmd show
> different laser power
> +        """
> +        self.dut.bind_interfaces_linux(self.kdriver)
> +        [self.check_interface_link_up(i) for i in [self.pf0_intf, self.pf1_intf]]
> +        laser_power_list = self.skip_unsupported_get_laser_power(
> +            self.pf0_intf, self.pf1_intf
> +        )
> +        self.skip_case(laser_power_list, "The test need Optical module to support")
> +        float_list = [
> +            self.get_float_laser_power_values(laser_power)
> +            for laser_power in laser_power_list
> +        ]
> +        self.skip_case(
> +            abs(float_list[0][0] - float_list[1][0]) > 0.1
> +            and abs(float_list[0][1] - float_list[1][1]) > 0.1,
> +            "The test need different optical module in two ports",
> +        )
> +        self.verify_laser_Power_in_different_optical_modules(
> +            laser_power_list, self.dut_ports[0], self.dut_ports[1]
> +        )
> +
> +    def test_check_laser_power_in_same_optical_modules(self):
> +        """
> +        set same optical modules in two ports and check the testpmd show same
> laser power
> +        """
> +        self.dut.bind_interfaces_linux(self.kdriver)
> +        [self.check_interface_link_up(i) for i in [self.pf0_intf, self.pf1_intf]]
> +        laser_power_list = self.skip_unsupported_get_laser_power(
> +            self.pf0_intf, self.pf1_intf
> +        )
> +        self.skip_case(laser_power_list, "The test need Optical module to support")
> +        float_list = [
> +            self.get_float_laser_power_values(laser_power)
> +            for laser_power in laser_power_list
> +        ]
> +        self.skip_case(
> +            abs(float_list[0][0] - float_list[1][0]) <= 0.1
> +            and abs(float_list[0][1] - float_list[1][1]) <= 0.1,
> +            "The test need same optical module in two ports",
> +        )
> +        self.verify_laser_Power_in_same_optical_modules(
> +            laser_power_list, self.dut_ports[0], self.dut_ports[1]
> +        )
> --
> 2.17.1


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

end of thread, other threads:[~2022-09-20 11:10 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-08-04 16:58 [dts][PATCH V2 1/2] test_plans/telemetry:add 22.07 new feature Zhimin Huang
2022-08-04 16:58 ` [dts][PATCH V2 2/2] tests/telemetry:add " Zhimin Huang
2022-08-08  1:21   ` Jiale, SongX
2022-09-20 11:10   ` Tu, Lijuan
2022-08-12  6:22 ` [dts][PATCH V2 1/2] test_plans/telemetry:add " Peng, Yuan

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