From patchwork Thu May 27 15:30:47 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Huang, ZhiminX" X-Patchwork-Id: 93462 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id AC490A0546; Thu, 27 May 2021 08:58:42 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 7A88240150; Thu, 27 May 2021 08:58:42 +0200 (CEST) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by mails.dpdk.org (Postfix) with ESMTP id 7DE2040143 for ; Thu, 27 May 2021 08:58:40 +0200 (CEST) IronPort-SDR: zs1sAEtVjs85A22bLRvvN1QiVTOTWH0Jc8zGkxxv/JldzSzANLIIMy97fASZ5nPVQ5XvfpkJ11 AvybHQjXerUw== X-IronPort-AV: E=McAfee;i="6200,9189,9996"; a="266555615" X-IronPort-AV: E=Sophos;i="5.82,334,1613462400"; d="scan'208";a="266555615" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 May 2021 23:58:39 -0700 IronPort-SDR: qaTj26OGndK/UeRtCqWsDVnOkpnqRyH4igcS6a83yu+ZpBksKu+Fj/m0ImahS8QFcWfk3sMYpb F6IXAyXIpETg== X-IronPort-AV: E=Sophos;i="5.82,334,1613462400"; d="scan'208";a="477356333" Received: from unknown (HELO localhost.localdomain) ([10.240.183.103]) by orsmga001-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 May 2021 23:58:38 -0700 From: Zhimin Huang To: dts@dpdk.org Cc: Zhimin Huang Date: Thu, 27 May 2021 23:30:47 +0800 Message-Id: <20210527153047.24627-1-zhiminx.huang@intel.com> X-Mailer: git-send-email 2.17.1 Subject: [dts] [PATCH V2] tests/generic_filter: use flow api replace legancy X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dts-bounces@dpdk.org Sender: "dts" *.use flow api replace legancy filter command Signed-off-by: Zhimin Huang Tested-by: Zhimin Huang --- tests/TestSuite_generic_filter.py | 41 ++++++++++++++++++------------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/tests/TestSuite_generic_filter.py b/tests/TestSuite_generic_filter.py index d4ea8926..9990b234 100644 --- a/tests/TestSuite_generic_filter.py +++ b/tests/TestSuite_generic_filter.py @@ -119,6 +119,12 @@ class TestGeneric_filter(TestCase): """ Run before each test case. """ + if self._suite_result.test_case == "test_128_queues": + self.logger.info('will rebuild dpdk') + self.dut.send_expect( + "sed -i -e 's/#define IXGBE_NONE_MODE_TX_NB_QUEUES 64$/#define IXGBE_NONE_MODE_TX_NB_QUEUES 128/' drivers/net/ixgbe/ixgbe_ethdev.h", + "# ", 30) + self.dut.build_install_dpdk(self.target) pass def filter_send_packet(self, type): @@ -711,8 +717,6 @@ class TestGeneric_filter(TestCase): set_filter_flag = 1 packet_flag = 1 if self.kdriver == "ixgbe": - self.dut.send_expect("sed -i -e 's/#define IXGBE_NONE_MODE_TX_NB_QUEUES 64$/#define IXGBE_NONE_MODE_TX_NB_QUEUES 128/' drivers/net/ixgbe/ixgbe_ethdev.h", "# ",30) - self.dut.build_install_dpdk(self.target) global valports total_mbufs = self.request_mbufs(128) * len(valports) self.pmdout.start_testpmd( @@ -729,7 +733,6 @@ class TestGeneric_filter(TestCase): "vlan set filter off %s" % valports[0], "testpmd> ") self.dut.send_expect( "vlan set filter off %s" % valports[1], "testpmd> ") - frames_to_send = 1 queue = ['64', '127', '128'] for i in [0, 1, 2]: @@ -739,35 +742,34 @@ class TestGeneric_filter(TestCase): if 'Invalid RX queue %s' % (queue[i]) not in out: set_filter_flag = 0 break - out = self.dut.send_expect( - "5tuple_filter %s add dst_ip 2.2.2.5 src_ip 2.2.2.4 dst_port %s src_port 1 protocol 0x06 mask 0x1f tcp_flags 0x0 priority 3 queue %s " % (valports[0], (i + 1), queue[i]), "testpmd> ") - if 'error' not in out: + cmd = "flow create {} ingress pattern eth / ".format( + valports[0]) + "ipv4 dst is 2.2.2.5 src is 2.2.2.4 / tcp dst is {} src is 1 / ".format( + i + 1) + "end actions queue index {} / end".format(queue[i]) + out = self.dut.send_expect(cmd, "testpmd> ") + if 'Invalid argument' not in out: set_filter_flag = 0 break continue else: self.dut.send_expect("set stat_qmap rx %s %s %s" % (valports[0], queue[i], (i + 1)), "testpmd> ") - out = self.dut.send_expect("5tuple_filter %s add dst_ip 2.2.2.5 src_ip 2.2.2.4 dst_port %s src_port 1 protocol 0x06 mask 0x1f tcp_flags 0x0 priority %d queue %s " % ( - valports[0], (i + 1), (3 - i), queue[i]), "testpmd> ") + cmd = "flow create {} ingress pattern eth / ".format( + valports[0]) + "ipv4 dst is 2.2.2.5 src is 2.2.2.4 / tcp dst is {} src is 1 / ".format( + i + 1) + "end actions queue index {} / end".format(queue[i]) + self.dut.send_expect(cmd, "testpmd> ") self.dut.send_expect("start", "testpmd> ", 120) global filters_index filters_index = i self.filter_send_packet("packet") time.sleep(1) out = self.dut.send_expect("stop", "testpmd> ") - cmd = "Stats reg %s RX-packets: ([0-9]+)" % ( - i + 1) - result_scanner = r"%s" % cmd - scanner = re.compile(result_scanner, re.DOTALL) - m = scanner.search(out) - cur_pkt = m.group(1) - if int(cur_pkt) != frames_to_send: + p = re.compile(r"Forward Stats for RX Port= \d+/Queue=(\s?\d+)") + res = p.findall(out) + queues = [int(i) for i in res] + if queues[0] != int(queue[i]): packet_flag = 0 break self.dut.send_expect("quit", "#", timeout=30) - self.dut.send_expect("sed -i -e 's/#define IXGBE_NONE_MODE_TX_NB_QUEUES 128$/#define IXGBE_NONE_MODE_TX_NB_QUEUES 64/' drivers/net/ixgbe/ixgbe_ethdev.h", "# ",30) - self.dut.build_install_dpdk(self.target) self.verify(set_filter_flag == 1, "set filters error") self.verify(packet_flag == 1, "packet pass assert error") else: @@ -853,6 +855,11 @@ class TestGeneric_filter(TestCase): Run after each test case. """ self.dut.kill_all() + if self._suite_result.test_case == "test_128_queues": + self.dut.send_expect( + "sed -i -e 's/#define IXGBE_NONE_MODE_TX_NB_QUEUES 128$/#define IXGBE_NONE_MODE_TX_NB_QUEUES 64/' drivers/net/ixgbe/ixgbe_ethdev.h", + "# ", 30) + self.dut.build_install_dpdk(self.target) def tear_down_all(self): pass