From: "Liu, Yong" <yong.liu@intel.com>
To: "Xu, HuilongX" <huilongx.xu@intel.com>, "dts@dpdk.org" <dts@dpdk.org>
Subject: Re: [dts] [DTS][PATCH V1 2/2] creat a pcap file include 2000 random packet, used scapy send the pcap, and check dut not loss packet
Date: Wed, 02 Mar 2016 13:21:04 +0800 [thread overview]
Message-ID: <56D67840.4000705@intel.com> (raw)
In-Reply-To: <DF2A19295B96364286FEB7F3DDA27A4637AFCDEB@SHSMSX101.ccr.corp.intel.com>
Hi Huilong,
In tester module , there has been one function named as
"check_random_pkts" which do the same validation task.
We do not need to re-invent the wheel, you can use this function for
packet integration check.
BTW, scapy 2.2.0 has issue in packet analysis, please use latest scapy
release.
On 02/15/2016 09:55 AM, Xu, HuilongX wrote:
> Hi all,
> Could you have time, review this patch and give me some comments.
> Thanks a lot
>
>> -----Original Message-----
>> From: Xu, HuilongX
>> Sent: Thursday, February 04, 2016 11:22 AM
>> To: dts@dpdk.org
>> Cc: Xu, HuilongX
>> Subject: [DTS][PATCH V1 2/2] creat a pcap file include 2000 random packet,
>> used scapy send the pcap, and check dut not loss packet
>>
>> Signed-off-by: xu,huilong <huilongx.xu@intel.com>
>> ---
>> tests/TestSuite_pmd.py | 55
>> +++++++++++++++++++++++++++++++++++++++++++++-----
>> 1 file changed, 50 insertions(+), 5 deletions(-)
>>
>> diff --git a/tests/TestSuite_pmd.py b/tests/TestSuite_pmd.py
>> index eeec53f..7a8df89 100644
>> --- a/tests/TestSuite_pmd.py
>> +++ b/tests/TestSuite_pmd.py
>> @@ -1,6 +1,6 @@
>> # BSD LICENSE
>> #
>> -# Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
>> +# Copyright(c) 2010-2016 Intel Corporation. All rights reserved.
>> # All rights reserved.
>> #
>> # Redistribution and use in source and binary forms, with or without
>> @@ -37,12 +37,14 @@ Test userland 10Gb PMD
>> import dts
>> import re
>> import time
>> +import random
>> from test_case import TestCase
>> from plotting import Plotting
>> from time import sleep
>> from settings import HEADER_SIZE
>> from pmd_output import PmdOutput
>> from etgen import IxiaPacketGenerator
>> +from scapy.all import *
>>
>> class TestPmd(TestCase,IxiaPacketGenerator):
>>
>> @@ -81,6 +83,8 @@ class TestPmd(TestCase,IxiaPacketGenerator):
>> self.frame_sizes = [64, 65, 128, 256, 512, 1024, 1280, 1518]
>>
>> self.rxfreet_values = [0, 8, 16, 32, 64, 128]
>> +
>> + self.total_packets = 2000
>>
>> self.test_cycles = [{'cores': '1S/1C/1T', 'Mpps': {}, 'pct': {}},
>> {'cores': '1S/2C/1T', 'Mpps': {}, 'pct': {}},
>> @@ -113,7 +117,37 @@ class TestPmd(TestCase,IxiaPacketGenerator):
>> Run before each test case.
>> """
>> pass
>> -
>> + def random_ip(self, iptype):
>> + tmp = []
>> + if 'ipv4' == iptype:
>> + for i in range(4):
>> + tmp.append(str(random.randint(10, 254)))
>> + return '.'.join(tmp)
>> + if 'ipv6' == iptype:
>> + for i in range(8):
>> + tmp.append(str(hex(random.randint(0, 65535)))[2:])
>> + return ':'.join(tmp)
>> + else:
>> + self.logger.warning("invalid ip type: %s" % iptype)
>> + def creat_pcap(self, filename, dst_mac, tx_intf):
>> + packets = []
>> + packet_type = [Ether(dst="%s" % dst_mac,
>> src=get_if_hwaddr(tx_intf))/IP(src="%s" % self.random_ip("ipv4"),
>> dst="%s" % self.random_ip("ipv4"))/("X"), #ipv4 packet
>> + Ether(dst="%s" % dst_mac,
>> src=get_if_hwaddr(tx_intf))/IP(src="%s" % self.random_ip("ipv4"),
>> dst="%s" % self.random_ip("ipv4"))/TCP()/("X"), #ipv4 tcp packet
>> + Ether(dst="%s" % dst_mac,
>> src=get_if_hwaddr(tx_intf))/IP(src="%s" % self.random_ip("ipv4"),
>> dst="%s" % self.random_ip("ipv4"))/UDP()/("X"), #ipv4 udp packet
>> + Ether(dst="%s" % dst_mac,
>> src=get_if_hwaddr(tx_intf))/IP(src="%s" % self.random_ip("ipv4"),
>> dst="%s" % self.random_ip("ipv4"))/SCTP(tag=1)/("X"),#ipv4 sctp packet
>> + Ether(dst="%s" % dst_mac,
>> src=get_if_hwaddr(tx_intf))/("X"), # l2 packet
>> + Ether(dst="%s" % dst_mac,
>> src=get_if_hwaddr(tx_intf))/IPv6(src="%s" % self.random_ip("ipv6"),
>> dst="%s" % self.random_ip("ipv6"))/("X"), # ipv6 packet
>> + Ether(dst="%s" % dst_mac,
>> src=get_if_hwaddr(tx_intf))/IPv6(src="%s" % self.random_ip("ipv6"),
>> dst="%s" % self.random_ip("ipv6"))/UDP()/("X"), #ipv6 udp packet
>> + Ether(dst="%s" % dst_mac,
>> src=get_if_hwaddr(tx_intf))/IPv6(src="%s" % self.random_ip("ipv6"),
>> dst="%s" % self.random_ip("ipv6"))/TCP()/("X"), # ipv6 tcp packet
>> + Ether(dst="%s" % dst_mac,
>> src=get_if_hwaddr(tx_intf))/IPv6(src="%s" % self.random_ip("ipv6"),
>> dst="%s" % self.random_ip("ipv6"))/SCTP(tag=1)/("X"), # ipv6 sctp packet
>> + ]
>> + for packet in packet_type:
>> + for i in range(self.total_packets / len(packet_type)):
>> + packets.append(packet)
>> + for i in range(self.total_packets % len(packet_type)):
>> + packets.append(packet_type[random.randint(0, len(packet_type)
>> - 1)])
>> + wrpcap(filename, packets)
>> + self.tester.session.copy_file_to(filename)
>> def test_perf_pmd_performance_4ports(self):
>> """
>> PMD Performance Benchmarking with 4 ports.
>> @@ -322,11 +356,22 @@ class TestPmd(TestCase,IxiaPacketGenerator):
>> port_mask = dts.create_mask([self.dut_ports[0],
>> self.dut_ports[1]])
>>
>> self.pmdout.start_testpmd("1S/2C/1T", "--portmask=%s" % port_mask,
>> socket=self.ports_socket)
>> +
>> + self.dut.send_expect("set fwd mac", "testpmd> ")
>> self.dut.send_expect("start", "testpmd> ")
>> - for size in self.frame_sizes:
>> - self.send_packet(size)
>> + interface = self.tester.get_interface(
>> + self.tester.get_local_port(self.dut_ports[0]))
>> + mac = self.dut.get_mac_address(self.dut_ports[0])
>> + self.creat_pcap("random_packet.pcap", mac, interface)
>> + self.tester.scapy_append('pcap = rdpcap("random_packet.pcap")')
>> + self.tester.scapy_append('sendp(pcap, iface="%s")' % interface)
>> + self.tester.scapy_execute(120)
>> +
>> + #self.dut.send_expect("stop", "testpmd> ")
>> + dut_rxpackets = self.get_stats(self.dut_ports[0])['RX-packets']
>> + dut_txpackets = self.get_stats(self.dut_ports[1])['TX-packets']
>> + self.verify(dut_txpackets == self.total_packets and dut_rxpackets
>> == dut_txpackets, "loss packets,tester send %d packets, dut rx packets %s,
>> dut tx packets %s" %(self.total_packets, dut_rxpackets, dut_txpackets) )
>>
>> - self.dut.send_expect("stop", "testpmd> ")
>> self.dut.send_expect("quit", "# ", 30)
>> sleep(5)
>>
>> --
>> 1.9.3
next prev parent reply other threads:[~2016-03-02 5:18 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-04 3:22 [dts] [DTS][PATCH V1 1/2] update packet checking case, send 2000 random packets, " xu,huilong
2016-02-04 3:22 ` [dts] [DTS][PATCH V1 2/2] creat a pcap file include 2000 random packet, used scapy send the pcap, and " xu,huilong
2016-02-15 1:55 ` Xu, HuilongX
2016-03-02 5:21 ` Liu, Yong [this message]
2016-02-24 1:42 ` [dts] [DTS][PATCH V1 1/2] update packet checking case, send 2000 random packets, " Tang, HaifengX
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=56D67840.4000705@intel.com \
--to=yong.liu@intel.com \
--cc=dts@dpdk.org \
--cc=huilongx.xu@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).