2023-09-13 12:21:49 +00:00
{
"$schema" : "https://json-schema.org/draft-07/schema" ,
"title" : "DTS Config Schema" ,
"definitions" : {
"node_name" : {
"type" : "string" ,
"description" : "A unique identifier for a node"
2025-01-10 11:50:43 +00:00
} ,
"NIC" : {
"type" : "string" ,
"enum" : [
"ALL" ,
"ConnectX3_MT4103" ,
"ConnectX4_LX_MT4117" ,
"ConnectX4_MT4115" ,
"ConnectX5_MT4119" ,
"ConnectX5_MT4121" ,
"I40E_10G-10G_BASE_T_BC" ,
"I40E_10G-10G_BASE_T_X722" ,
"I40E_10G-SFP_X722" ,
"I40E_10G-SFP_XL710" ,
"I40E_10G-X722_A0" ,
"I40E_1G-1G_BASE_T_X722" ,
"I40E_25G-25G_SFP28" ,
"I40E_40G-QSFP_A" ,
"I40E_40G-QSFP_B" ,
"IAVF-ADAPTIVE_VF" ,
"IAVF-VF" ,
"IAVF_10G-X722_VF" ,
"ICE_100G-E810C_QSFP" ,
"ICE_25G-E810C_SFP" ,
"ICE_25G-E810_XXV_SFP" ,
"IGB-I350_VF" ,
"IGB_1G-82540EM" ,
"IGB_1G-82545EM_COPPER" ,
"IGB_1G-82571EB_COPPER" ,
"IGB_1G-82574L" ,
"IGB_1G-82576" ,
"IGB_1G-82576_QUAD_COPPER" ,
"IGB_1G-82576_QUAD_COPPER_ET2" ,
"IGB_1G-82580_COPPER" ,
"IGB_1G-I210_COPPER" ,
"IGB_1G-I350_COPPER" ,
"IGB_1G-I354_SGMII" ,
"IGB_1G-PCH_LPTLP_I218_LM" ,
"IGB_1G-PCH_LPTLP_I218_V" ,
"IGB_1G-PCH_LPT_I217_LM" ,
"IGB_1G-PCH_LPT_I217_V" ,
"IGB_2.5G-I354_BACKPLANE_2_5GBPS" ,
"IGC-I225_LM" ,
"IGC-I226_LM" ,
"IXGBE_10G-82599_SFP" ,
"IXGBE_10G-82599_SFP_SF_QP" ,
"IXGBE_10G-82599_T3_LOM" ,
"IXGBE_10G-82599_VF" ,
"IXGBE_10G-X540T" ,
"IXGBE_10G-X540_VF" ,
"IXGBE_10G-X550EM_A_SFP" ,
"IXGBE_10G-X550EM_X_10G_T" ,
"IXGBE_10G-X550EM_X_SFP" ,
"IXGBE_10G-X550EM_X_VF" ,
"IXGBE_10G-X550T" ,
"IXGBE_10G-X550_VF" ,
"brcm_57414" ,
"brcm_P2100G" ,
"cavium_0011" ,
"cavium_a034" ,
"cavium_a063" ,
"cavium_a064" ,
"fastlinq_ql41000" ,
"fastlinq_ql41000_vf" ,
"fastlinq_ql45000" ,
"fastlinq_ql45000_vf" ,
"hi1822" ,
"virtio"
]
} ,
"ARCH" : {
"type" : "string" ,
"enum" : [
"x86_64" ,
"arm64" ,
"ppc64le"
]
} ,
"OS" : {
"type" : "string" ,
"enum" : [
"linux"
]
} ,
"cpu" : {
"type" : "string" ,
"description" : "Native should be the default on x86" ,
"enum" : [
"native" ,
"armv8a" ,
"dpaa2" ,
"thunderx" ,
"xgene1"
]
} ,
"compiler" : {
"type" : "string" ,
"enum" : [
"gcc" ,
"clang" ,
"icc" ,
"mscv"
]
} ,
"build_target" : {
"type" : "object" ,
"description" : "Targets supported by DTS" ,
"properties" : {
"arch" : {
"type" : "string" ,
"enum" : [
"ALL" ,
"x86_64" ,
"arm64" ,
"ppc64le" ,
"other"
]
} ,
"os" : {
"$ref" : "#/definitions/OS"
} ,
"cpu" : {
"$ref" : "#/definitions/cpu"
} ,
"compiler" : {
"$ref" : "#/definitions/compiler"
} ,
"compiler_wrapper" : {
"type" : "string" ,
"description" : "This will be added before compiler to the CC variable when building DPDK. Optional."
}
} ,
"additionalProperties" : false ,
"required" : [
"arch" ,
"os" ,
"cpu" ,
"compiler"
]
} ,
"hugepages" : {
"type" : "object" ,
"description" : "Optional hugepage configuration. If not specified, hugepages won't be configured and DTS will use system configuration." ,
"properties" : {
"amount" : {
"type" : "integer" ,
"description" : "The amount of hugepages to configure. Hugepage size will be the system default."
} ,
"force_first_numa" : {
"type" : "boolean" ,
"description" : "Set to True to force configuring hugepages on the first NUMA node. Defaults to False."
}
} ,
"additionalProperties" : false ,
"required" : [
"amount"
]
} ,
"mac_address" : {
"type" : "string" ,
"description" : "A MAC address" ,
"pattern" : "^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$"
} ,
"pci_address" : {
"type" : "string" ,
"pattern" : "^[\\da-fA-F]{4}:[\\da-fA-F]{2}:[\\da-fA-F]{2}.\\d:?\\w*$"
} ,
"port_peer_address" : {
"description" : "Peer is a TRex port, and IXIA port or a PCI address" ,
"oneOf" : [
{
"description" : "PCI peer port" ,
"$ref" : "#/definitions/pci_address"
}
]
} ,
"test_suite" : {
"type" : "string" ,
"enum" : [
"hello_world" ,
"os_udp"
]
} ,
"test_target" : {
"type" : "object" ,
"properties" : {
"suite" : {
"$ref" : "#/definitions/test_suite"
} ,
"cases" : {
"type" : "array" ,
"description" : "If specified, only this subset of test suite's test cases will be run. Unknown test cases will be silently ignored." ,
"items" : {
"type" : "string"
} ,
"minimum" : 1
}
} ,
"required" : [
"suite"
] ,
"additionalProperties" : false
2023-09-13 12:21:49 +00:00
}
} ,
"type" : "object" ,
"properties" : {
"nodes" : {
"type" : "array" ,
"items" : {
"type" : "object" ,
"properties" : {
"name" : {
"type" : "string" ,
"description" : "A unique identifier for this node"
} ,
"hostname" : {
"type" : "string" ,
"description" : "A hostname from which the node running DTS can access this node. This can also be an IP address."
} ,
"user" : {
"type" : "string" ,
"description" : "The user to access this node with."
} ,
"password" : {
"type" : "string" ,
"description" : "The password to use on this node. Use only as a last resort. SSH keys are STRONGLY preferred."
2025-01-10 11:50:43 +00:00
} ,
"arch" : {
"$ref" : "#/definitions/ARCH"
} ,
"os" : {
"$ref" : "#/definitions/OS"
} ,
"lcores" : {
"type" : "string" ,
"pattern" : "^(([0-9]+|([0-9]+-[0-9]+))(,([0-9]+|([0-9]+-[0-9]+)))*)?$" ,
"description" : "Optional comma-separated list of logical cores to use, e.g.: 1,2,3,4,5,18-22. Defaults to 1. An empty string means use all lcores."
} ,
"use_first_core" : {
"type" : "boolean" ,
"description" : "Indicate whether DPDK should use the first physical core. It won't be used by default."
} ,
"memory_channels" : {
"type" : "integer" ,
"description" : "How many memory channels to use. Optional, defaults to 1."
} ,
"hugepages" : {
"$ref" : "#/definitions/hugepages"
} ,
"ports" : {
"type" : "array" ,
"items" : {
"type" : "object" ,
"description" : "Each port should be described on both sides of the connection. This makes configuration slightly more verbose but greatly simplifies implementation. If there are inconsistencies, then DTS will not run until that issue is fixed. An example inconsistency would be port 1, node 1 says it is connected to port 1, node 2, but port 1, node 2 says it is connected to port 2, node 1." ,
"properties" : {
"pci" : {
"$ref" : "#/definitions/pci_address" ,
"description" : "The local PCI address of the port"
} ,
"os_driver_for_dpdk" : {
"type" : "string" ,
"description" : "The driver that the kernel should bind this device to for DPDK to use it. (ex: vfio-pci)"
} ,
"os_driver" : {
"type" : "string" ,
"description" : "The driver normally used by this port (ex: i40e)"
} ,
"peer_node" : {
"type" : "string" ,
"description" : "The name of the node the peer port is on"
} ,
"peer_pci" : {
"$ref" : "#/definitions/pci_address" ,
"description" : "The PCI address of the peer port"
}
} ,
"additionalProperties" : false ,
"required" : [
"pci" ,
"os_driver_for_dpdk" ,
"os_driver" ,
"peer_node" ,
"peer_pci"
]
} ,
"minimum" : 1
} ,
"traffic_generator" : {
"oneOf" : [
{
"type" : "object" ,
"description" : "Scapy traffic generator. Used for functional testing." ,
"properties" : {
"type" : {
"type" : "string" ,
"enum" : [
"SCAPY"
]
}
}
}
]
2023-09-13 12:21:49 +00:00
}
} ,
"additionalProperties" : false ,
"required" : [
"name" ,
"hostname" ,
2025-01-10 11:50:43 +00:00
"user" ,
"arch" ,
"os"
2023-09-13 12:21:49 +00:00
]
} ,
"minimum" : 1
} ,
"executions" : {
"type" : "array" ,
"items" : {
"type" : "object" ,
"properties" : {
2025-01-10 11:50:43 +00:00
"build_targets" : {
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/build_target"
} ,
"minimum" : 1
} ,
"perf" : {
"type" : "boolean" ,
"description" : "Enable performance testing."
} ,
"func" : {
"type" : "boolean" ,
"description" : "Enable functional testing."
} ,
"test_suites" : {
"type" : "array" ,
"items" : {
"oneOf" : [
{
"$ref" : "#/definitions/test_suite"
} ,
{
"$ref" : "#/definitions/test_target"
}
]
}
} ,
"skip_smoke_tests" : {
"description" : "Optional field that allows you to skip smoke testing" ,
"type" : "boolean"
} ,
"system_under_test_node" : {
"type" : "object" ,
"properties" : {
"node_name" : {
"$ref" : "#/definitions/node_name"
} ,
"vdevs" : {
"description" : "Optional list of names of vdevs to be used in execution" ,
"type" : "array" ,
"items" : {
"type" : "string"
}
}
} ,
"required" : [
"node_name"
]
} ,
"traffic_generator_node" : {
2023-09-13 12:21:49 +00:00
"$ref" : "#/definitions/node_name"
}
} ,
"additionalProperties" : false ,
"required" : [
2025-01-10 11:50:43 +00:00
"build_targets" ,
"perf" ,
"func" ,
"test_suites" ,
"system_under_test_node" ,
"traffic_generator_node"
2023-09-13 12:21:49 +00:00
]
} ,
"minimum" : 1
}
} ,
"required" : [
"executions" ,
"nodes"
] ,
"additionalProperties" : false
}