From: "Liu, Yong" <yong.liu@intel.com>
To: yongjie <yongjiex.gu@intel.com>, dts@dpdk.org
Subject: Re: [dts] [PATCH] change whitelist suite name to mac filter
Date: Thu, 05 Nov 2015 17:27:38 +0800 [thread overview]
Message-ID: <563B210A.1000509@intel.com> (raw)
In-Reply-To: <1446706383-4414-1-git-send-email-yongjiex.gu@intel.com>
Applied. Thanks.
On 11/05/2015 02:53 PM, yongjie wrote:
> From: Gu yongjie <yongjiex.gu@intel.com>
>
>
> Signed-off-by: Gu yongjie <yongjiex.gu@intel.com>
> ---
> executions/execution.cfg | 2 +-
> executions/execution_FVL.cfg | 2 +-
> executions/execution_smoke.cfg | 2 +-
> test_plans/mac_filter_test_plan.rst | 173 ++++++++++++++++++++++++++++++
> test_plans/whitelist_test_plan.rst | 173 ------------------------------
> tests/TestSuite_mac_filter.py | 200 +++++++++++++++++++++++++++++++++++
> tests/TestSuite_whitelist.py | 200 -----------------------------------
> 7 files changed, 376 insertions(+), 376 deletions(-)
> create mode 100644 test_plans/mac_filter_test_plan.rst
> delete mode 100644 test_plans/whitelist_test_plan.rst
> create mode 100644 tests/TestSuite_mac_filter.py
> delete mode 100644 tests/TestSuite_whitelist.py
>
> diff --git a/executions/execution.cfg b/executions/execution.cfg
> index 20d9bd6..1870ec2 100644
> --- a/executions/execution.cfg
> +++ b/executions/execution.cfg
> @@ -7,7 +7,7 @@ test_suites=
> multiprocess,
> timer,
> blacklist,
> - whitelist,
> + mac_filter,
> ieee1588,
> checksum_offload,
> jumboframes,
> diff --git a/executions/execution_FVL.cfg b/executions/execution_FVL.cfg
> index 7bdd2b7..b404676 100644
> --- a/executions/execution_FVL.cfg
> +++ b/executions/execution_FVL.cfg
> @@ -20,7 +20,7 @@ test_suites=
> jumboframes,
> multiprocess,
> l2fwd,
> - whitelist,
> + mac_filter,
> blacklist,
> ipv4_reassembly,
> scatter,
> diff --git a/executions/execution_smoke.cfg b/executions/execution_smoke.cfg
> index 7631f5c..d090f8a 100644
> --- a/executions/execution_smoke.cfg
> +++ b/executions/execution_smoke.cfg
> @@ -24,7 +24,7 @@ test_suites=
> l2fwd,
> pmd,
> checksum_offload,
> - whitelist,
> + mac_filter,
> blacklist
> targets=
> x86_64-native-linuxapp-gcc
> diff --git a/test_plans/mac_filter_test_plan.rst b/test_plans/mac_filter_test_plan.rst
> new file mode 100644
> index 0000000..6ed79cc
> --- /dev/null
> +++ b/test_plans/mac_filter_test_plan.rst
> @@ -0,0 +1,173 @@
> +.. Copyright (c) <2012>, Intel Corporation
> + 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.
> +
> +==================================================
> +Support of Whitelist Features by Poll Mode Drivers
> +==================================================
> +
> +Support igb_uio and vfio driver, if used vfio, kernel need 3.6+ and enable vt-d in bios.
> +When used vfio , used "modprobe vfio" and "modprobe vfio-pci" insmod vfiod driver, then used
> +"./tools/dpdk_nic_bind.py --bind=vfio-pci device_bus_id" to bind vfio driver to test driver.
> +
> +The support of Whitelist offload features by Poll Mode Drivers consists in:
> +
> +
> +Prerequisites
> +=============
> +
> +Assuming that at least a port is connected to a traffic generator,
> +launch the ``testpmd`` with the following arguments::
> +
> + ./x86_64-default-linuxapp-gcc/build/app/test-pmd/testpmd -c 0xc3 -n 3 -- -i \
> + --burst=1 --rxpt=0 --rxht=0 --rxwt=0 --txpt=36 --txht=0 --txwt=0 \
> + --txfreet=32 --rxfreet=64 --mbcache=250 --portmask=0x3
> +
> +The -n command is used to select the number of memory channels. It should match the number of memory channels on that setup.
> +
> +Set the verbose level to 1 to display informations for each received packet::
> +
> + testpmd> set verbose 1
> +
> +Show port infos for port 0 and store the default MAC address and the maximum
> +number of MAC addresses::
> +
> + testpmd> show port info 0
> +
> + ********************* Infos for port 0 *********************
> + MAC address: 00:1B:21:4D:D2:24
> + Link status: up
> + Link speed: 10000 Mbps
> + Link duplex: full-duplex
> + Promiscuous mode: enabled
> + Allmulticast mode: disabled
> + Maximum number of MAC addresses: 127
> +
> +
> +Test Case: add/remove mac addresses
> +===================================
> +
> +Initialise first port without ``promiscuous mode``::
> +
> + testpmd> set promisc 0 off
> +
> +Read the stats for port 0 before sending the packet::
> +
> + testpmd> show port stats 8
> +
> + ######################## NIC statistics for port 8 ########################
> + RX-packets: 0 RX-errors: 0 RX-bytes: 64
> + TX-packets: 0 TX-errors: 0 TX-bytes: 0
> + ############################################################################
> +
> +Send a packet with default destination MAC address for port 0::
> +
> + testpmd> show port stats 0
> +
> + ######################## NIC statistics for port 8 ########################
> + RX-packets: 1 RX-errors: 0 RX-bytes: 128
> + TX-packets: 0 TX-errors: 0 TX-bytes: 0
> + ############################################################################
> +
> +Verify that the packet was received (RX-packets incremented).
> +
> +Send a packet with destination MAC address different than the port 0 address,
> +let's call it A.::
> +
> + testpmd> show port stats 0
> +
> + ######################## NIC statistics for port 8 ########################
> + RX-packets: 1 RX-errors: 0 RX-bytes: 128
> + TX-packets: 0 TX-errors: 0 TX-bytes: 0
> + ############################################################################
> +
> +Verify that the packet was not received (RX-packets not incremented).
> +
> +Add the MAC address A to the port 0::
> +
> + testpmd> mac_addr add 0 <A>
> + testpmd> show port stats 0
> +
> +
> + ######################## NIC statistics for port 8 ########################
> + RX-packets: 2 RX-errors: 0 RX-bytes: 192
> + TX-packets: 0 TX-errors: 0 TX-bytes: 0
> + ############################################################################
> +
> +Verify that the packet was received (RX-packets incremented).
> +
> +Remove the MAC address A to the port 0::
> +
> + testpmd> mac_addr remove 0 <A>
> + testpmd> show port stats 0
> +
> +
> + ######################## NIC statistics for port 8 ########################
> + RX-packets: 2 RX-errors: 0 RX-bytes: 192
> + TX-packets: 0 TX-errors: 0 TX-bytes: 0
> + ############################################################################
> +
> +Verify that the packet was not received (RX-packets not incremented).
> +
> +
> +Test Case: invalid addresses test
> +=================================
> +
> +Add a MAC address of all zeroes to the port 0::
> +
> + testpmd> mac_addr add 0 00:00:00:00:00:00
> +
> +Verify that the response is "Invalid argument" (-EINVAL)
> +
> +Remove the default MAC address::
> +
> + testpmd> mac_addr remove 0 <default MAC address>
> +
> +Verify that the response is "Address already in use" (-EADDRINUSE)
> +
> +Add two times the same address::
> +
> + testpmd> mac_addr add 0 <A>
> + testpmd> mac_addr add 0 <A>
> +
> +Verify that there is no error
> +
> +Add as many different addresses as maximum MAC addresses (n)::
> +
> + testpmd> mac_addr add 0 <A>
> + ... n-times
> + testpmd> mac_addr add 0 <A+n>
> +
> +Add one more different address::
> +
> + testpmd> mac_addr add 0 <A+n+1>
> +
> +Verify that the response is "No space left on device" (-ENOSPC)
> diff --git a/test_plans/whitelist_test_plan.rst b/test_plans/whitelist_test_plan.rst
> deleted file mode 100644
> index 6ed79cc..0000000
> --- a/test_plans/whitelist_test_plan.rst
> +++ /dev/null
> @@ -1,173 +0,0 @@
> -.. Copyright (c) <2012>, Intel Corporation
> - 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.
> -
> -==================================================
> -Support of Whitelist Features by Poll Mode Drivers
> -==================================================
> -
> -Support igb_uio and vfio driver, if used vfio, kernel need 3.6+ and enable vt-d in bios.
> -When used vfio , used "modprobe vfio" and "modprobe vfio-pci" insmod vfiod driver, then used
> -"./tools/dpdk_nic_bind.py --bind=vfio-pci device_bus_id" to bind vfio driver to test driver.
> -
> -The support of Whitelist offload features by Poll Mode Drivers consists in:
> -
> -
> -Prerequisites
> -=============
> -
> -Assuming that at least a port is connected to a traffic generator,
> -launch the ``testpmd`` with the following arguments::
> -
> - ./x86_64-default-linuxapp-gcc/build/app/test-pmd/testpmd -c 0xc3 -n 3 -- -i \
> - --burst=1 --rxpt=0 --rxht=0 --rxwt=0 --txpt=36 --txht=0 --txwt=0 \
> - --txfreet=32 --rxfreet=64 --mbcache=250 --portmask=0x3
> -
> -The -n command is used to select the number of memory channels. It should match the number of memory channels on that setup.
> -
> -Set the verbose level to 1 to display informations for each received packet::
> -
> - testpmd> set verbose 1
> -
> -Show port infos for port 0 and store the default MAC address and the maximum
> -number of MAC addresses::
> -
> - testpmd> show port info 0
> -
> - ********************* Infos for port 0 *********************
> - MAC address: 00:1B:21:4D:D2:24
> - Link status: up
> - Link speed: 10000 Mbps
> - Link duplex: full-duplex
> - Promiscuous mode: enabled
> - Allmulticast mode: disabled
> - Maximum number of MAC addresses: 127
> -
> -
> -Test Case: add/remove mac addresses
> -===================================
> -
> -Initialise first port without ``promiscuous mode``::
> -
> - testpmd> set promisc 0 off
> -
> -Read the stats for port 0 before sending the packet::
> -
> - testpmd> show port stats 8
> -
> - ######################## NIC statistics for port 8 ########################
> - RX-packets: 0 RX-errors: 0 RX-bytes: 64
> - TX-packets: 0 TX-errors: 0 TX-bytes: 0
> - ############################################################################
> -
> -Send a packet with default destination MAC address for port 0::
> -
> - testpmd> show port stats 0
> -
> - ######################## NIC statistics for port 8 ########################
> - RX-packets: 1 RX-errors: 0 RX-bytes: 128
> - TX-packets: 0 TX-errors: 0 TX-bytes: 0
> - ############################################################################
> -
> -Verify that the packet was received (RX-packets incremented).
> -
> -Send a packet with destination MAC address different than the port 0 address,
> -let's call it A.::
> -
> - testpmd> show port stats 0
> -
> - ######################## NIC statistics for port 8 ########################
> - RX-packets: 1 RX-errors: 0 RX-bytes: 128
> - TX-packets: 0 TX-errors: 0 TX-bytes: 0
> - ############################################################################
> -
> -Verify that the packet was not received (RX-packets not incremented).
> -
> -Add the MAC address A to the port 0::
> -
> - testpmd> mac_addr add 0 <A>
> - testpmd> show port stats 0
> -
> -
> - ######################## NIC statistics for port 8 ########################
> - RX-packets: 2 RX-errors: 0 RX-bytes: 192
> - TX-packets: 0 TX-errors: 0 TX-bytes: 0
> - ############################################################################
> -
> -Verify that the packet was received (RX-packets incremented).
> -
> -Remove the MAC address A to the port 0::
> -
> - testpmd> mac_addr remove 0 <A>
> - testpmd> show port stats 0
> -
> -
> - ######################## NIC statistics for port 8 ########################
> - RX-packets: 2 RX-errors: 0 RX-bytes: 192
> - TX-packets: 0 TX-errors: 0 TX-bytes: 0
> - ############################################################################
> -
> -Verify that the packet was not received (RX-packets not incremented).
> -
> -
> -Test Case: invalid addresses test
> -=================================
> -
> -Add a MAC address of all zeroes to the port 0::
> -
> - testpmd> mac_addr add 0 00:00:00:00:00:00
> -
> -Verify that the response is "Invalid argument" (-EINVAL)
> -
> -Remove the default MAC address::
> -
> - testpmd> mac_addr remove 0 <default MAC address>
> -
> -Verify that the response is "Address already in use" (-EADDRINUSE)
> -
> -Add two times the same address::
> -
> - testpmd> mac_addr add 0 <A>
> - testpmd> mac_addr add 0 <A>
> -
> -Verify that there is no error
> -
> -Add as many different addresses as maximum MAC addresses (n)::
> -
> - testpmd> mac_addr add 0 <A>
> - ... n-times
> - testpmd> mac_addr add 0 <A+n>
> -
> -Add one more different address::
> -
> - testpmd> mac_addr add 0 <A+n+1>
> -
> -Verify that the response is "No space left on device" (-ENOSPC)
> diff --git a/tests/TestSuite_mac_filter.py b/tests/TestSuite_mac_filter.py
> new file mode 100644
> index 0000000..1749c62
> --- /dev/null
> +++ b/tests/TestSuite_mac_filter.py
> @@ -0,0 +1,200 @@
> +# 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 the support of Whitelist Features by Poll Mode Drivers
> +"""
> +
> +import dts
> +import time
> +from test_case import TestCase
> +from pmd_output import PmdOutput
> +
> +class TestWhitelist(TestCase):
> +
> + def set_up_all(self):
> + """
> + Run at the start of each test suite.
> + Whitelist Prerequistites:
> + Two Ports
> + testpmd can normally started
> + """
> + self.frames_to_send = 1
> + # Based on h/w type, choose how many ports to use
> + self.dutPorts = self.dut.get_ports()
> + # Verify that enough ports are available
> + self.verify(len(self.dutPorts) >= 1, "Insufficient ports")
> + portMask = dts.create_mask(self.dutPorts[:2])
> +
> + self.pmdout = PmdOutput(self.dut)
> + self.pmdout.start_testpmd("Default", "--portmask=%s" % portMask)
> + self.dut.send_expect("set verbose 1", "testpmd> ")
> + self.dut.send_expect("start", "testpmd> ")
> +
> + # get dest address from self.target port
> + out = self.dut.send_expect("show port info %d" % self.dutPorts[0], "testpmd> ")
> +
> + self.dest = self.dut.get_mac_address(self.dutPorts[0])
> + mac_scanner = r"MAC address: (([\dA-F]{2}:){5}[\dA-F]{2})"
> +
> + ret = dts.regexp(out, mac_scanner)
> + self.verify(ret is not None, "MAC address not found")
> + self.verify(cmp(ret.lower(), self.dest) == 0, "MAC address wrong")
> +
> + self.max_mac_addr = dts.regexp(out, "Maximum number of MAC addresses: ([0-9]+)")
> +
> + def set_up(self):
> + """
> + Run before each test case.
> + Nothing to do.
> + """
> + pass
> +
> + def whitelist_send_packet(self, portid, destMac="00:11:22:33:44:55"):
> + """
> + Send 1 packet to portid.
> + """
> + itf = self.tester.get_interface(self.tester.get_local_port(portid))
> + self.tester.scapy_foreground()
> + self.tester.scapy_append('sendp([Ether(dst="%s", src="52:00:00:00:00:00")], iface="%s", count=%d)' % (destMac,
> + itf, self.frames_to_send))
> + self.tester.scapy_execute()
> + time.sleep(5)
> +
> + def test_add_remove_mac_address(self):
> + """
> + Add mac address and check packet can received
> + Remove mac address and check packet can't received
> + """
> + # initialise first port without promiscuous mode
> + fake_mac_addr = "01:01:01:00:00:00"
> + portid = self.dutPorts[0]
> + txportid = self.dutPorts[1]
> + self.dut.send_expect("set promisc %d off" % portid, "testpmd> ")
> +
> + out = self.dut.send_expect("show port stats %d" % txportid, "testpmd> ")
> + pre_rxpkt = dts.regexp(out, "TX-packets: ([0-9]+)")
> +
> + # send one packet with the portid MAC address
> + self.whitelist_send_packet(portid, self.dest)
> + out = self.dut.send_expect("show port stats %d" % txportid, "testpmd> ")
> + cur_rxpkt = dts.regexp(out, "TX-packets: ([0-9]+)")
> + # check the packet increase
> + self.verify(int(cur_rxpkt) == int(pre_rxpkt) + self.frames_to_send,
> + "Packet has not been received on default address")
> + # send one packet to a different MAC address
> + # new_mac = self.dut.get_mac_address(portid)
> + self.whitelist_send_packet(portid, fake_mac_addr)
> +
> + pre_rxpkt = cur_rxpkt
> + out = self.dut.send_expect("show port stats %d" % txportid, "testpmd> ")
> + cur_rxpkt = dts.regexp(out, "TX-packets: ([0-9]+)")
> +
> + # check the packet DO NOT increase
> + self.verify(int(cur_rxpkt) == int(pre_rxpkt),
> + "Packet has been received on a new MAC address that has not been added yet")
> + # add the different MAC address
> + out = self.dut.send_expect("mac_addr add %d" % portid + " %s" % fake_mac_addr, "testpmd>")
> +
> + # send again one packet to a different MAC address
> + self.whitelist_send_packet(portid, fake_mac_addr)
> +
> + pre_rxpkt = cur_rxpkt
> + out = self.dut.send_expect("show port stats %d" % txportid, "testpmd> ")
> + cur_rxpkt = dts.regexp(out, "TX-packets: ([0-9]+)")
> +
> + # check the packet increase
> + self.verify(int(cur_rxpkt) == int(pre_rxpkt) + self.frames_to_send,
> + "Packet has not been received on a new MAC address that has been added to the port")
> +
> + # remove the fake MAC address
> + out = self.dut.send_expect("mac_addr remove %d" % portid + " %s" % fake_mac_addr, "testpmd>")
> +
> + # send again one packet to a different MAC address
> + self.whitelist_send_packet(portid, fake_mac_addr)
> +
> + pre_rxpkt = cur_rxpkt
> + out = self.dut.send_expect("show port stats %d" % txportid, "testpmd> ")
> + cur_rxpkt = dts.regexp(out, "TX-packets: ([0-9]+)")
> +
> + # check the packet increase
> + self.verify(int(cur_rxpkt) == int(pre_rxpkt),
> + "Packet has been received on a new MAC address that has been removed from the port")
> + self.dut.send_expect("stop", "testpmd> ")
> +
> + def test_invalid_addresses(self):
> + """
> + Invalid operation:
> + Add NULL MAC should not be added
> + Remove using MAC will be failed
> + Add Same MAC twice will be failed
> + Add more than MAX number will be failed
> + """
> + portid = self.dutPorts[0]
> + fake_mac_addr = "00:00:00:00:00:00"
> +
> + # add an address with all zeroes to the port (-EINVAL)
> + out = self.dut.send_expect("mac_addr add %d" % portid + " %s" % fake_mac_addr, "testpmd>")
> + self.verify("Invalid argument" in out, "Added a NULL MAC address")
> +
> + # remove the default MAC address (-EADDRINUSE)
> + out = self.dut.send_expect("mac_addr remove %d" % portid + " %s" % self.dest, "testpmd>")
> + self.verify("Address already in use" in out, "default address removed")
> +
> + # add same address 2 times
> + fake_mac_addr = "00:00:00:00:00:01"
> + out = self.dut.send_expect("mac_addr add %d" % portid + " %s" % fake_mac_addr, "testpmd>")
> + out = self.dut.send_expect("mac_addr add %d" % portid + " %s" % fake_mac_addr, "testpmd>")
> + self.verify("error" not in out, "added 2 times the same address with an error")
> +
> + # add 1 address more that max number
> + i = 0
> + base_addr = "01:00:00:00:00:"
> + while i <= int(self.max_mac_addr):
> + new_addr = base_addr + "%0.2X" % i
> + out = self.dut.send_expect("mac_addr add %d" % portid + " %s" % new_addr, "testpmd>")
> + i = i + 1
> +
> + self.verify("No space left on device" in out, "added 1 address more than max MAC addresses")
> +
> + def tear_down(self):
> + """
> + Run after each test case.
> + Nothing to do.
> + """
> + pass
> +
> + def tear_down_all(self):
> + """
> + Run after each test suite.
> + """
> + self.dut.send_expect("quit", "# ", 10)
> diff --git a/tests/TestSuite_whitelist.py b/tests/TestSuite_whitelist.py
> deleted file mode 100644
> index 3e87b81..0000000
> --- a/tests/TestSuite_whitelist.py
> +++ /dev/null
> @@ -1,200 +0,0 @@
> -# 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 the support of Whitelist Features by Poll Mode Drivers
> -"""
> -
> -import dts
> -import time
> -from test_case import TestCase
> -from pmd_output import PmdOutput
> -
> -class TestWhitelist(TestCase):
> -
> - def set_up_all(self):
> - """
> - Run at the start of each test suite.
> - Whitelist Prerequistites:
> - Two Ports
> - testpmd can normally started
> - """
> - self.frames_to_send = 1
> - # Based on h/w type, choose how many ports to use
> - self.dutPorts = self.dut.get_ports()
> - # Verify that enough ports are available
> - self.verify(len(self.dutPorts) >= 1, "Insufficient ports")
> - portMask = dts.create_mask(self.dutPorts[:2])
> -
> - self.pmdout = PmdOutput(self.dut)
> - self.pmdout.start_testpmd("Default", "--portmask=%s" % portMask)
> - self.dut.send_expect("set verbose 1", "testpmd> ")
> - self.dut.send_expect("start", "testpmd> ")
> -
> - # get dest address from self.target port
> - out = self.dut.send_expect("show port info %d" % self.dutPorts[0], "testpmd> ")
> -
> - self.dest = self.dut.get_mac_address(self.dutPorts[0])
> - mac_scanner = r"MAC address: (([\dA-F]{2}:){5}[\dA-F]{2})"
> -
> - ret = dts.regexp(out, mac_scanner)
> - self.verify(ret is not None, "MAC address not found")
> - self.verify(cmp(ret.lower(), self.dest) == 0, "MAC address wrong")
> -
> - self.max_mac_addr = dts.regexp(out, "Maximum number of MAC addresses: ([0-9]+)")
> -
> - def set_up(self):
> - """
> - Run before each test case.
> - Nothing to do.
> - """
> - pass
> -
> - def whitelist_send_packet(self, portid, destMac="00:11:22:33:44:55"):
> - """
> - Send 1 packet to portid.
> - """
> - itf = self.tester.get_interface(self.tester.get_local_port(portid))
> - self.tester.scapy_foreground()
> - self.tester.scapy_append('sendp([Ether(dst="%s", src="52:00:00:00:00:00")], iface="%s", count=%d)' % (destMac,
> - itf, self.frames_to_send))
> - self.tester.scapy_execute()
> - time.sleep(5)
> -
> - def test_whitelist_add_remove_mac_address(self):
> - """
> - Add mac address and check packet can received
> - Remove mac address and check packet can't received
> - """
> - # initialise first port without promiscuous mode
> - fake_mac_addr = "01:01:01:00:00:00"
> - portid = self.dutPorts[0]
> - txportid = self.dutPorts[1]
> - self.dut.send_expect("set promisc %d off" % portid, "testpmd> ")
> -
> - out = self.dut.send_expect("show port stats %d" % txportid, "testpmd> ")
> - pre_rxpkt = dts.regexp(out, "TX-packets: ([0-9]+)")
> -
> - # send one packet with the portid MAC address
> - self.whitelist_send_packet(portid, self.dest)
> - out = self.dut.send_expect("show port stats %d" % txportid, "testpmd> ")
> - cur_rxpkt = dts.regexp(out, "TX-packets: ([0-9]+)")
> - # check the packet increase
> - self.verify(int(cur_rxpkt) == int(pre_rxpkt) + self.frames_to_send,
> - "Packet has not been received on default address")
> - # send one packet to a different MAC address
> - # new_mac = self.dut.get_mac_address(portid)
> - self.whitelist_send_packet(portid, fake_mac_addr)
> -
> - pre_rxpkt = cur_rxpkt
> - out = self.dut.send_expect("show port stats %d" % txportid, "testpmd> ")
> - cur_rxpkt = dts.regexp(out, "TX-packets: ([0-9]+)")
> -
> - # check the packet DO NOT increase
> - self.verify(int(cur_rxpkt) == int(pre_rxpkt),
> - "Packet has been received on a new MAC address that has not been added yet")
> - # add the different MAC address
> - out = self.dut.send_expect("mac_addr add %d" % portid + " %s" % fake_mac_addr, "testpmd>")
> -
> - # send again one packet to a different MAC address
> - self.whitelist_send_packet(portid, fake_mac_addr)
> -
> - pre_rxpkt = cur_rxpkt
> - out = self.dut.send_expect("show port stats %d" % txportid, "testpmd> ")
> - cur_rxpkt = dts.regexp(out, "TX-packets: ([0-9]+)")
> -
> - # check the packet increase
> - self.verify(int(cur_rxpkt) == int(pre_rxpkt) + self.frames_to_send,
> - "Packet has not been received on a new MAC address that has been added to the port")
> -
> - # remove the fake MAC address
> - out = self.dut.send_expect("mac_addr remove %d" % portid + " %s" % fake_mac_addr, "testpmd>")
> -
> - # send again one packet to a different MAC address
> - self.whitelist_send_packet(portid, fake_mac_addr)
> -
> - pre_rxpkt = cur_rxpkt
> - out = self.dut.send_expect("show port stats %d" % txportid, "testpmd> ")
> - cur_rxpkt = dts.regexp(out, "TX-packets: ([0-9]+)")
> -
> - # check the packet increase
> - self.verify(int(cur_rxpkt) == int(pre_rxpkt),
> - "Packet has been received on a new MAC address that has been removed from the port")
> - self.dut.send_expect("stop", "testpmd> ")
> -
> - def test_whitelist_invalid_addresses(self):
> - """
> - Invalid operation:
> - Add NULL MAC should not be added
> - Remove using MAC will be failed
> - Add Same MAC twice will be failed
> - Add more than MAX number will be failed
> - """
> - portid = self.dutPorts[0]
> - fake_mac_addr = "00:00:00:00:00:00"
> -
> - # add an address with all zeroes to the port (-EINVAL)
> - out = self.dut.send_expect("mac_addr add %d" % portid + " %s" % fake_mac_addr, "testpmd>")
> - self.verify("Invalid argument" in out, "Added a NULL MAC address")
> -
> - # remove the default MAC address (-EADDRINUSE)
> - out = self.dut.send_expect("mac_addr remove %d" % portid + " %s" % self.dest, "testpmd>")
> - self.verify("Address already in use" in out, "default address removed")
> -
> - # add same address 2 times
> - fake_mac_addr = "00:00:00:00:00:01"
> - out = self.dut.send_expect("mac_addr add %d" % portid + " %s" % fake_mac_addr, "testpmd>")
> - out = self.dut.send_expect("mac_addr add %d" % portid + " %s" % fake_mac_addr, "testpmd>")
> - self.verify("error" not in out, "added 2 times the same address with an error")
> -
> - # add 1 address more that max number
> - i = 0
> - base_addr = "01:00:00:00:00:"
> - while i <= int(self.max_mac_addr):
> - new_addr = base_addr + "%0.2X" % i
> - out = self.dut.send_expect("mac_addr add %d" % portid + " %s" % new_addr, "testpmd>")
> - i = i + 1
> -
> - self.verify("No space left on device" in out, "added 1 address more than max MAC addresses")
> -
> - def tear_down(self):
> - """
> - Run after each test case.
> - Nothing to do.
> - """
> - pass
> -
> - def tear_down_all(self):
> - """
> - Run after each test suite.
> - """
> - self.dut.send_expect("quit", "# ", 10)
prev parent reply other threads:[~2015-11-05 9:26 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-05 6:53 yongjie
2015-11-05 9:27 ` Liu, Yong [this message]
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=563B210A.1000509@intel.com \
--to=yong.liu@intel.com \
--cc=dts@dpdk.org \
--cc=yongjiex.gu@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).