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 733DFC3C4 for ; Fri, 23 Oct 2015 03:01:19 +0200 (CEST) Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga101.jf.intel.com with ESMTP; 22 Oct 2015 18:01:17 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.20,185,1444719600"; d="scan'208";a="586345825" Received: from stv-crb-56.sh.intel.com (HELO [10.239.128.116]) ([10.239.128.116]) by FMSMGA003.fm.intel.com with ESMTP; 22 Oct 2015 18:01:16 -0700 Message-ID: <56298767.9090607@intel.com> Date: Fri, 23 Oct 2015 09:03:35 +0800 From: "Liu, Yong" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.5.0 MIME-Version: 1.0 To: yongjie , dts@dpdk.org References: <1445502141-18394-1-git-send-email-yongjiex.gu@intel.com> In-Reply-To: <1445502141-18394-1-git-send-email-yongjiex.gu@intel.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [dts] [PATCH] add testsuite coremask 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: Fri, 23 Oct 2015 01:01:20 -0000 Applied, thanks. On 10/22/2015 04:22 PM, yongjie wrote: > From: Gu yongjie > > > > This test will launch application "test" with different core mask(individual,all_cores,big,wrong), > and verify that whether the "test" respond correctly. > > Signed-off-by: Gu yongjie > --- > tests/TestSuite_coremask.py | 176 +++++++++++++++++++++++++++++++++++++++++++ > 1 files changed, 176 insertions(+), 0 deletions(-) > create mode 100644 tests/TestSuite_coremask.py > > diff --git a/tests/TestSuite_coremask.py b/tests/TestSuite_coremask.py > new file mode 100644 > index 0000000..d1cc6e3 > --- /dev/null > +++ b/tests/TestSuite_coremask.py > @@ -0,0 +1,176 @@ > +# > + > +""" > +DPDK Test suite. > + > +Test coremask parsing in DPDK. > + > +""" > + > +import dts > + > +from exception import VerifyFailure > +from test_case import TestCase > + > +# > +# > +# Test class. > +# > + > +command_line = """./%s/app/test -c %s -n %d""" > + > + > +class TestCoremask(TestCase): > + > + # > + # > + # > + # Test cases. > + # > + > + def set_up_all(self): > + """ > + Run at the start of each test suite. > + > + Coremask Prerequisites. > + """ > + > + self.port_mask = dts.create_mask(self.dut.get_ports(self.nic)) > + self.mem_channel = self.dut.get_memory_channels() > + > + self.all_cores = self.dut.get_core_list("all") > + > + def set_up(self): > + """ > + Run before each test case. > + """ > + pass > + > + def test_individual_coremask(self): > + """ > + Check coremask parsing for all the available cores one by one. > + """ > + > + for core in self.all_cores: > + > + core_mask = dts.create_mask([core]) > + > + command = command_line % (self.target, core_mask, > + self.mem_channel) > + > + out = self.dut.send_expect(command, "RTE>>", 10) > + > + self.verify("EAL: Detected lcore %d as core" % core in out, > + "Core %d not detected" % core) > + > + self.verify("EAL: Master lcore %d is ready" % core in out, > + "Core %d not ready" % core) > + > + self.dut.send_expect("quit", "# ", 10) > + > + def test_all_cores_coremask(self): > + """ > + Check coremask parsing for all the cores at once. > + """ > + > + core_mask = dts.create_mask(self.all_cores) > + > + command = command_line % (self.target, core_mask, self.mem_channel) > + > + out = self.dut.send_expect(command, "RTE>>", 10) > + > + self.verify("EAL: Master lcore 0 is ready" in out, > + "Core 0 not ready") > + > + self.verify("EAL: Detected lcore 0 as core" in out, > + "Core 0 not detected") > + > + for core in self.all_cores[1:]: > + self.verify("EAL: lcore %d is ready" % core in out, > + "Core %d not ready" % core) > + > + self.verify("EAL: Detected lcore %d as core" % core in out, > + "Core %d not detected" % core) > + > + self.dut.send_expect("quit", "# ", 10) > + > + def test_big_coremask(self): > + """ > + Check coremask parsing for more cores than available. > + """ > + > + command_line = """./%s/app/test -c %s -n %d|tee out""" > + > + # Default big coremask value 128 > + big_coremask_size = 128 > + > + try: > + out = self.dut.send_expect("cat config/defconfig_%s" % self.target, "]# ", 10) > + start_position = out.find('CONFIG_RTE_MAX_LCORE=') > + > + if start_position > -1: > + end_position = out.find('\n', start_position) > + big_coremask_size = int(out[start_position + 21:end_position]) > + > + print "Detected CONFIG_RTE_MAX_LCORE=%d" % big_coremask_size > + except: > + print "Using default big coremask %d" % big_coremask_size > + > + # Create a extremely big coremask > + big_coremask = "0x" > + for _ in range(0, big_coremask_size, 4): > + big_coremask += "F" > + > + command = command_line % (self.target, big_coremask, self.mem_channel) > + try: > + self.dut.send_expect(command, "RTE>>", 10) > + except: > + out = self.dut.send_expect("cat out", "# ") > + > + self.verify("EAL: invalid coremask" in out, > + "Small core mask set") > + > + self.verify("EAL: Detected lcore 0 as core" in out, > + "Core 0 not detected") > + > + for core in self.all_cores[1:]: > + > + self.verify("EAL: Detected lcore %d as core" % core in out, > + "Core %d not detected" % core) > + > + self.dut.send_expect("quit", "# ", 10) > + > + def test_wrong_coremask(self): > + """ > + Check coremask parsing for wrong coremasks. > + """ > + > + wrong_coremasks = ["GARBAGE", "0xJF", "0xFJF", "0xFFJ", > + "0xJ11", "0x1J1", "0x11J", > + "JF", "FJF", "FFJ", > + "J11", "1J1", "11J", > + "jf", "fjf", "ffj", > + "FF0x", "ff0x", "", "0x", "0"] > + > + for coremask in wrong_coremasks: > + > + command = command_line % (self.target, coremask, self.mem_channel) > + try: > + out = self.dut.send_expect(command, "# ", 5) > + self.verify("EAL: invalid coremask" in out, > + "Wrong core mask (%s) accepted" % coremask) > + except: > + self.dut.send_expect("quit", "# ", 5) > + raise VerifyFailure("Wrong core mask (%s) accepted" % coremask) > + > + def tear_down(self): > + """ > + Run after each test case. > + """ > + self.dut.kill_all() > + > + def tear_down_all(self): > + """ > + Run after each test suite. > + """ > + pass