From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 1D160A00C3; Tue, 20 Sep 2022 13:10:27 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 146C540E0F; Tue, 20 Sep 2022 13:10:27 +0200 (CEST) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by mails.dpdk.org (Postfix) with ESMTP id CC41A4069B for ; Tue, 20 Sep 2022 13:10:24 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1663672225; x=1695208225; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=qlvwbM6U1S9YrZ/ziM4Bus6pCwkmAXgW2y7pgwHazIc=; b=cOniXgCn2zDXDoYD8wvySsnzLQ9/pGWGdK47PddJRPzrxbwvpd/YtF2G jsKyJv+RsD+hxxNqAnIppBzxnmqAgdTkHS8C3CaEKnb+McXcAKyMVLE2a /k7eWiEQ6Cf3ttRWM6FDNJGfCFvlt+M/VOX8LMPLOVY3Bigm3IQlA5Dan JPZyj/UsNzlpQ+yBDNEJ44zrr6A2dBkYPnaR7ANq+GN2+pvjODUO8PGhF f/AnQbdL/++ICHqZ05Pc9XcRknFYn+BkkXIuGgbj+rgwAWsXRYR7qREyG 1WaHMBzpl0z4fU+fKDG73TvNg+8ihjaFmTkD3+zIezjvD2mMq+qQrHwYR g==; X-IronPort-AV: E=McAfee;i="6500,9779,10475"; a="385951405" X-IronPort-AV: E=Sophos;i="5.93,330,1654585200"; d="scan'208";a="385951405" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Sep 2022 04:10:24 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.93,330,1654585200"; d="scan'208";a="687372209" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by fmsmga004.fm.intel.com with ESMTP; 20 Sep 2022 04:10:24 -0700 Received: from fmsmsx609.amr.corp.intel.com (10.18.126.89) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Tue, 20 Sep 2022 04:10:23 -0700 Received: from fmsmsx608.amr.corp.intel.com (10.18.126.88) by fmsmsx609.amr.corp.intel.com (10.18.126.89) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Tue, 20 Sep 2022 04:10:23 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx608.amr.corp.intel.com (10.18.126.88) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31 via Frontend Transport; Tue, 20 Sep 2022 04:10:23 -0700 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (104.47.55.174) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2375.31; Tue, 20 Sep 2022 04:10:22 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BXg5EXAeUVOZlhtrYAJe9FFHTjZYGF/FKynSn4WM7usG3HuKRUa7qT/nIFBbx2+rUGHosA3s6ijq6+D6lhaI/yU+ZD02vJBhtaxbJYe1WAxzSM4k9UyOEjU/Tigaz1qR/7/4xitrBFIaUWMxS2apvuenjGnT3/Yu8CxjmbH8PjlQn+d6ckP1Me9hI0gj5K7aWd6iqsdhT6C67aDJQ23Cix599yPsZePZ7IHEds2NGuBd01kwPJMxlxRISpb3psB/3Y4CwV2DBeZppTHyU/dooKkgspotNHRe8N+GRoNRZfKMIg8yX/ogiViFUmOjnMF4pFC4vDaZprGg1M0jiFNE9A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ggVY6ZEHFRS3kaMD2e0jyHN0jNbkR7fR9kPo07NH8k8=; b=QowM+QNiA1Nsc3v7ao3bsIycZ79BU2CWzE9w57DE4w7DOLltIjpjlrsuQ1VftlF+ggu79iBRvbkt5ef7vdJMFDBrw6e8rF5D4KVZKrXbsk1olNBkehIWSCO3wKfLCyepP17KHKnSYWhgB/j4M+aipWlrJIhJoKHE8PL9jk6binlCy30+QdThyte37NlRoRHP+myWL0Cl9lH96YnjCKq+NotGfON4H6Tc58ZrrejzdDY+sdCwBjEcDMs0TahD7a/tAoMi2bJs+slYbZJZ/MFwoVK+JzKzLcJ6gPzC6YXOWggEHkHkM+a53aVN6fNVAkSr05UUek/Yn3Y6BxLuegdrJg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from CY5PR11MB6187.namprd11.prod.outlook.com (2603:10b6:930:25::11) by BN9PR11MB5370.namprd11.prod.outlook.com (2603:10b6:408:11b::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5654.14; Tue, 20 Sep 2022 11:10:20 +0000 Received: from CY5PR11MB6187.namprd11.prod.outlook.com ([fe80::5831:750d:c337:6067]) by CY5PR11MB6187.namprd11.prod.outlook.com ([fe80::5831:750d:c337:6067%5]) with mapi id 15.20.5632.018; Tue, 20 Sep 2022 11:10:20 +0000 From: "Tu, Lijuan" To: "Huang, ZhiminX" , "dts@dpdk.org" CC: "Huang, ZhiminX" Subject: RE: [dts][PATCH V2 2/2] tests/telemetry:add 22.07 new feature Thread-Topic: [dts][PATCH V2 2/2] tests/telemetry:add 22.07 new feature Thread-Index: AQHYp93YlUzl2Ex1zE2We10BllI42a3ocCHw Date: Tue, 20 Sep 2022 11:10:20 +0000 Message-ID: References: <20220804165855.12308-1-zhiminx.huang@intel.com> <20220804165855.12308-2-zhiminx.huang@intel.com> In-Reply-To: <20220804165855.12308-2-zhiminx.huang@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-reaction: no-action dlp-version: 11.6.500.17 dlp-product: dlpe-windows authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CY5PR11MB6187:EE_|BN9PR11MB5370:EE_ x-ms-office365-filtering-correlation-id: 5c733514-6e13-4f5f-9ae8-08da9af8b501 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: BkPIv8f0WeKPDKwI3WiJey5dNyJlvr8Rr2S8lufKmb2VOg3Y818nhNV+7TWLM1fIjO7H9fBgRAZ4ZkVKycBgeY5AQIQ1X4dKca/oR/tswUzmitUQz50aKluu0xP1fZCMA7N7NWfILz36YD4t/4qX/ddCtxPQ9aL6hpySCs8OJBj0ObzG9B0ZPm1PLYs3w9L1wq1hupLiG31u08vZKpmrjrV9qCOt0/3e2xPtHT7pdavHWq3qJLiBVYDlCYoAtd6NwK64pUxj4XzaEi+OURN6GDor5+wJiVy2r+yQ3gYyui8xVJWad3gBeq8EbnyoBOda8eYnJEWNz3zBYwsBgVGcYK54nUkF/nL7Ci9BAKrtJF/708hf75A/SdqRbBVK4ARh67uR96eklDrqzMNdKLTQ/X0/4YdwcY27AZU+JHh8S4eWabwQ7N+4MDNwxxtaKsggzBaZtVS6w/cyWsFtWC5ExRV3tODV62YTIoo8Sbk7ffYAQDen2m14g1h27yibPJLasvqpR5gnxaPlx5/a8XSbRul3M73PYyFsWMeB1QOp/e5zngHqtqcKg4MputmgsEXr5koKPAyWDVV4gvfWK3XbIyEsXS/ViszpiMc5SNorH3SheoAehMYiBYThXYcpOkikbawxm3va740nrio9I57D70vAHlIncTPPaO+gIrRef0KE8XgyuLbGTBApQxS6Nu0ykAkpNC/HJmUIM2yJvaZRBSYHYHjnKGbYh+h1C+pKjBi06+ENoPWxM34YIguWn5DWA3E8I8YdePRZjsJ44pnf3w== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CY5PR11MB6187.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230022)(396003)(39860400002)(366004)(136003)(376002)(346002)(451199015)(86362001)(53546011)(7696005)(6506007)(41300700001)(4326008)(8676002)(64756008)(66446008)(107886003)(8936002)(26005)(52536014)(66476007)(38070700005)(66556008)(478600001)(71200400001)(33656002)(66946007)(76116006)(110136005)(316002)(186003)(2906002)(83380400001)(55016003)(122000001)(5660300002)(9686003)(82960400001)(38100700002); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?kiAhr9FaLA62CSmAb/U0/+mESH/LU97MDV+oyRMNmXOZxkGm0chlHMZ1GkHm?= =?us-ascii?Q?JLyoNTFU8NnYH2kHZlj9A39+806Yh1nLkdYdVxEYsJKyICpkNB0hQ36Y8AJR?= =?us-ascii?Q?9KkvERwirdhPJxyLqSqTpoi3HhXWrBjElmZq+4LE0p08harWTJ/1ij5oxs4d?= =?us-ascii?Q?muR60yV0jaemKSDbUESqyxo744GElTtUj0TQm27NESTULgchcwwc53cTiJ0z?= =?us-ascii?Q?Pi7UjNynq8r6RpxdOrQ8RFhsYfROAGJp4PK2hyzfXYSkdSpurWw4nae4P+uT?= =?us-ascii?Q?35o/G2vKooNgxd3IM0zKJUxTpzXWXWp/BTqdlP3Trp05/V4Ske3iExnG0ph6?= =?us-ascii?Q?kg905OvW4IsreXYD4nm34xyxmvYoZP0gR8zAtS1RErDksLulOmROXQRv3E6b?= =?us-ascii?Q?r3zcQYpmrR10b2R8I8j06mlp1656vK8YqTgCVaDoFvc1WMJXeHEMKXB+/hK2?= =?us-ascii?Q?k3Ou68+53ZTsqGKSUG4MlWLHM1qw/4uMjQa1i7Nch86qxZzXX7LYkw7Kv3r1?= =?us-ascii?Q?GePTyhBAKj8kb+tbY6/lKzojqPJZ9+tYPQD44T35m4avz83koscQOslaQrYE?= =?us-ascii?Q?28S6e7eG3WExuOPD8EnwnR1VMpYBYV4XhMa2KGqpKm0p/Jq/udVZ7KtXym3y?= =?us-ascii?Q?3OmDIZMtE1rtzIX4QS/I1H0wc20/3/3CDL20Zikmu1fW/tVrbH34ZNV85BrX?= =?us-ascii?Q?GWlGo3ryGC0sKELb/YtOBh2So1OcV6g+NpLs2NsasVmJVuFIRFCaAtooMOaB?= =?us-ascii?Q?Ebg9h/M9oMzuwaz/VYroDBQGGyuY31udhHGVk0IpZoTh2W2MX9apxNgWsXYO?= =?us-ascii?Q?sWCG4GCJCgQ4nGWgrSQb3G0ShoFuZKNyxEohgvw+/OQlLPa7zHc2qzXQDDn3?= =?us-ascii?Q?pWzglK6S5CUUJaEUh6BjMIp2xILBcBKfRPlEgFSm6eqLslV5j8Tb4PfBtJ00?= =?us-ascii?Q?+RcFGg14Mlhyd8DuSkNio/GBVtF2N3vDT/4VlgyOTruuIzKl7je9RHJLSp7z?= =?us-ascii?Q?sGkY8upSc23rktpXMrso0SJT9UTqFf6howI9/32YhP7XrPKsk5Uisn/Wuyws?= =?us-ascii?Q?7/iqktRT506J7pUVqIAqJhPM8P4GcjNyMDJPbJXXsViLmOYlglsf20zrXBW3?= =?us-ascii?Q?P9wweqwFKxg8ZuMFZX8uYdZTG4cI616Xemddyr8sMwU+M08JR31/UVlLhVro?= =?us-ascii?Q?YhSDENd0p/3VY4lkkpLGWYKHLMePubpjUpkaB5CvwqLLl/iySUsffPQG3qz+?= =?us-ascii?Q?Xuv8absJ4bkhcDmLc38cA9HRAGRLh0K6qPi6KudTbOJhN26cGj5tVG+3Pl8c?= =?us-ascii?Q?XHx/bVpd3+pi3SJ0rIPmbuJPR62IGu/aFDbaRIt4Cs/FLINtxJUeW7yIzmE5?= =?us-ascii?Q?buX/BnfbmkCBEfZ7NJm2PZcBOLiiBzeTv8KMBn10DAqv5oY7idOtccIy60mI?= =?us-ascii?Q?cszRGZVGxhghEGmtTB30uBwGFugmyGsmQk+xrFF4O3DXkMiQb+h9hlFjKYVd?= =?us-ascii?Q?BRXkRMS39CC9Y68PV/JAm8l0ERyW6UzhaLJQxGV7UOy5svl6PUovmL1n3caN?= =?us-ascii?Q?dWLFyRIi4WNY+pmoAyZSXKnN8WxLCR+Au38uL9Qi?= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CY5PR11MB6187.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5c733514-6e13-4f5f-9ae8-08da9af8b501 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Sep 2022 11:10:20.5226 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: CknxObsrk9pW0RY7ftNuvMZPb0cHfQ2XWMnXtu5DVdwOhoYMBJIy+4NtWPPx8OWz4PtSF3ISNayEjXxQ4czalw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN9PR11MB5370 X-OriginatorOrg: intel.com X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dts-bounces@dpdk.org > -----Original Message----- > From: Zhimin Huang > Sent: Friday, August 5, 2022 12:59 AM > To: dts@dpdk.org > Cc: Huang, ZhiminX > 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. >=20 > add 22.07 new feature, support get laser power value in telemetry client. >=20 > Signed-off-by: Zhimin Huang > --- > tests/TestSuite_telemetry.py | 184 ++++++++++++++++++++++++++++++++++- > 1 file changed, 183 insertions(+), 1 deletion(-) >=20 > 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) >=20 > + def start_telemetry_server_and_get_module_eeprom(self, port_id): > + try: > + self.change_flag =3D True > + self.dut.bind_interfaces_linux("vfio-pci") It's not a good idea to use hardcode, please use self. drivername instead. > + out =3D self.start_telemetry_server() > + self.tester.is_interface_up(self.tester_iface0) > + p =3D re.search("socket /var/run/dpdk/(.+?)/", out) > + self.start_dpdk_telemetry(p.group(1)) > + module_eeprom_output =3D 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 =3D self.dut.new_session() > + dpdk_tool =3D os.path.join(self.target_dir, "usertools/dpdk-tele= metry.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 =3D [laser_powers] > + for laser_power, port in zip(laser_powers, ports): > + laser_power_via_dpdk =3D self.get_nic_laser_power_via_dpdk(p= ort) > + dpdk_float_values =3D > self.get_float_laser_power_values(laser_power_via_dpdk) > + eth_float_values =3D self.get_float_laser_power_values(laser= _power) > + test_flag =3D [ > + abs(v_d - v_e) for v_d, v_e in zip(dpdk_float_values, et= h_float_values) > + ] > + self.logger.info( > + "dpdk:{} eth:{}".format(dpdk_float_values, eth_float_val= ues) > + ) > + self.verify( > + [flag <=3D 0.1 for flag in test_flag], > + "dpdk:{} eth:{},get the incorrect laser power values".fo= rmat( > + dpdk_float_values, eth_float_values > + ), > + ) > + > + def verify_laser_Power_in_different_optical_modules(self, laser_powe= rs, > *ports): > + laser_power_via_dpdk =3D self.get_nic_laser_power_via_dpdk(ports= [-1]) > + dpdk_float_values =3D > self.get_float_laser_power_values(laser_power_via_dpdk) > + eth_float_values =3D self.get_float_laser_power_values(laser_pow= ers[0]) > + self.logger.info( > + "dpdk port 1: {} eth port 0: {}".format( > + dpdk_float_values, eth_float_values > + ) > + ) > + test_flag =3D [ > + abs(v_d - v_e) for v_d, v_e in zip(dpdk_float_values, eth_fl= oat_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 =3D self.get_nic_laser_power_via_dpdk(ports= [-1]) > + dpdk_float_values =3D > self.get_float_laser_power_values(laser_power_via_dpdk) > + eth_float_values =3D self.get_float_laser_power_values(laser_pow= ers[0]) > + self.logger.info( > + "dpdk port 1: {} eth port 0: {}".format( > + dpdk_float_values, eth_float_values > + ) > + ) > + test_flag =3D [ > + abs(v_d - v_e) for v_d, v_e in zip(dpdk_float_values, eth_fl= oat_values) > + ] > + self.verify( > + [flag <=3D 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 =3D re.findall(r"(\d+\.\d+.)", output) > + float_list =3D list(map(float, p)) > + return float_list > + > + def get_nic_laser_power_via_ethtool(self, intf): > + output =3D self.d_a_console( > + "ethtool -m {} | grep 'Laser output power'".format(intf) > + ) > + rex_output =3D 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 =3D re.findall(r"(\d+\.\d+.)", output) + float_list =3D list(map(float, p)) + return float_list If it is False, exception will happen. > + > + def get_nic_laser_power_via_dpdk(self, port): > + out =3D self.start_telemetry_server_and_get_module_eeprom(port) > + laser_power_via_dpdk =3D self.get_nic_laser_power_via_dpdk_rex(o= ut) > + return laser_power_via_dpdk > + > + def get_nic_laser_power_via_dpdk_rex(self, output): > + rex_output =3D 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 =3D 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 =3D [] > + for intf in intfs: > + output =3D 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 =3D self.dut.get_ports() > self.verify(len(self.dut_ports) >=3D 2, "Insufficient ports") > + self.pf0_intf =3D self.dut.ports_info[self.dut_ports[0]]["intf"] > + self.pf1_intf =3D self.dut.ports_info[self.dut_ports[1]]["intf"] > + self.tester_iface0 =3D self.tester.get_interface( > + self.tester.get_local_port(self.dut_ports[0]) > + ) > self.init_test_binary_files() > self.nic_grp =3D self.get_ports_by_nic_type() > self.used_ports =3D [] > @@ -559,7 +685,7 @@ class TestTelemetry(TestCase): > """ > Run before each test case. > """ > - pass > + self.dut.bind_interfaces_linux("vfio-pci") Hardcode with above. >=20 > 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.driver= name, else impact other suites. > + self.check_interface_link_up(self.pf0_intf) > + laser_power_list =3D self.skip_unsupported_get_laser_power(self.= pf0_intf) > + self.skip_case(laser_power_list, "The test need Optical module t= o 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.p= f1_intf]] > + laser_power_list =3D self.skip_unsupported_get_laser_power( > + self.pf0_intf, self.pf1_intf > + ) > + self.skip_case(laser_power_list, "The test need Optical module t= o support") > + float_list =3D [ > + 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.p= f1_intf]] > + laser_power_list =3D self.skip_unsupported_get_laser_power( > + self.pf0_intf, self.pf1_intf > + ) > + self.skip_case(laser_power_list, "The test need Optical module t= o support") > + float_list =3D [ > + 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]) <=3D 0.1 > + and abs(float_list[0][1] - float_list[1][1]) <=3D 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