From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id C3EBF3237 for ; Thu, 28 May 2015 10:36:56 +0200 (CEST) Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga101.jf.intel.com with ESMTP; 28 May 2015 01:36:55 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.13,511,1427785200"; d="scan'208";a="736620395" Received: from shvmail01.sh.intel.com ([10.239.29.42]) by orsmga002.jf.intel.com with ESMTP; 28 May 2015 01:36:54 -0700 Received: from shecgisg003.sh.intel.com (shecgisg003.sh.intel.com [10.239.29.90]) by shvmail01.sh.intel.com with ESMTP id t4S8aqui023852; Thu, 28 May 2015 16:36:52 +0800 Received: from shecgisg003.sh.intel.com (localhost [127.0.0.1]) by shecgisg003.sh.intel.com (8.13.6/8.13.6/SuSE Linux 0.8) with ESMTP id t4S8aoEA027554; Thu, 28 May 2015 16:36:52 +0800 Received: (from jingguox@localhost) by shecgisg003.sh.intel.com (8.13.6/8.13.6/Submit) id t4S8aodu027550; Thu, 28 May 2015 16:36:50 +0800 From: Jingguo Fu To: dts@dpdk.org Date: Thu, 28 May 2015 16:36:47 +0800 Message-Id: <1432802208-27520-1-git-send-email-jingguox.fu@intel.com> X-Mailer: git-send-email 1.7.4.1 Cc: Jingguo Fu Subject: [dts] [DTS][PATCH V2 1/2] scatter: add scatter test suite 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: , X-List-Received-Date: Thu, 28 May 2015 08:36:57 -0000 Signed-off-by: Jingguo Fu --- tests/TestSuite_scatter.py | 132 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 tests/TestSuite_scatter.py diff --git a/tests/TestSuite_scatter.py b/tests/TestSuite_scatter.py new file mode 100644 index 0000000..2ce5965 --- /dev/null +++ b/tests/TestSuite_scatter.py @@ -0,0 +1,132 @@ +# BSD LICENSE +# +# Copyright(c) 2010-2014 Intel Corporation. All rights reserved. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +""" +DPDK Test suite. +Test Scattered Packets. +""" +import dts +from test_case import TestCase +from pmd_output import PmdOutput + +EHTERNET_HEADER = 18 +IP_HEADER = 20 +DEFAULT_MBUF_SIZE = 2048 +JUMBO_FRAME_MTU = 9000 +STANDARD_MTU = 1500 +# +# +# Test class. +# +class TestScatter(TestCase): + # + # + # + # Test cases. + # + def set_up_all(self): + """ + Run at the start of each test suite. + Scatter Prerequistites + """ + dutPorts = self.dut.get_ports(self.nic) + # Verify that enough ports are available + self.verify(len(dutPorts) >= 2, "Insufficient ports") + self.pmdout = PmdOutput(self.dut) + + def scatter_pktgen_send_packet(self, sPortid, rPortid, pktsize, num=1): + """ + Functional test for scatter packets. + """ + sport = self.tester.get_local_port(sPortid) + sintf = self.tester.get_interface(sport) + smac = self.dut.get_mac_address(sPortid) + rport = self.tester.get_local_port(rPortid) + rintf = self.tester.get_interface(rport) + self.tester.send_expect("ifconfig %s mtu %s" % (sintf, JUMBO_FRAME_MTU), "#") + self.tester.send_expect("ifconfig %s mtu %s" % (rintf, JUMBO_FRAME_MTU), "#") + + self.tester.scapy_background() + self.tester.scapy_append( + 'p = sniff(filter="ip",iface="%s", count=%d)' % (rintf, num)) + self.tester.scapy_append('RESULT = str(p)') + + pktlen = pktsize - EHTERNET_HEADER + padding = pktlen - IP_HEADER + + self.tester.scapy_foreground() + self.tester.scapy_append( + 'sendp([Ether(dst="%s")/IP(len=%s)/Raw(load="\x50"*%s)], iface="%s")' % (smac, pktlen, padding, sintf)) + self.tester.scapy_execute() + res = self.tester.scapy_get_result() + self.tester.send_expect("ifconfig %s mtu %s" % (sintf, STANDARD_MTU), "#") + self.tester.send_expect("ifconfig %s mtu %s" % (rintf, STANDARD_MTU), "#") + return res + + def set_up(self): + """ + Run before each test case. + """ + pass + + def test_scatter_mbuf(self): + """ + Scatter 2048 mbuf + """ + dutPorts = self.dut.get_ports(self.nic) + portMask = dts.create_mask(dutPorts[:2]) + + # set the mbuf size to 1024 + out = self.pmdout.start_testpmd( + "Default", "--mbcache=200 --mbuf-size=%s --portmask=%s --max-pkt-len=%s" % (DEFAULT_MBUF_SIZE,portMask, JUMBO_FRAME_MTU)) + self.verify("Error" not in out, "launch error 1") + self.dut.send_expect("set fwd mac", "testpmd> ", 120) + self.dut.send_expect("start", "testpmd> ") + + for offset in [-1, 0, 1, 4, 5]: + ret = self.scatter_pktgen_send_packet( + dutPorts[0], dutPorts[1], DEFAULT_MBUF_SIZE + offset) + self.verify("load='P" in ret, "packet receive error") + + self.dut.send_expect("stop", "testpmd> ") + self.dut.send_expect("quit", "# ", 30) + + def tear_down(self): + """ + Run after each test case. + """ + pass + + def tear_down_all(self): + """ + Run after each test suite. + """ + pass -- 2.1.0