From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id D19BEA052A; Tue, 10 Nov 2020 07:24:07 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id C80D4BC76; Tue, 10 Nov 2020 07:24:06 +0100 (CET) Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by dpdk.org (Postfix) with ESMTP id 32FDE69A4 for ; Tue, 10 Nov 2020 07:24:04 +0100 (CET) IronPort-SDR: wymL/xzTBGMYtCM27F5vCjPmyRPeFj/E5X1aorWzeVcAZW2FcHzE4ULASsIB6lR5tVq2lgljxx nO0DATS3D/4w== X-IronPort-AV: E=McAfee;i="6000,8403,9800"; a="149203860" X-IronPort-AV: E=Sophos;i="5.77,465,1596524400"; d="scan'208";a="149203860" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Nov 2020 22:24:03 -0800 IronPort-SDR: r6xuLQexU4mpNgyU+PYYhFsbavDsAk8l3BbHAMRvTw9O1banxa5G+Py14WxUygC1BY4pCq5sgp lzvG3AUUPE6A== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.77,465,1596524400"; d="scan'208";a="529660580" Received: from dpdk-moyufen06.sh.intel.com ([10.67.116.208]) by fmsmga006.fm.intel.com with ESMTP; 09 Nov 2020 22:24:02 -0800 From: yufengmx To: dts@dpdk.org, hailinx.xu@intel.com Cc: yufengmx Date: Tue, 10 Nov 2020 14:18:58 +0800 Message-Id: <20201110061858.5525-4-yufengx.mo@intel.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20201110061858.5525-1-yufengx.mo@intel.com> References: <20201110061858.5525-1-yufengx.mo@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dts] [PATCH V6 3/3] iavf_flexible_descriptor: upload 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: , Errors-To: dts-bounces@dpdk.org Sender: "dts" upload iavf_flexible_descriptor suite. Signed-off-by: yufengmx --- tests/TestSuite_iavf_flexible_descriptor.py | 246 ++++++++++++++++++++ 1 file changed, 246 insertions(+) create mode 100644 tests/TestSuite_iavf_flexible_descriptor.py diff --git a/tests/TestSuite_iavf_flexible_descriptor.py b/tests/TestSuite_iavf_flexible_descriptor.py new file mode 100644 index 0000000..69f38bf --- /dev/null +++ b/tests/TestSuite_iavf_flexible_descriptor.py @@ -0,0 +1,246 @@ +# Copyright (c) <2020> 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. + + +import time +import traceback + + +from test_case import TestCase +from flexible_common import FlexibleRxdBase + + +class TestIavfFlexibleDescriptor(TestCase, FlexibleRxdBase): + + def preset_compilation(self): + """ + Modify the dpdk code. + """ + cmds = [ + "cd " + self.dut.base_dir, + "cp ./app/test-pmd/util.c .", + r"""sed -i "/if dpdk_conf.has('RTE_NET_IXGBE')/i\if dpdk_conf.has('RTE_NET_ICE')\n\tdeps += ['net_ice', 'net_iavf']\nendif" app/test-pmd/meson.build""", + "sed -i '/#include /a\#include ' app/test-pmd/util.c", + "sed -i '/if (ol_flags & PKT_RX_RSS_HASH)/i\ rte_pmd_ifd_dump_proto_xtr_metadata(mb);' app/test-pmd/util.c", + ] + [self.dut.send_expect(cmd, "#", 15, alt_session=True) for cmd in cmds] + self.dut.build_install_dpdk(self.dut.target) + + def restore_compilation(self): + """ + Resume editing operation. + """ + cmds = [ + "cd " + self.dut.base_dir, + "cp ./util.c ./app/test-pmd/", + "sed -i '/pmd_iavf/d' app/test-pmd/meson.build", + "rm -rf ./util.c", + ] + [self.dut.send_expect(cmd, "#", 15, alt_session=True) for cmd in cmds] + self.dut.build_install_dpdk(self.dut.target) + + def create_vf(self): + # vf relevant content + dut_index = 0 + used_dut_port = self.dut_ports[dut_index] + self.dut.send_expect('modprobe vfio-pci', '#') + # bind pf to kernel + for port in self.dut_ports: + netdev = self.dut.ports_info[port]['port'] + netdev.bind_driver(driver=self.kdriver) + # set vf assign method and vf driver + vf_driver = 'vfio-pci' + # generate 2 VFs on PF + self.dut.generate_sriov_vfs_by_port( + used_dut_port, 1, driver=self.kdriver) + pf0_intf = self.dut.ports_info[self.dut_ports[dut_index]]['intf'] + vf_mac = "00:11:22:33:44:55" + self.dut.send_expect( + 'ip link set {} vf 0 mac {}'.format(pf0_intf, vf_mac), '#') + sriov_vf0 = self.dut.ports_info[used_dut_port]['vfs_port'][0] + sriov_vf0.bind_driver(vf_driver) + return sriov_vf0, vf_mac + + def destroy_vf(self): + try: + port_id = 0 + self.dut.destroy_sriov_vfs_by_port(port_id) + port_obj = self.dut.ports_info[port_id]['port'] + port_obj.bind_driver(self.drivername) + except Exception as e: + self.logger.info(traceback.format_exc()) + + def set_up_all(self): + """ + run at the start of each test suite. + """ + support_nics = [ + "columbiaville_25g", + "columbiaville_100g", + "foxville", + ] + self.verify(self.nic in support_nics, + "flexible rxd only supports CVL NIC.") + self.dut_ports = self.dut.get_ports(self.nic) + self.verify(len(self.dut_ports) >= 1, "Insufficient ports for testing") + self.preset_compilation() + self.sriov_vf0, vf_mac = self.create_vf() + self.init_base(self.sriov_vf0.pci, vf_mac, "iavf") + + def tear_down_all(self): + """ + Run after each test suite. + """ + self.destroy_vf() + self.restore_compilation() + + def set_up(self): + """ + Run before each test case. + """ + pass + + def tear_down(self): + """ + Run after each test case. + """ + self.close_testpmd() + time.sleep(2) + self.dut.kill_all() + + def test_check_single_VLAN_fields_in_RXD_8021Q(self): + """ + Check single VLAN fields in RXD (802.1Q) + """ + self.check_single_VLAN_fields_in_RXD_8021Q() + + def test_check_single_VLAN_fields_in_RXD_8021ad(self): + """ + Check single VLAN fields in RXD (802.1ad) + """ + self.check_single_VLAN_fields_in_RXD_8021ad() + + def test_check_double_VLAN_fields_in_RXD_8021Q_1_VLAN_tag(self): + """ + Check double VLAN fields in RXD (802.1Q) only 1 VLAN tag + """ + self.check_double_VLAN_fields_in_RXD_8021Q_1_VLAN_tag() + + def test_check_double_VLAN_fields_in_RXD_8021Q_2_VLAN_tag(self): + """ + Check double VLAN fields in RXD (802.1Q) 2 VLAN tags + """ + self.check_double_VLAN_fields_in_RXD_8021Q_2_VLAN_tag() + + def test_check_double_VLAN_fields_in_RXD_8021ad(self): + """ + Check double VLAN fields in RXD (802.1ad) + """ + self.check_double_VLAN_fields_in_RXD_8021ad() + + def test_check_IPv4_fields_in_RXD(self): + """ + Check IPv4 fields in RXD + """ + self.check_IPv4_fields_in_RXD() + + def test_check_IPv6_fields_in_RXD(self): + """ + Check IPv6 fields in RXD + """ + self.check_IPv6_fields_in_RXD() + + def test_check_IPv6_flow_field_in_RXD(self): + """ + Check IPv6 flow field in RXD + """ + self.check_IPv6_flow_field_in_RXD() + + def test_check_TCP_fields_in_IPv4_in_RXD(self): + """ + Check TCP fields in IPv4 in RXD + """ + self.check_TCP_fields_in_IPv4_in_RXD() + + def test_check_TCP_fields_in_IPv6_in_RXD(self): + """ + Check TCP fields in IPv6 in RXD + """ + self.check_TCP_fields_in_IPv6_in_RXD() + + def test_check_IPv4_IPv6_TCP_fields_in_RXD_on_specific_queues(self): + """ + Check IPv4, IPv6, TCP fields in RXD on specific queues + """ + self.check_IPv4_IPv6_TCP_fields_in_RXD_on_specific_queues() + + def test_check_testpmd_use_different_parameters(self): + """ + Check testpmd use different parameters start + """ + self.check_testpmd_use_different_parameters() + + def test_check_ip_offset_of_ip(self): + """ + Check ip offset of ip + """ + self.check_ip_offset_of_ip() + + def test_check_ip_offset_with_vlan(self): + """ + check ip offset with vlan + """ + self.check_ip_offset_with_vlan() + + def test_check_ip_offset_with_2_vlan_tag(self): + """ + check offset with 2 vlan tag + """ + self.check_ip_offset_with_2_vlan_tag() + + def test_check_ip_offset_with_multi_MPLS(self): + """ + check ip offset with multi MPLS + """ + self.check_ip_offset_with_multi_MPLS() + + def test_check_ip_offset_with_multi_MPLS_with_vlan_tag(self): + """ + check ip offset with multi MPLS with vlan tag + """ + self.check_ip_offset_with_multi_MPLS_with_vlan_tag() + + def test_check_ip_offset_with_multi_MPLS_with_2_vlan_tag(self): + """ + check ip offset with multi MPLS with 2 vlan tag + """ + self.check_ip_offset_with_multi_MPLS_with_2_vlan_tag() -- 2.21.0