From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by dpdk.org (Postfix) with ESMTP id C06C32EDA for ; Thu, 28 May 2015 07:14:45 +0200 (CEST) Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga103.fm.intel.com with ESMTP; 27 May 2015 22:14:44 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.13,511,1427785200"; d="scan'208";a="701385158" Received: from shvmail01.sh.intel.com ([10.239.29.42]) by orsmga001.jf.intel.com with ESMTP; 27 May 2015 22:14:44 -0700 Received: from shecgisg003.sh.intel.com (shecgisg003.sh.intel.com [10.239.29.90]) by shvmail01.sh.intel.com with ESMTP id t4S5Efek018719; Thu, 28 May 2015 13:14:41 +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 t4S5Edht026216; Thu, 28 May 2015 13:14:41 +0800 Received: (from jingguox@localhost) by shecgisg003.sh.intel.com (8.13.6/8.13.6/Submit) id t4S5Edlj026212; Thu, 28 May 2015 13:14:39 +0800 From: Jingguo Fu To: dts@dpdk.org Date: Thu, 28 May 2015 13:14:36 +0800 Message-Id: <1432790077-26182-1-git-send-email-jingguox.fu@intel.com> X-Mailer: git-send-email 1.7.4.1 Cc: Jingguo Fu Subject: [dts] [DTS][PATCH 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 05:14:46 -0000 Signed-off-by: Jingguo Fu --- tests/TestSuite_scatter.py | 140 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 140 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..643fe4a --- /dev/null +++ b/tests/TestSuite_scatter.py @@ -0,0 +1,140 @@ +# 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 +# +# +# 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) + if self.nic in ["niantic", "fortville_eagle", "fortville_spirit", "fortville_spirit_single"]: + self.tester.send_expect("ifconfig %s mtu 9000" % sintf, "#") + self.tester.send_expect("ifconfig %s mtu 9000" % rintf, "#") + + 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 - 18 + padding = pktlen - 20 + + 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() + if self.nic in ["niantic", "fortville_eagle", "fortville_spirit", "fortville_spirit_single"]: + self.tester.send_expect("ifconfig %s mtu 1500" % sintf, "#") + self.tester.send_expect("ifconfig %s mtu 1500" % sintf, "#") + return res + + def set_up(self): + """ + Run before each test case. + """ + pass + + def test_scatter_mbuf_2048(self): + """ + Scatter 2048 mbuf + """ + cores = self.dut.get_core_list('1S/2C/2T') + coreMask = dts.create_mask(cores) + dutPorts = self.dut.get_ports(self.nic) + portMask = dts.create_mask(dutPorts[:2]) + + # set the mbuf size to 1024 + if self.nic in ["niantic", "fortville_eagle", "fortville_spirit", "fortville_spirit_single"]: + out = self.pmdout.start_testpmd( + "1S/2C/2T", "--mbcache=200 --mbuf-size=2048 --portmask=%s --max-pkt-len=9000" % portMask) + else: + out = self.pmdout.start_testpmd( + "1S/2C/2T", "--mbcache=200 --mbuf-size=1024 --portmask=%s" % portMask) + self.verify("Error" not in out, "launch error 1") + + if self.nic in ["niantic", "fortville_eagle", "fortville_spirit", "fortville_spirit_single"]: + self.dut.send_expect("set fwd mac", "testpmd> ", 120) + self.dut.send_expect("start", "testpmd> ") + + for offset in [-1, 0, 1, 4, 5]: + if self.nic in ["niantic", "fortville_eagle", "fortville_spirit", "fortville_spirit_single"]: + ret = self.scatter_pktgen_send_packet( + dutPorts[0], dutPorts[1], 2048 + offset) + else: + ret = self.scatter_pktgen_send_packet( + dutPorts[0], dutPorts[1], 1024 + 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