From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 55AAEA09EF; Wed, 16 Dec 2020 03:17:56 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 486292B83; Wed, 16 Dec 2020 03:17:55 +0100 (CET) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by dpdk.org (Postfix) with ESMTP id 894512142 for ; Wed, 16 Dec 2020 03:17:52 +0100 (CET) IronPort-SDR: evhthAYbSD0C7od3zSFpSPDBGokEwJ74IUtVBdEWSJDbCr2HtTln1yvAgtzXSms8+xjJJ3Bu4G 5ATyqq3IGWJg== X-IronPort-AV: E=McAfee;i="6000,8403,9836"; a="174217037" X-IronPort-AV: E=Sophos;i="5.78,423,1599548400"; d="scan'208";a="174217037" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Dec 2020 18:17:50 -0800 IronPort-SDR: DGhb1nvu8kQiami9aNKqEpuvOtku0yytXGEkxcnMQWRGBSaTLzt/8SkXMX3gwRPEMw0YJIFK36 6jDCSCfW2QeA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.78,423,1599548400"; d="scan'208";a="341878536" Received: from orsmsx605.amr.corp.intel.com ([10.22.229.18]) by orsmga006.jf.intel.com with ESMTP; 15 Dec 2020 18:17:50 -0800 Received: from orsmsx608.amr.corp.intel.com (10.22.229.21) by ORSMSX605.amr.corp.intel.com (10.22.229.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Tue, 15 Dec 2020 18:17:50 -0800 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx608.amr.corp.intel.com (10.22.229.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5 via Frontend Transport; Tue, 15 Dec 2020 18:17:49 -0800 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.105) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1713.5; Tue, 15 Dec 2020 18:17:49 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aaXfYXnm7X6goPx8eX0WhwzQlfv3orGNSbKi74sMv+iVF9YxjFYCWm5ryQZV0lufF49YRUFeAjK+sOvR+9TL190XMWewZZrxjBvTHgfRWSUoO4PoC2uAgvuPZhZ/oE6nWKdkUWWcBjjsdHrKShi0YyAkSCsN2bnzKzFeW7YPWOs9vw3i7YfpSeYP6anne6fBtC1f+g+lgCiZCGSs/Simsisg9apIK7t8HaiyGhfIgy6h8qOhty80p8m+pTUKmyjsu1r7m2Lcv4/m6R9oBY03GLRl/LZY5l9uoD62VceplyBQZ37efrremQcxL7ty06XxEhJcQ/Jf2J2anRQeUtVnpg== 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-SenderADCheck; bh=1+ME5F4f3ZW1GTzwHOzPAESdblMDTLxAyj+u7RSvLfM=; b=MicEINvPNw2Flw9S6FgNfo2KeU8EcQWjzm7eDLE/wIqe1j7gVwd4kGcpHoHlPQge4NFzkHFO9p0GyL7PL35veDnyRD0M6I5Kg8X1/eBgtPwjSvzDtAvnq3GYd2RruD+xcsO3+gMXp0YD2AwAvWB0XvzmDkvp2pkyWF+Uzcl6fUBDW4ti3fmFFkoHD5fkINwcsGYhj/aGF8HKHABSLZbeSmOy44mqCv+4+Uvx3jNF2ow9SQKhUnY2vEswC7GnqTU+SURgdGv4p1Yq7JCWClOHYSRTul4TRRQciyCqD+tXf1ofHc9mgI1e4OjUJ56lr7Glg/oYiqmmsAi2w0KKaxpIKA== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1+ME5F4f3ZW1GTzwHOzPAESdblMDTLxAyj+u7RSvLfM=; b=Fk0jmrQCnxce5x3ezTD7Jx3KykHp099YL7DAwoOcnLF+WlctvlSbc1ZxLrQnaL1Ahc0vJBNfkvf67tCEviSaP+9FU/d7RUI59PBO2J2Is3Q4SClB9R8F7ekJzaacINHBrVJZn/3vNKsNbZp0+TX9Etse5iYrAuPXg6/OEovO3Ik= Received: from CO1PR11MB5058.namprd11.prod.outlook.com (2603:10b6:303:99::17) by MWHPR11MB0080.namprd11.prod.outlook.com (2603:10b6:301:68::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3654.20; Wed, 16 Dec 2020 02:17:48 +0000 Received: from CO1PR11MB5058.namprd11.prod.outlook.com ([fe80::49f8:bbb1:6359:a683]) by CO1PR11MB5058.namprd11.prod.outlook.com ([fe80::49f8:bbb1:6359:a683%3]) with mapi id 15.20.3654.025; Wed, 16 Dec 2020 02:17:48 +0000 From: "Peng, Yuan" To: "Zhou, JunX W" , "dts@dpdk.org" CC: "Zhou, JunX W" Thread-Topic: [dts] [PATCH V1] tests/TestSuite_stats_checks: add new case xstats check for PF and VF Thread-Index: AQHW00/TzN3DS5EtIkym1ZusAvOlYan4/I1Q Date: Wed, 16 Dec 2020 02:17:48 +0000 Message-ID: References: <20201216020528.13114-1-junx.w.zhou@intel.com> In-Reply-To: <20201216020528.13114-1-junx.w.zhou@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.5.1.3 dlp-product: dlpe-windows dlp-reaction: no-action authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.198.147.192] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: b5eba35c-4bff-40ad-b79b-08d8a168c846 x-ms-traffictypediagnostic: MWHPR11MB0080: x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:127; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: zlWxCHFlEpeEMSqj3ZXQxa0sBc9GmuVXKsJ7dQxopFf/wdo5fBKbj//8kuKIBEfXDjHdKbGvUhRgPOWpdIj1sJCsAQJEL3oqAeQw9ONZGWHCnU5WNGAgu6gilN3Ry1dWS4ijhqY1WJYiy6EWrgZdYIfC1/aaljrjqaWRp+zlhHzduarFDXShB+SDdakipj9jafkEFHqzNOsB/hJzjIql+fv6rGAnFHIbDh2/RhjOgK5+pCkqwyO2OUz2RlMM2/zdZROzmC0kgUgfU+/pBkw74XmmwxCPs9bc6HD/rfDyD/J5+2Qx7BB9+9kKIChGDjv5BFn1ue+fTMhtBiB/+xzmbw== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CO1PR11MB5058.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(346002)(376002)(39860400002)(136003)(396003)(33656002)(55016002)(66556008)(66476007)(2906002)(66446008)(76116006)(71200400001)(52536014)(64756008)(66946007)(9686003)(478600001)(316002)(110136005)(7696005)(53546011)(6506007)(5660300002)(186003)(8936002)(83380400001)(86362001)(107886003)(26005)(4326008); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: =?us-ascii?Q?afKOk2SM1s2LR1ZyONRSeA1xoQvo1wwgC657gVm0dmFCFIGvsY0Cb7eRTlQb?= =?us-ascii?Q?AFnEDvk3gMlQpYJxmOQAxflsSItoJjhwTcj+vSOC84iH+jQxW/OUwky7FLH/?= =?us-ascii?Q?e90C/yn1dgSwn3NAtYkdvFHe1zHlk+kVKrx+gO+fisy7RvrUwSicDLLzcHWV?= =?us-ascii?Q?FP8gRJLpn9Fz7npJPmdOHwvIFwjlxHhlp4B2pD+XAYH2WhhZXFrxzhR9iI+F?= =?us-ascii?Q?0xAx0D+Np2WhJkscl69AgV/3F227AWnDwo+AYQYE+0SiWJB4888lTQLbLUNn?= =?us-ascii?Q?f23KP1v2n/uUDol3Tg5gz7g57WITCaXoh+sTw2sq3HBt3eB5GUenPg/X1xvD?= =?us-ascii?Q?KOkbE5AC7yAEAQtDuyxEgzEE5UFisph0KkFjG/D4iqpWCRI5B/VGXa5+KuG8?= =?us-ascii?Q?UYpGOBw8jEoD2hfuas7lh8uNe/EC4MQtMgEm7C+EN0eiuuAmmUt7HFhSWWFa?= =?us-ascii?Q?n1DKnCJrP5SuxW7My72l3vCWoxwsnYrAL9D6NWoa8bBM0vtnpbZfpyBmL6BS?= =?us-ascii?Q?eyGqd5ZYqWIssof2uAv/4hqdQgCKV0N8NFbiwb+JXF+rHmjdCD9jxhDigbq2?= =?us-ascii?Q?aquRzudT6wBaE82Ygyb0rd+IzQ7Jd7y5X1yzneedOfqHID/OiRWuhL/qPi7+?= =?us-ascii?Q?vJuYa3hzJ3XEMjyf1t8sNy1kALZCg0KtOKgzmyTGy8ONKkbuKA1hl0PyWuSd?= =?us-ascii?Q?lQlziPZulZOr36ZyP71fOsjJO+CX7GIaifee6OsO+onE31HWf2by8cV0Bjf6?= =?us-ascii?Q?VmF4URh7QAWFxryDG9XD3tCiewN6c50SmIhd2wSi4wZ/yWuaFKy5JddMmgoe?= =?us-ascii?Q?3Er4Bb8je7TjYZC/wJ942EC6qaQJUR7anuSU+dOi2W5Gd9zoUtMNBzSMKu4z?= =?us-ascii?Q?yXvmdLR+zZtdyr7QQAxpSd6VwX/gDFKzPylApmOhZUUo21dc/+ZDWTHPyCjy?= =?us-ascii?Q?Rnxsmmjob+21vmxm1TPkAj1Jy10AKXibwKIXD1ZTP1k=3D?= 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: CO1PR11MB5058.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b5eba35c-4bff-40ad-b79b-08d8a168c846 X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Dec 2020 02:17:48.0887 (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: BveZ8FWEoVyf0pgQvBazOSbv/9lW8VyZYnsnqFgFGXUsokvNYEZ43xiqqmWcXcpG+3qtNGnLlO/QbOjOmLCGrw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR11MB0080 X-OriginatorOrg: intel.com Subject: Re: [dts] [PATCH V1] tests/TestSuite_stats_checks: add new case xstats check for PF and VF X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.15 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 Sender: "dts" Acked-by Peng, Yuan -----Original Message----- From: dts On Behalf Of Zhou Jun Sent: Wednesday, December 16, 2020 10:05 AM To: dts@dpdk.org Cc: Zhou, JunX W Subject: [dts] [PATCH V1] tests/TestSuite_stats_checks: add new case xstats= check for PF and VF add new case xstats_check_PF and xstats_check_VF Signed-off-by: Zhou Jun --- tests/TestSuite_stats_checks.py | 102 +++++++++++++++++++++++++++++++- 1 file changed, 100 insertions(+), 2 deletions(-) diff --git a/tests/TestSuite_stats_checks.py b/tests/TestSuite_stats_checks= .py index 4fdc0869..74de4eee 100644 --- a/tests/TestSuite_stats_checks.py +++ b/tests/TestSuite_stats_checks.py @@ -36,16 +36,21 @@ Stats Checks example. """ from time import sleep from typing import List, Iterator, Tuple - +import random +import struct +import socket +import re import utils from pmd_output import PmdOutput - +import packet =20 from test_case import TestCase =20 ETHER_HEADER_LEN =3D 18 IP_HEADER_LEN =3D 20 ETHER_STANDARD_MTU =3D 1518 +RANDOM_IP_POOL =3D ['192.168.10.222/0'] +prefix_list =3D ['rx_good_packets', 'tx_good_packets', 'rx_good_bytes',=20 +'tx_good_bytes'] =20 =20 class TestStatsChecks(TestCase): @@ -90,6 +95,18 @@ class TestStatsChecks(TestCase): self.tester.scapy_append(f'sendp({packet}, iface=3D"{itf}")') return self.tester.scapy_execute() =20 + def get_random_ip(self): + str_ip =3D RANDOM_IP_POOL[random.randint(0, len(RANDOM_IP_POOL) - = 1)] + str_ip_addr =3D str_ip.split('/')[0] + str_ip_mask =3D str_ip.split('/')[1] + ip_addr =3D struct.unpack('>I', socket.inet_aton(str_ip_addr))[0] + mask =3D 0x0 + for i in range(31, 31 - int(str_ip_mask), -1): + mask =3D mask | (1 << i) + ip_addr_min =3D ip_addr & (mask & 0xffffffff) + ip_addr_max =3D ip_addr | (~mask & 0xffffffff) + return socket.inet_ntoa(struct.pack('>I',=20 + random.randint(ip_addr_min, ip_addr_max))) + def send_packet_of_size_to_port(self, port_id: int, pktsize: int): =20 # The packet total size include ethernet header, ip header, and pa= yload. @@ -100,6 +117,22 @@ class TestStatsChecks(TestCase): f'Ether(dst=3Ddutmac, src=3D"52:00:00= :00:00:00")/IP()/Raw(load=3D"\x50"*{padding})') return out =20 + def send_pkt_with_random_ip(self, port, count, if_vf=3DFalse): + """ + send pkt with random ip + port: send pkt port + count: pkt count + """ + pkt =3D packet.Packet() + pkt.assign_layers(['ether', 'ipv4']) + mac =3D self.pmdout.get_port_mac(port) if if_vf else self.dut.get_= mac_address(port) + for i in range(count): + src_ip =3D self.get_random_ip() + pkt.config_layers([('ether', {'dst': mac}), + ('ipv4', {'src': src_ip})]) + pkt.send_pkt(crb=3Dself.tester,=20 + tx_port=3Dself.tester.get_interface(self.tester.get_local_port(self.dut_ + ports[0]))) + + def send_packet_of_size_to_tx_port(self, pktsize, received=3DTrue): """ Send 1 packet to portid @@ -141,6 +174,59 @@ class TestStatsChecks(TestCase): stats =3D self.pmdout.get_pmd_stats(portid) return stats['TX-packets'], stats['TX-errors'], stats['TX-bytes'] =20 + def get_xstats(self, port_id_list): + xstats_data =3D dict() + for port_id in port_id_list: + out =3D self.exec('show port xstats %s' % port_id) + tmp_data =3D dict() + for prefix in prefix_list: + pattern =3D re.compile('%s:(\s+)([0-9]+)' % prefix) + m =3D pattern.search(out) + if not m: + tmp_data.setdefault(prefix, 0) + else: + tmp_data.setdefault(prefix, int(m.group(2))) + xstats_data[port_id] =3D tmp_data + return xstats_data + + def verify_results(self, xstats_data, rx_port, tx_port, stats_data=3D{= }, if_zero=3DFalse): + if if_zero: + for port in xstats_data.keys(): + self.verify(not any(xstats_data[port].values()), 'xstats I= nitial value error! port {} xstats ' + '= data is {}'.format(port, xstats_data[port])) + else: + self.verify(xstats_data[rx_port]['rx_good_packets'] =3D=3D sta= ts_data[rx_port]['RX-packets'] + =3D=3D xstats_data[tx_port]['tx_good_packe= ts'] =3D=3D stats_data[tx_port]['TX-packets'] + =3D=3D 100, "pkt recieve or transport coun= t error!") + self.verify(xstats_data[rx_port]['rx_good_bytes'] =3D=3D stats= _data[rx_port]['RX-bytes'] =3D=3D + xstats_data[tx_port]['tx_good_bytes'] =3D=3D stats= _data[tx_port]['TX-bytes'], + 'pkt recieve or transport bytes error!') + + def xstats_check(self, rx_port, tx_port, if_vf=3DFalse): + self.exec ("port config all rss all") + self.exec ("set fwd mac") + org_xstats =3D self.get_xstats([rx_port, tx_port]) + self.verify_results(org_xstats, rx_port, tx_port, if_zero=3DTrue) + self.exec ("start") + + self.send_pkt_with_random_ip(tx_port, count=3D100, if_vf=3Dif_vf) + + self.exec ("stop") + if rx_port =3D=3D tx_port: + final_xstats =3D self.get_xstats([rx_port]) + stats_data =3D {rx_port: self.pmdout.get_pmd_stats(rx_port)} + else: + rx_stats_info =3D self.pmdout.get_pmd_stats(rx_port) + tx_stats_info =3D self.pmdout.get_pmd_stats(tx_port) + final_xstats =3D self.get_xstats([rx_port, tx_port]) + stats_data =3D {rx_port: rx_stats_info, + tx_port: tx_stats_info + } + self.verify_results(final_xstats, rx_port, tx_port,=20 + stats_data=3Dstats_data) + + self.pmdout.quit() + + def set_up_all(self): """ Prerequisite steps for each test suit. @@ -192,3 +278,15 @@ class TestStatsChecks(TestCase): =20 self.exec("stop") self.pmdout.quit() + + def test_xstats_check_pf(self): + self.pmdout.start_testpmd('default', '--rxq=3D4 --txq=3D4') + self.xstats_check(self.rx_port, self.tx_port) + + def test_xstats_check_vf(self): + self.dut.generate_sriov_vfs_by_port(self.dut_ports[0], 1, self.kdr= iver) + self.vf_port =3D self.dut.ports_info[self.dut_ports[0]]["vfs_port"= ][0] + self.vf_port.bind_driver(driver=3D"vfio-pci") + self.vf_port_pci =3D self.dut.ports_info[self.dut_ports[0]]['sriov= _vfs_pci'][0] + self.pmdout.start_testpmd('default', '--rxq=3D4 --txq=3D4', eal_pa= ram=3D'-w %s' % self.vf_port_pci) + self.xstats_check(0, 0, if_vf=3DTrue) -- 2.17.1