From: "Juraj Linkeš" <juraj.linkes@pantheon.tech>
To: thomas@monjalon.net, david.marchand@redhat.com,
Honnappa.Nagarahalli@arm.com, ohilyard@iol.unh.edu,
lijuan.tu@intel.com
Cc: dev@dpdk.org, "Juraj Linkeš" <juraj.linkes@pantheon.tech>
Subject: [RFC PATCH v1 13/13] dts: merge DTS framework/settings.py to DPDK
Date: Wed, 6 Apr 2022 15:07:42 +0000 [thread overview]
Message-ID: <20220406150742.2914878-14-juraj.linkes@pantheon.tech> (raw)
In-Reply-To: <20220406150742.2914878-1-juraj.linkes@pantheon.tech>
---
dts/framework/settings.py | 391 ++++++++++++++++++++++++++++++++++++++
1 file changed, 391 insertions(+)
create mode 100644 dts/framework/settings.py
diff --git a/dts/framework/settings.py b/dts/framework/settings.py
new file mode 100644
index 0000000000..14aac9e01a
--- /dev/null
+++ b/dts/framework/settings.py
@@ -0,0 +1,391 @@
+# BSD LICENSE
+#
+# Copyright(c) 2010-2021 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.
+"""
+Folders for framework running environment.
+"""
+import os
+import re
+import socket
+import sys
+
+FOLDERS = {
+ "Framework": "framework",
+ "Testscripts": "tests",
+ "Configuration": "conf",
+ "Depends": "dep",
+ "Output": "output",
+ "NicDriver": "nics",
+}
+
+"""
+Nics and its identifiers supported by the framework.
+"""
+NICS = {
+ "kawela": "8086:10e8",
+ "kawela_2": "8086:10c9",
+ "kawela_4": "8086:1526",
+ "bartonhills": "8086:150e",
+ "powerville": "8086:1521",
+ "powerville_vf": "8086:1520",
+ "ophir": "8086:105e",
+ "niantic": "8086:10fb",
+ "niantic_vf": "8086:10ed",
+ "ironpond": "8086:151c",
+ "twinpond": "8086:1528",
+ "twinpond_vf": "8086:1515",
+ "twinville": "8086:1512",
+ "sageville": "8086:1563",
+ "sageville_vf": "8086:1565",
+ "sagepond": "8086:15ad",
+ "sagepond_vf": "8086:15a8",
+ "magnolia_park": "8086:15ce",
+ "hartwell": "8086:10d3",
+ "82545EM": "8086:100f",
+ "82540EM": "8086:100e",
+ "springville": "8086:1533",
+ "springfountain": "8086:154a",
+ "virtio": "1af4:1000",
+ "avoton": "8086:1f41",
+ "avoton2c5": "8086:1f45",
+ "I217V": "8086:153b",
+ "I217LM": "8086:153a",
+ "I218V": "8086:1559",
+ "I218LM": "8086:155a",
+ "fortville_eagle": "8086:1572",
+ "fortville_spirit": "8086:1583",
+ "fortville_spirit_single": "8086:1584",
+ "fortpark": "8086:374c",
+ "fortpark_1g": "8086:37d1",
+ "fortpark_TLV": "8086:37d0",
+ "fortpark_BASE-T": "8086:37d2",
+ "fortpark_TLV_vf": "8086:37cd",
+ "fvl10g_vf": "8086:154c",
+ "ConnectX3_MT4103": "15b3:1007",
+ "ConnectX4_MT4115": "15b3:1013",
+ "ConnectX4_LX_MT4117": "15b3:1015",
+ "ConnectX5_MT4119": "15b3:1017",
+ "ConnectX5_MT4121": "15b3:1019",
+ "fortville_25g": "8086:158b",
+ "cavium_a034": "177d:a034",
+ "cavium_0011": "177d:0011",
+ "fortvile_bdw_de": "8086:15ac",
+ "cavium_a063": "177d:a063",
+ "cavium_a064": "177d:a064",
+ "columbiaville_100g": "8086:1592",
+ "columbiaville_25g": "8086:1593",
+ "columbiaville_25gx2": "8086:159b",
+ "columbiaville_vf": "8086:1889",
+ "fastlinq_ql45000": "1077:1656",
+ "fastlinq_ql45000_vf": "1077:1664",
+ "fastlinq_ql41000": "1077:8070",
+ "fastlinq_ql41000_vf": "1077:8090",
+ "carlsville": "8086:15ff",
+ "hi1822": "19e5:1822",
+ "foxville": "8086:15f2",
+ "brcm_57414": "14e4:16d7",
+ "brcm_P2100G": "14e4:1750",
+}
+
+DRIVERS = {
+ "kawela": "igb",
+ "kawela_2": "igb",
+ "kawela_4": "igb",
+ "bartonhills": "igb",
+ "powerville": "igb",
+ "powerville_vf": "igbvf",
+ "ophir": "igb",
+ "niantic": "ixgbe",
+ "niantic_vf": "ixgbevf",
+ "ironpond": "ixgbe",
+ "twinpond": "ixgbe",
+ "twinpond_vf": "ixgbevf",
+ "twinville": "ixgbe",
+ "sageville": "ixgbe",
+ "sageville_vf": "ixgbevf",
+ "sagepond": "ixgbe",
+ "sagepond_vf": "ixgbevf",
+ "magnolia_park": "ixgbe",
+ "hartwell": "igb",
+ "82545EM": "igb",
+ "82540EM": "igb",
+ "springville": "igb",
+ "springfountain": "ixgbe",
+ "virtio": "virtio-pci",
+ "avoton": "igb",
+ "avoton2c5": "igb",
+ "I217V": "igb",
+ "I217LM": "igb",
+ "I218V": "igb",
+ "I218LM": "igb",
+ "fortville_eagle": "i40e",
+ "fortville_spirit": "i40e",
+ "fortville_spirit_single": "i40e",
+ "fortpark": "i40e",
+ "fortpark_1g": "i40e",
+ "fortpark_TLV": "i40e",
+ "fortpark_BASE-T": "i40e",
+ "fortpark_TLV_vf": "iavf",
+ "fvl10g_vf": "iavf",
+ "ConnectX3_MT4103": "mlx4_core",
+ "ConnectX4_MT4115": "mlx5_core",
+ "ConnectX4_LX_MT4117": "mlx5_core",
+ "ConnectX5_MT4119": "mlx5_core",
+ "ConnectX5_MT4121": "mlx5_core",
+ "fortville_25g": "i40e",
+ "cavium_a034": "thunder-nicvf",
+ "cavium_0011": "thunder-nicvf",
+ "fortvile_bdw_de": "ixgbe",
+ "cavium_a063": "octeontx2-nicpf",
+ "cavium_a064": "octeontx2-nicvf",
+ "columbiaville_100g": "ice",
+ "columbiaville_25g": "ice",
+ "columbiaville_25gx2": "ice",
+ "columbiaville_vf": "iavf",
+ "fastlinq_ql45000": "qede",
+ "fastlinq_ql41000": "qede",
+ "fastlinq_ql45000_vf": "qede",
+ "fastlinq_ql41000_vf": "qede",
+ "carlsville": "i40e",
+ "hi1822": "hinic",
+ "foxville": "igc",
+ "brcm_57414": "bnxt_en",
+ "brcm_P2100G": "bnxt_en",
+}
+
+"""
+List used to translate scapy packets into Ixia TCL commands.
+"""
+SCAPY2IXIA = ["Ether", "Dot1Q", "IP", "IPv6", "TCP", "UDP", "SCTP"]
+
+USERNAME = "root"
+
+# A user used to test functionality for a non-root user
+UNPRIVILEGED_USERNAME = "dtsunprivilegedtester"
+
+"""
+Helpful header sizes.
+"""
+HEADER_SIZE = {
+ "eth": 18,
+ "ip": 20,
+ "ipv6": 40,
+ "udp": 8,
+ "tcp": 20,
+ "vxlan": 8,
+}
+"""
+dpdk send protocol packet size.
+"""
+PROTOCOL_PACKET_SIZE = {
+ "lldp": [110, 100],
+}
+
+"""
+Default session timeout.
+"""
+TIMEOUT = 15
+
+
+"""
+Global macro for dts.
+"""
+PKTGEN = "pktgen"
+PKTGEN_DPDK = "dpdk"
+PKTGEN_TREX = "trex"
+PKTGEN_IXIA = "ixia"
+PKTGEN_IXIA_NETWORK = "ixia_network"
+PKTGEN_GRP = frozenset([PKTGEN_DPDK, PKTGEN_TREX, PKTGEN_IXIA, PKTGEN_IXIA_NETWORK])
+"""
+The log name seperater.
+"""
+LOG_NAME_SEP = "."
+
+"""
+Section name for suite level configuration
+"""
+SUITE_SECTION_NAME = "suite"
+
+"""
+DTS global environment variable
+"""
+DTS_ENV_PAT = r"DTS_*"
+PERF_SETTING = "DTS_PERF_ONLY"
+FUNC_SETTING = "DTS_FUNC_ONLY"
+HOST_DRIVER_SETTING = "DTS_HOST_DRIVER"
+HOST_DRIVER_MODE_SETTING = "DTS_HOST_DRIVER_MODE"
+HOST_NIC_SETTING = "DTS_HOST_NIC"
+HOST_SHARED_LIB_SETTING = "DTS_HOST_SHARED_LIB"
+HOST_SHARED_LIB_PATH = "DTS_HOST_SHARED_LIB_PATH"
+DEBUG_SETTING = "DTS_DEBUG_ENABLE"
+DEBUG_CASE_SETTING = "DTS_DEBUGCASE_ENABLE"
+DPDK_RXMODE_SETTING = "DTS_DPDK_RXMODE"
+DTS_ERROR_ENV = "DTS_RUNNING_ERROR"
+DTS_CFG_FOLDER = "DTS_CFG_FOLDER"
+DTS_PARALLEL_SETTING = "DTS_PARALLEL_ENABLE"
+UPDATE_EXPECTED = "DTS_UPDATE_EXPECTED_ENABLE"
+
+
+"""
+DTS global error table
+"""
+DTS_ERR_TBL = {
+ "GENERIC_ERR": 1,
+ "DPDK_BUILD_ERR": 2,
+ "DUT_SETUP_ERR": 3,
+ "TESTER_SETUP_ERR": 4,
+ "SUITE_SETUP_ERR": 5,
+ "SUITE_EXECUTE_ERR": 6,
+ "PARALLEL_EXECUTE_ERR": 7,
+}
+
+
+def get_nic_name(type):
+ """
+ strip nic code name by nic type
+ """
+ for name, nic_type in list(NICS.items()):
+ if nic_type == type:
+ return name
+ return "Unknown"
+
+
+def get_nic_driver(pci_id):
+ """
+ Return linux driver for specified pci device
+ """
+ try:
+ driver = DRIVERS[{NICS[key]: key for key in NICS}[pci_id]]
+ except Exception as e:
+ driver = None
+ return driver
+
+
+def get_netdev(crb, pci):
+ for port in crb.ports_info:
+ if pci == port["pci"]:
+ return port["port"]
+ if "vfs_port" in list(port.keys()):
+ for vf in port["vfs_port"]:
+ if pci == vf.pci:
+ return vf
+
+ return None
+
+
+def get_host_ip(address):
+ ip_reg = r"\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}"
+ m = re.match(ip_reg, address)
+ if m:
+ return address
+ else:
+ try:
+ result = socket.gethostbyaddr(address)
+ return result[2][0]
+ except:
+ print("couldn't look up %s" % address)
+ return ""
+
+
+def save_global_setting(key, value):
+ """
+ Save DTS global setting
+ """
+ if re.match(DTS_ENV_PAT, key):
+ env_key = key
+ else:
+ env_key = "DTS_" + key
+
+ os.environ[env_key] = value
+
+
+def load_global_setting(key):
+ """
+ Load DTS global setting
+ """
+ if re.match(DTS_ENV_PAT, key):
+ env_key = key
+ else:
+ env_key = "DTS_" + key
+
+ if env_key in list(os.environ.keys()):
+ return os.environ[env_key]
+ else:
+ return ""
+
+
+def report_error(error):
+ """
+ Report error when error occurred
+ """
+ if error in list(DTS_ERR_TBL.keys()):
+ os.environ[DTS_ERROR_ENV] = error
+ else:
+ os.environ[DTS_ERROR_ENV] = "GENERIC_ERR"
+
+
+def exit_error():
+ """
+ Set system exit value when error occurred
+ """
+ if DTS_ERROR_ENV in list(os.environ.keys()):
+ ret_val = DTS_ERR_TBL[os.environ[DTS_ERROR_ENV]]
+ sys.exit(ret_val)
+ else:
+ sys.exit(0)
+
+
+def accepted_nic(pci_id):
+ """
+ Return True if the pci_id is a known NIC card in the settings file and if
+ it is selected in the execution file, otherwise it returns False.
+ """
+ nic = load_global_setting(HOST_NIC_SETTING)
+ if pci_id not in list(NICS.values()):
+ return False
+
+ if nic == "any":
+ return True
+
+ else:
+ if pci_id == NICS[nic]:
+ return True
+
+ return False
+
+
+"""
+The root path of framework configs.
+"""
+dts_cfg_folder = load_global_setting(DTS_CFG_FOLDER)
+if dts_cfg_folder != "":
+ CONFIG_ROOT_PATH = dts_cfg_folder
+else:
+ CONFIG_ROOT_PATH = "./conf"
--
2.20.1
prev parent reply other threads:[~2022-04-06 15:09 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-04-06 15:07 [RFC PATCH v1 00/13] merge DTS conf files " Juraj Linkeš
2022-04-06 15:07 ` [RFC PATCH v1 01/13] dts: merge DTS conf/crbs.cfg " Juraj Linkeš
2022-04-06 15:07 ` [RFC PATCH v1 02/13] dts: merge DTS conf/pktgen.cfg " Juraj Linkeš
2022-04-06 15:07 ` [RFC PATCH v1 03/13] dts: merge DTS conf/ports.cfg " Juraj Linkeš
2022-04-06 15:07 ` [RFC PATCH v1 04/13] dts: merge DTS conf/suite_sample.cfg " Juraj Linkeš
2022-04-06 15:07 ` [RFC PATCH v1 05/13] dts: merge DTS conf/test_case_checklist.json " Juraj Linkeš
2022-04-06 15:07 ` [RFC PATCH v1 06/13] dts: merge DTS conf/test_case_supportlist.json " Juraj Linkeš
2022-04-06 15:07 ` [RFC PATCH v1 07/13] dts: merge DTS execution.cfg " Juraj Linkeš
2022-04-06 15:07 ` [RFC PATCH v1 08/13] dts: merge DTS executions/execution.cfg " Juraj Linkeš
2022-04-06 15:07 ` [RFC PATCH v1 09/13] dts: merge DTS executions/execution_FVL.cfg " Juraj Linkeš
2022-04-06 15:07 ` [RFC PATCH v1 10/13] dts: merge DTS executions/execution_fm10k.cfg " Juraj Linkeš
2022-04-06 15:07 ` [RFC PATCH v1 11/13] dts: merge DTS executions/execution_rxmode.cfg " Juraj Linkeš
2022-04-06 15:07 ` [RFC PATCH v1 12/13] dts: merge DTS executions/execution_smoke.cfg " Juraj Linkeš
2022-04-06 15:07 ` Juraj Linkeš [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=20220406150742.2914878-14-juraj.linkes@pantheon.tech \
--to=juraj.linkes@pantheon.tech \
--cc=Honnappa.Nagarahalli@arm.com \
--cc=david.marchand@redhat.com \
--cc=dev@dpdk.org \
--cc=lijuan.tu@intel.com \
--cc=ohilyard@iol.unh.edu \
--cc=thomas@monjalon.net \
/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).