[dts] [PATCH V1] tests/external_memory_auto_test

Tu, Lijuan lijuan.tu at intel.com
Sat Dec 22 12:06:48 CET 2018


Format error:
Applying: tests/external_memory_auto_test
.git/rebase-apply/patch:72: trailing whitespace.

.git/rebase-apply/patch:151: trailing whitespace.

.git/rebase-apply/patch:181: new blank line at EOF.
+
warning: 3 lines add whitespace errors.

More comments inline

> -----Original Message-----
> From: dts [mailto:dts-bounces at dpdk.org] On Behalf Of Wu,ChangqingX
> Sent: Thursday, December 20, 2018 1:22 PM
> To: dts at dpdk.org
> Cc: Wu, ChangqingX <changqingx.wu at intel.com>
> Subject: [dts] [PATCH V1] tests/external_memory_auto_test
> 
> add new auto testsuite script
> 
> Signed-off-by: Wu,ChangqingX <changqingx.wu at intel.com>
> ---
>  tests/TestSuite_external_memory.py | 170
> +++++++++++++++++++++++++++++
>  1 file changed, 170 insertions(+)
>  create mode 100644 tests/TestSuite_external_memory.py
> 
> diff --git a/tests/TestSuite_external_memory.py
> b/tests/TestSuite_external_memory.py
> new file mode 100644
> index 0000000..e62e47d
> --- /dev/null
> +++ b/tests/TestSuite_external_memory.py
> @@ -0,0 +1,170 @@
> +# BSD LICENSE
> +#
> +# Copyright(c) 2010-2016 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 external memory.
> +"""
> +
> +import string
> +import time
> +import re
> +import utils
> +from test_case import TestCase
> +
> +
> +class TestExternalMemory(TestCase):
> +    def set_up_all(self):
> +        """
> +        Run at the start of each test suite.
> +        """
> +
> +        self.dut_ports = self.dut.get_ports(self.nic)
> +        self.verify(len(self.dut_ports) >= 2, "Insufficient ports")
> +        cores = self.dut.get_core_list("1S/4C/1T")
> +        self.coremask = utils.create_mask(cores)
> +
> +    def set_up(self):
> +        """
> +        Run before each test case.
> +        """
> +        pass
> +
> +    def insmod_modprobe(self,modename=''):
> +        """
> +        Insmod modProbe before run test case
> +        """
> +        if modename == "igb_uio":
> +            self.dut.send_expect("modprobe uio", "#", 10)
> +            out = self.dut.send_expect("lsmod | grep igb_uio", "#")
> +            if "igb_uio" in out:
> +                self.dut.send_expect("rmmod -f igb_uio", "#", 10)
> +            self.dut.send_expect("insmod ./" + self.target +
> + "/kmod/igb_uio.ko", "#", 10)
> +
> +            out = self.dut.send_expect("lsmod | grep igb_uio", "#")
> +            assert ("igb_uio" in out), "Failed to insmod igb_uio"
> +
> +            self.dut.bind_interfaces_linux(driver="igb_uio")
> +
> +        if modename == "vfio-pci":
> +            self.dut.send_expect("rmmod vfio_pci", "#", 10)
> +            self.dut.send_expect("rmmod vfio_iommu_type1", "#", 10)
> +            self.dut.send_expect("rmmod vfio", "#", 10)
> +            self.dut.send_expect("modprobe vfio", "#", 10)
> +            self.dut.send_expect("modprobe vfio_pci", "#", 10)
> +            out = self.dut.send_expect("lsmod | grep
> vfio_iommu_type1", "#")
> +            assert ("vfio_pci" in out), "Failed to insmod vfio_pci"
> +
> +            self.dut.bind_interfaces_linux(driver="vfio-pci")
> +
> +    def test_IGB_UIO_xmem(self):
> +        """
> +        Verifier IGB_UIO and anonymous memory allocation
> +        """
> +        self.insmod_modprobe(modename="igb_uio")
> +        cmd = "./%s/app/testpmd -c %s -n 4 -- --mp-alloc=xmem
> + -i"%(self.target,self.coremask)
> +
> +        self.dut.send_expect(cmd,"testpmd>",60)
> +        self.verifier_result()
> +
> +    def test_IGB_UIO_xmemhuage(self):
> +        """
> +        Verifier IGB_UIO and anonymous hugepage memory allocation
> +        """
> +        self.insmod_modprobe(modename="igb_uio")
> +
> +        cmd = "./%s/app/testpmd -c %s -n 4 -- --mp-alloc=xmemhuge
> + -i"%(self.target,self.coremask)
> +
> +        self.dut.send_expect(cmd,"testpmd>",60)
> +        self.verifier_result()
> +
> +    def test_VFIO_PCI_xmem(self):
> +        """
> +        Verifier VFIO_PCI and anonymous memory allocation
> +        """
> +        self.insmod_modprobe(modename="vfio-pci")
> +
> +        cmd = "./%s/app/testpmd -c %s -n 4 -- --mp-alloc=xmem
> -i"%(self.target,self.coremask)
> +        self.dut.send_expect(cmd,"testpmd>",60)
> +
> +        self.verifier_result()
> +
> +    def test_VFIO_PCI_xmemhuge(self):
> +        """
> +        Verifier VFIO and anonymous hugepage memory allocation
> +        """
> +        self.insmod_modprobe(modename="vfio-pci")
> +        cmd = "./%s/app/testpmd -c %s -n 4 -- --mp-alloc=xmemhuge
> -i"%(self.target,self.coremask)
> +        self.dut.send_expect(cmd,"testpmd>",60)
> +
> +        self.verifier_result()
> +
> +    def verifier_result(self):
> +        self.dut.send_expect("start", "testpmd>",10)
> +        self.scapy_send_packet(100)
> +        out = self.dut.send_expect("stop", "testpmd>", 10)
> +
> +        p = re.compile(r'\d+')
> +        result = p.findall(out)
> +        amount = 100 * len(self.dut_ports)
> +        self.verify(str(amount) in result, "Wrong: can't get correct
> + package")
> +
> +        self.dut.send_expect("quit", "#", 10)
> +
> +        self.dut.unbind_interfaces_linux(self.dut_ports)
[Lijuan] this will cause the dut don't bind to any driver, and destroy the original status, please keep dut bind to the specific driver as configured while your test suite done.
Furthermore, if verify failed, the unbind code won't be executed. 
BTW, If your tests changed any original status, please resume them.
> +
> +    def scapy_send_packet(self, nu):
> +        """
> +        Send a packet to port
> +        """
> +        for i in range(len(self.dut_ports)):
> +            txport = self.tester.get_local_port(self.dut_ports[i])
> +            mac = self.dut.get_mac_address(self.dut_ports[i])
> +            txItf = self.tester.get_interface(txport)
> +            self.tester.scapy_append(
> +                'sendp([Ether(dst="%s")/IP()/UDP()/Raw(\'X\'*18)],
> iface="%s",count=%s)' % (mac, txItf, nu))
> +            self.tester.scapy_execute()
> +
> +    def tear_down(self):
> +        """
> +        Run after each test case.
> +        """
> +        self.dut.kill_all()
> +        time.sleep(2)
> +        pass
> +
> +    def tear_down_all(self):
> +        """
> +        Run after each test suite.
> +        """
> +        pass
> +
> --
> 2.17.2



More information about the dts mailing list