From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by dpdk.space (Postfix) with ESMTP id 07F66A0096 for ; Wed, 5 Jun 2019 03:40:28 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id AFDC61B95D; Wed, 5 Jun 2019 03:40:28 +0200 (CEST) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id 4E6021B958 for ; Wed, 5 Jun 2019 03:40:25 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 04 Jun 2019 18:40:24 -0700 X-ExtLoop1: 1 Received: from fmsmsx105.amr.corp.intel.com ([10.18.124.203]) by orsmga007.jf.intel.com with ESMTP; 04 Jun 2019 18:40:24 -0700 Received: from fmsmsx115.amr.corp.intel.com (10.18.116.19) by FMSMSX105.amr.corp.intel.com (10.18.124.203) with Microsoft SMTP Server (TLS) id 14.3.408.0; Tue, 4 Jun 2019 18:40:24 -0700 Received: from shsmsx108.ccr.corp.intel.com (10.239.4.97) by fmsmsx115.amr.corp.intel.com (10.18.116.19) with Microsoft SMTP Server (TLS) id 14.3.408.0; Tue, 4 Jun 2019 18:40:23 -0700 Received: from shsmsx101.ccr.corp.intel.com ([169.254.1.10]) by SHSMSX108.ccr.corp.intel.com ([169.254.8.188]) with mapi id 14.03.0415.000; Wed, 5 Jun 2019 09:40:21 +0800 From: "Tu, Lijuan" To: "Zhao, MeijuanX" , "dts@dpdk.org" CC: "Zhao, MeijuanX" Thread-Topic: [dts] [next][PATCH V2 1/7] tests/checksum_offload use pktgen API replace old module and fix some issue Thread-Index: AQHVF5HoJDGJeXFhwkmVyfjPpabFKKaMUAEQ Date: Wed, 5 Jun 2019 01:40:20 +0000 Message-ID: <8CE3E05A3F976642AAB0F4675D0AD20E0BAA03ED@SHSMSX101.ccr.corp.intel.com> References: <20190531171948.6944-1-meijuanx.zhao@intel.com> In-Reply-To: <20190531171948.6944-1-meijuanx.zhao@intel.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.0.600.7 dlp-reaction: no-action x-ctpclassification: CTP_NT x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiMDJhODE5M2YtZGJhNy00ZmJmLTkzNTYtZjFhNDE1NzEyNGU5IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiZDhkZ3NcL1pMd1ZEU2MxZnFkMExsV3pPWUFzakFrcWVxeGkzZDdoSFgwZFJoT1FcL2M1OWh3dWNaVnNNdGFXeDlhIn0= x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dts] [next][PATCH V2 1/7] tests/checksum_offload use pktgen API replace old module and fix some issue 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" Applied the series into next branch, thanks > -----Original Message----- > From: dts [mailto:dts-bounces@dpdk.org] On Behalf Of zhaomeijuan > Sent: Saturday, June 1, 2019 1:20 AM > To: dts@dpdk.org > Cc: Zhao, MeijuanX > Subject: [dts] [next][PATCH V2 1/7] tests/checksum_offload use pktgen API > replace old module and fix some issue >=20 > *.remove old or unused module and code which replace it with pktgen API > *.fix pep-8 issue *.quit task before start another *.enable pmd verbose > function *.add enable rx cksum >=20 > Signed-off-by: zhaomeijuan > --- > tests/TestSuite_checksum_offload.py | 63 ++++++++++++++++++++--------- > 1 file changed, 44 insertions(+), 19 deletions(-) >=20 > diff --git a/tests/TestSuite_checksum_offload.py > b/tests/TestSuite_checksum_offload.py > index 6541ba5..db0663e 100644 > --- a/tests/TestSuite_checksum_offload.py > +++ b/tests/TestSuite_checksum_offload.py > @@ -37,13 +37,16 @@ Test support of RX/TX Checksum Offload Features by > Poll Mode Drivers. > """ >=20 > import string > +import os > import re > -import rst > +from rst import RstReport > import utils >=20 > from test_case import TestCase > from pmd_output import PmdOutput > from test_capabilities import DRIVER_TEST_LACK_CAPA > +from pktgen import PacketGeneratorHelper > + >=20 > class TestChecksumOffload(TestCase): >=20 > @@ -59,6 +62,15 @@ class TestChecksumOffload(TestCase): > self.pmdout =3D PmdOutput(self.dut) > self.portMask =3D utils.create_mask([self.dut_ports[0]]) > self.ports_socket =3D self.dut.get_numa_id(self.dut_ports[0]) > + # get dts output path > + if self.logger.log_path.startswith(os.sep): > + self.output_path =3D self.logger.log_path > + else: > + cur_path =3D os.path.dirname( > + os.path.dirname(os.path.realpath(__file_= _))) > + self.output_path =3D os.sep.join([cur_path, self.logger.log_= path]) > + # create an instance to set stream field setting > + self.pktgen_helper =3D PacketGeneratorHelper() >=20 > def set_up(self): > """ > @@ -86,7 +98,6 @@ class TestChecksumOffload(TestCase): > self.dut.send_expect("csum set sctp sw %d" % port, "testpmd>= ") > self.dut.send_expect("port start all", "testpmd>") >=20 > - > def get_chksum_values(self, packets_expected): > """ > Validate the checksum flags. > @@ -175,16 +186,16 @@ class TestChecksumOffload(TestCase): > self.tester.send_expect("exit()", "#") >=20 > inst =3D self.tester.tcpdump_sniff_packets(intf=3Drx_interface, > count=3Dlen(packets_sent), > - filters=3D[{'layer':'ether', 'config':{'src': sniff_src}= }]) > + filters=3D[{'layer': 'ether', 'config': {'src': > + sniff_src}}]) >=20 > for packet_type in packets_sent.keys(): > self.tester.scapy_append('sendp([%s], iface=3D"%s")' % > (packets_sent[packet_type], tx_interface)) >=20 > self.tester.scapy_execute() > - p =3D self.tester.load_tcpdump_sniff_packets(inst) > - nr_packets=3Dlen(p) > - reslist =3D > [p[i].pktgen.pkt.sprintf("%IP.chksum%;%TCP.chksum%;%UDP.chksum%;%SCTP. > chksum%") for i in range(nr_packets)] > - out =3D string.join(reslist, ",") > + p =3D self.tester.load_tcpdump_sniff_packets(inst) > + nr_packets =3D len(p) > + reslist =3D > [p[i].pktgen.pkt.sprintf("%IP.chksum%;%TCP.chksum%;%UDP.chksum%;%SCTP. > chksum%") for i in range(nr_packets)] > + out =3D string.join(reslist, ",") > packets_received =3D out.split(',') > self.verify(len(packets_sent) =3D=3D len(packets_received), "Une= xpected > Packets Drop") >=20 > @@ -224,7 +235,7 @@ class TestChecksumOffload(TestCase): >=20 > pktsChkErr =3D {'IP/UDP': 'Ether(dst=3D"%s", > src=3D"52:00:00:00:00:00")/Dot1Q(vlan=3D1)/IP(chksum=3D0x0)/UDP(chksum=3D= 0xf)/(" > X"*46)' % mac, > 'IP/TCP': 'Ether(dst=3D"%s", > src=3D"52:00:00:00:00:00")/Dot1Q(vlan=3D1)/IP(chksum=3D0x0)/TCP(chksum=3D= 0xf)/("X > "*46)' % mac, > - 'IP/SCTP': 'Ether(dst=3D"%s", > src=3D"52:00:00:00:00:00")/Dot1Q(vlan=3D1)/IP(chksum=3D0x0)/SCTP(chksum= =3D0xf)/(" > X"*48)' % mac, > + 'IP/SCTP': 'Ether(dst=3D"%s", > + src=3D"52:00:00:00:00:00")/Dot1Q(vlan=3D1)/IP(chksum=3D0x0)/SCTP(chksum= =3D0xf) > + /("X"*48)' % mac, > 'IPv6/UDP': 'Ether(dst=3D"%s", > src=3D"52:00:00:00:00:00")/Dot1Q(vlan=3D1)/IPv6(src=3D"::1")/UDP(chksum= =3D0xf)/("X" > *46)' % mac, > 'IPv6/TCP': 'Ether(dst=3D"%s", > src=3D"52:00:00:00:00:00")/Dot1Q(vlan=3D1)/IPv6(src=3D"::1")/TCP(chksum= =3D0xf)/("X" > *46)' % mac} >=20 > @@ -259,8 +270,8 @@ class TestChecksumOffload(TestCase): > 'IPv6/TCP': 'Ether(dst=3D"%s", > src=3D"52:00:00:00:00:00")/IPv6(src=3D"::1")/TCP()/("X"*46)' % mac} >=20 > result =3D dict() > - > - self.checksum_enablehw(self.dut_ports[0]) > + > + self.checksum_enablehw(self.dut_ports[0]) >=20 > # get the packet checksum value > result =3D self.get_chksum_values(pkts_ref) @@ -279,7 +290,7 @@ = class > TestChecksumOffload(TestCase): > 'IPv6/UDP': 'Ether(dst=3D"%s", > src=3D"52:00:00:00:00:00")/IPv6(src=3D"::1")/UDP(chksum=3D0xf)/("X"*46)' = % mac, > 'IPv6/TCP': 'Ether(dst=3D"%s", > src=3D"52:00:00:00:00:00")/IPv6(src=3D"::1")/TCP(chksum=3D0xf)/("X"*46)' = % mac} >=20 > - if self.kdriver in DRIVER_TEST_LACK_CAPA['sctp_tx_offload']: > + if self.kdriver in DRIVER_TEST_LACK_CAPA['sctp_tx_offload']: > del pkts_good['IP/SCTP'] > del pkts_bad['IP/SCTP'] > del pkts_ref['IP/SCTP'] > @@ -361,19 +372,33 @@ class TestChecksumOffload(TestCase): > Pps =3D dict() > Pct =3D dict() > dmac =3D self.dut.get_mac_address(self.dut_ports[0]) > + dmac1 =3D self.dut.get_mac_address(self.dut_ports[1]) >=20 > result =3D [2, lcore, ptype, mode] > for size in size_list: > flow =3D flow_format % (dmac, size) > - self.tester.scapy_append('wrpcap("test.pcap", [%s])' % flow) > + pcap =3D os.sep.join([self.output_path, "test.pcap"]) > + self.tester.scapy_append('wrpcap("%s", [%s])' % (pcap, > + flow)) > self.tester.scapy_execute() > + flow =3D flow_format % (dmac1, size) > + pcap =3D os.sep.join([self.output_path, "test1.pcap"]) > + self.tester.scapy_append('wrpcap("%s", [%s])' % (pcap, flow)= ) > + self.tester.scapy_execute() > + > tgenInput =3D [] > + pcap =3D os.sep.join([self.output_path, "test.pcap"]) > tgenInput.append( > - (self.tester.get_local_port(self.dut_ports[0]), > self.tester.get_local_port(self.dut_ports[1]), "test.pcap")) > + (self.tester.get_local_port(self.dut_ports[0]), > self.tester.get_local_port(self.dut_ports[1]), pcap)) > + pcap =3D os.sep.join([self.output_path, "test1.pcap"]) > tgenInput.append( > - (self.tester.get_local_port(self.dut_ports[1]), > self.tester.get_local_port(self.dut_ports[0]), "test.pcap")) > - Bps[str(size)], Pps[ > - str(size)] =3D self.tester.traffic_generator_throughput(= tgenInput) > + (self.tester.get_local_port(self.dut_ports[1]), > + self.tester.get_local_port(self.dut_ports[0]), pcap)) > + > + # clear streams before add new streams > + self.tester.pktgen.clear_streams() > + # run packet generator > + streams =3D > self.pktgen_helper.prepare_stream_from_tginput(tgenInput, 100, > + None, self.tester.pktgen) > + Bps[str(size)], Pps[str(size)] =3D > + self.tester.pktgen.measure_throughput(stream_ids=3Dstreams) > self.verify(Pps[str(size)] > 0, "No traffic detected") > Pps[str(size)] /=3D 1E6 > Pct[str(size)] =3D (Pps[str(size)] * 100) / \ @@ -390,6 +415= ,7 @@ class > TestChecksumOffload(TestCase): > """ > # Verify that enough ports are available > self.verify(len(self.dut_ports) >=3D 2, "Insufficient ports for = testing") > + self.dut.send_expect("quit", "#") >=20 > # sizes =3D [64, 128, 256, 512, 1024] > sizes =3D [64, 128] > @@ -406,16 +432,15 @@ class TestChecksumOffload(TestCase): > portMask =3D utils.create_mask([self.dut_ports[0], self.dut_port= s[1]]) > for mode in ["sw", "hw"]: > self.logger.info("%s performance" % mode) > - rst.write_text(mode + " Performance" + '\r\n') > tblheader =3D ["Ports", "S/C/T", "Packet Type", "Mode"] > for size in sizes: > tblheader.append("%sB mpps" % str(size)) > tblheader.append("%sB %% " % str(size)) > self.result_table_create(tblheader) > self.pmdout.start_testpmd( > - lcore, "--portmask=3D%s" % self.portMask, socket=3Dself.= ports_socket) > + lcore, "--portmask=3D%s" % self.portMask + " --enable-rx= -cksum " + > + "--port-topology=3Dloop", > + socket=3Dself.ports_socket) >=20 > - self.dut.send_expect("set verbose 1", "testpmd> ") > self.dut.send_expect("set fwd csum", "testpmd> ") > if mode =3D=3D "hw": > self.checksum_enablehw(self.dut_ports[0]) > -- > 2.17.1