[PATCH v3] dts: resolve trex driver binding issue
Koushik Bhargav Nimoji
knimoji at iol.unh.edu
Fri Oct 23 23:04:15 CEST 2026
Previously, users were unable to run both functional and performance
test suites in a single DTS run due to driver binding conflicts.
This patch separates traffic generator setup by test suite, in
order to allow running functional and performance test suites in
the same DTS run.
Signed-off-by: Koushik Bhargav Nimoji <knimoji at iol.unh.edu>
---
v2:
*Added TRex TG teardown to re-bind ports
to kernel driver
v3:
*Added topology-based port binding upon
TRex setup to preserve internal port
config state, removed all manual bindings
---
dts/api/test_suite.py | 40 +++++++++++++++++++
dts/framework/test_run.py | 24 ++++++++---
dts/framework/testbed_model/linux_session.py | 6 ++-
.../testbed_model/traffic_generator/trex.py | 1 +
dts/tests/TestSuite_blocklist.py | 3 +-
dts/tests/TestSuite_buffer_scatter.py | 3 +-
dts/tests/TestSuite_checksum_offload.py | 3 +-
dts/tests/TestSuite_cryptodev_latency.py | 3 +-
dts/tests/TestSuite_cryptodev_throughput.py | 3 +-
dts/tests/TestSuite_dual_vlan.py | 3 +-
dts/tests/TestSuite_dynamic_config.py | 3 +-
dts/tests/TestSuite_dynamic_queue_conf.py | 3 +-
dts/tests/TestSuite_flow_offload.py | 3 +-
dts/tests/TestSuite_hello_world.py | 3 +-
dts/tests/TestSuite_l2fwd.py | 3 +-
dts/tests/TestSuite_mac_filter.py | 3 +-
dts/tests/TestSuite_mtu.py | 3 +-
dts/tests/TestSuite_packet_capture.py | 3 +-
dts/tests/TestSuite_port_control.py | 3 +-
...stSuite_port_restart_config_persistency.py | 3 +-
dts/tests/TestSuite_port_stats.py | 3 +-
dts/tests/TestSuite_promisc_support.py | 3 +-
dts/tests/TestSuite_qinq.py | 3 +-
dts/tests/TestSuite_queue_toggle.py | 3 +-
dts/tests/TestSuite_rss.py | 3 +-
dts/tests/TestSuite_rx_split.py | 3 +-
dts/tests/TestSuite_rx_tx_offload.py | 3 +-
.../TestSuite_single_core_forward_perf.py | 3 +-
dts/tests/TestSuite_smoke_tests.py | 3 +-
dts/tests/TestSuite_softnic.py | 3 +-
dts/tests/TestSuite_speed_capabilities.py | 3 +-
dts/tests/TestSuite_unified_packet.py | 3 +-
dts/tests/TestSuite_virtio_forward.py | 3 +-
dts/tests/TestSuite_vlan.py | 3 +-
34 files changed, 123 insertions(+), 38 deletions(-)
diff --git a/dts/api/test_suite.py b/dts/api/test_suite.py
index c30d447135..11027344d0 100644
--- a/dts/api/test_suite.py
+++ b/dts/api/test_suite.py
@@ -44,6 +44,17 @@ class BaseConfig(FrozenModel):
"""Base for a custom test suite configuration."""
+class TestSuiteType(Enum):
+ """Enum to specify test suite type."""
+
+ FUNC = auto()
+ PERF = auto()
+ CRYPTO = auto()
+
+
+TestSuiteClassType = TypeVar("TestSuiteClassType", bound=type["TestSuite"])
+
+
class TestSuite(TestProtocol):
"""The base class with building blocks needed by most test cases.
@@ -84,6 +95,30 @@ class TestSuite(TestProtocol):
_sut_ip_address_egress: Union[IPv4Interface, IPv6Interface]
_tg_ip_address_ingress: Union[IPv4Interface, IPv6Interface]
_tg_ip_address_egress: Union[IPv4Interface, IPv6Interface]
+ test_suite_type: ClassVar[TestSuiteType]
+
+ @classmethod
+ def make_decorator(
+ cls, test_suite_type: TestSuiteType
+ ) -> Callable[[TestSuiteClassType], TestSuiteClassType]:
+ """Creates a decorator for test suites.
+
+ The decorator casts the decorated function as :class:`TestSuite`,
+ sets it as `testsuite_type` and initializes a variable to
+ determine the type of test suite.
+
+ Args:
+ test_suite_type: A functional, performance, or cryptodev test suite.
+
+ Returns:
+ The decorator of a functional, performance, or cryptodev test suite.
+ """
+
+ def _decorator(test_suite_cls: TestSuiteClassType) -> TestSuiteClassType:
+ test_suite_cls.test_suite_type = test_suite_type
+ return test_suite_cls
+
+ return _decorator
def __init__(self, config: BaseConfig) -> None:
"""Initialize the test suite testbed information and basic configuration.
@@ -269,6 +304,11 @@ def _adjust_addresses(self, packets: list[Packet], expected: bool = False) -> li
return ret_packets
+#: Test suite type decorators
+func_suite: Callable[[Any], type["TestSuite"]] = TestSuite.make_decorator(TestSuiteType.FUNC)
+perf_suite: Callable[[Any], type["TestSuite"]] = TestSuite.make_decorator(TestSuiteType.PERF)
+crypto_suite: Callable[[Any], type["TestSuite"]] = TestSuite.make_decorator(TestSuiteType.CRYPTO)
+
#: The generic type for a method of an instance of TestSuite
TestSuiteMethodType = TypeVar("TestSuiteMethodType", bound=Callable[[TestSuite], None])
diff --git a/dts/framework/test_run.py b/dts/framework/test_run.py
index 210ff25af7..3890606512 100644
--- a/dts/framework/test_run.py
+++ b/dts/framework/test_run.py
@@ -110,7 +110,7 @@
from api.capabilities import LinkTopology
from api.context import Context, init_ctx
from api.exception import InternalError, SkippedTestException, TestCaseVerifyError
-from api.test_suite import BaseConfig, TestCase, TestCaseType, TestSuite
+from api.test_suite import BaseConfig, TestCase, TestCaseType, TestSuite, TestSuiteType
from api.testbed_model.capability import (
Capability,
get_supported_capabilities,
@@ -375,11 +375,6 @@ def next(self) -> State | None:
ctx.topology.bind_cryptodevs("dpdk")
ctx.topology.configure_ports("sut", "dpdk")
- if ctx.func_tg and ctx.topology.type is not LinkTopology.NO_LINK:
- ctx.func_tg.setup(ctx.topology)
- if ctx.perf_tg and ctx.topology.type is not LinkTopology.NO_LINK:
- ctx.perf_tg.setup(ctx.topology)
-
self.result.ports = [
port.to_dict() for port in ctx.topology.sut_ports + ctx.topology.tg_ports
]
@@ -512,6 +507,23 @@ def before(self) -> None:
super().before()
self.logger.set_custom_log_file(self.test_suite.name)
+ ctx = self.test_run.ctx
+ test_suite_type = self.test_suite.test_suite_type
+ if (
+ ctx.topology.type is not LinkTopology.NO_LINK
+ and test_suite_type is not TestSuiteType.CRYPTO
+ ):
+ if test_suite_type == TestSuiteType.FUNC:
+ required_tg, other_tg = ctx.func_tg, ctx.perf_tg
+ else:
+ required_tg, other_tg = ctx.perf_tg, ctx.func_tg
+
+ if other_tg and other_tg.is_setup:
+ other_tg.teardown()
+
+ if required_tg and not required_tg.is_setup:
+ required_tg.setup(ctx.topology)
+
@property
def description(self) -> str:
"""State description."""
diff --git a/dts/framework/testbed_model/linux_session.py b/dts/framework/testbed_model/linux_session.py
index 8cc0d09d01..fe3f1a8fc3 100644
--- a/dts/framework/testbed_model/linux_session.py
+++ b/dts/framework/testbed_model/linux_session.py
@@ -278,7 +278,8 @@ def bind_ports_to_driver(self, ports: list[Port], driver_name: str) -> None:
verify=True,
)
- del self._lshw_net_info
+ if self._lshw_net_info:
+ del self._lshw_net_info
def bring_up_link(self, ports: Iterable[Port]) -> None:
"""Overrides :meth:`~.os_session.OSSession.bring_up_link`."""
@@ -287,7 +288,8 @@ def bring_up_link(self, ports: Iterable[Port]) -> None:
f"ip link set dev {port.logical_name} up", privileged=True, verify=True
)
- del self._lshw_net_info
+ if self._lshw_net_info:
+ del self._lshw_net_info
def set_interface_link_up(self, name: str) -> None:
"""Overrides :meth:`~.os_session.OSSession.set_interface_link_up`."""
diff --git a/dts/framework/testbed_model/traffic_generator/trex.py b/dts/framework/testbed_model/traffic_generator/trex.py
index 7ce1d40d79..055c22e121 100644
--- a/dts/framework/testbed_model/traffic_generator/trex.py
+++ b/dts/framework/testbed_model/traffic_generator/trex.py
@@ -110,6 +110,7 @@ def __init__(self, tg_node: Node, config: TrexTrafficGeneratorConfig) -> None:
def setup(self, topology: Topology):
"""Initialize and start a TRex server process."""
super().setup(topology)
+ topology.configure_ports("tg", "dpdk")
self._topology = topology
self._shell = PythonShell(self._tg_node, "TRex-client", privileged=True)
diff --git a/dts/tests/TestSuite_blocklist.py b/dts/tests/TestSuite_blocklist.py
index 31e69c0de9..e32f31b383 100644
--- a/dts/tests/TestSuite_blocklist.py
+++ b/dts/tests/TestSuite_blocklist.py
@@ -11,11 +11,12 @@
requires_link_topology,
)
from api.test import verify
-from api.test_suite import TestSuite, func_test
+from api.test_suite import TestSuite, func_suite, func_test
from api.testbed_model.port import Port
from api.testpmd import TestPmd
+ at func_suite
class TestBlocklist(TestSuite):
"""DPDK device blocklisting test suite."""
diff --git a/dts/tests/TestSuite_buffer_scatter.py b/dts/tests/TestSuite_buffer_scatter.py
index cd1a52ad5e..adc8e41700 100644
--- a/dts/tests/TestSuite_buffer_scatter.py
+++ b/dts/tests/TestSuite_buffer_scatter.py
@@ -28,13 +28,14 @@
)
from api.packet import send_packet_and_capture
from api.test import verify
-from api.test_suite import TestSuite, func_test
+from api.test_suite import TestSuite, func_suite, func_test
from api.testpmd import TestPmd
from api.testpmd.config import SimpleForwardingModes
@requires_nic_capability(NicCapability.PHYSICAL_FUNCTION)
@requires_nic_capability(NicCapability.PORT_RX_OFFLOAD_SCATTER)
+ at func_suite
class TestBufferScatter(TestSuite):
"""DPDK PMD packet scattering test suite.
diff --git a/dts/tests/TestSuite_checksum_offload.py b/dts/tests/TestSuite_checksum_offload.py
index a2ea13991b..8c16706f1b 100644
--- a/dts/tests/TestSuite_checksum_offload.py
+++ b/dts/tests/TestSuite_checksum_offload.py
@@ -25,7 +25,7 @@
)
from api.packet import send_packet_and_capture
from api.test import verify
-from api.test_suite import TestSuite, func_test
+from api.test_suite import TestSuite, func_suite, func_test
from api.testpmd import TestPmd
from api.testpmd.config import SimpleForwardingModes
from api.testpmd.types import ChecksumOffloadOptions, PacketOffloadFlag
@@ -34,6 +34,7 @@
@requires_nic_capability(NicCapability.PORT_RX_OFFLOAD_IPV4_CKSUM)
@requires_nic_capability(NicCapability.PORT_RX_OFFLOAD_UDP_CKSUM)
@requires_nic_capability(NicCapability.PORT_RX_OFFLOAD_TCP_CKSUM)
+ at func_suite
class TestChecksumOffload(TestSuite):
"""Checksum offload test suite.
diff --git a/dts/tests/TestSuite_cryptodev_latency.py b/dts/tests/TestSuite_cryptodev_latency.py
index 444a5b282c..bf3b9b5761 100644
--- a/dts/tests/TestSuite_cryptodev_latency.py
+++ b/dts/tests/TestSuite_cryptodev_latency.py
@@ -31,7 +31,7 @@
CryptodevResults,
)
from api.test import skip, verify
-from api.test_suite import BaseConfig, TestSuite, crypto_test
+from api.test_suite import BaseConfig, TestSuite, crypto_suite, crypto_test
from api.testbed_model.virtual_device import VirtualDevice
config_list: list[dict[str, int | float | str]] = [
@@ -73,6 +73,7 @@ class Config(BaseConfig):
@requires_link_topology(LinkTopology.NO_LINK)
+ at crypto_suite
class TestCryptodevLatency(TestSuite):
"""DPDK Crypto Device Testing Suite."""
diff --git a/dts/tests/TestSuite_cryptodev_throughput.py b/dts/tests/TestSuite_cryptodev_throughput.py
index 59f64f2cd7..7a364a1dc4 100644
--- a/dts/tests/TestSuite_cryptodev_throughput.py
+++ b/dts/tests/TestSuite_cryptodev_throughput.py
@@ -31,7 +31,7 @@
CryptodevResults,
)
from api.test import skip, verify
-from api.test_suite import BaseConfig, TestSuite, crypto_test
+from api.test_suite import BaseConfig, TestSuite, crypto_suite, crypto_test
from api.testbed_model.virtual_device import VirtualDevice
config_list: list[dict[str, int | float | str]] = [
@@ -74,6 +74,7 @@ class Config(BaseConfig):
@requires_link_topology(LinkTopology.NO_LINK)
+ at crypto_suite
class TestCryptodevThroughput(TestSuite):
"""DPDK Crypto Device Testing Suite."""
diff --git a/dts/tests/TestSuite_dual_vlan.py b/dts/tests/TestSuite_dual_vlan.py
index f3347a6d52..6038899c5c 100644
--- a/dts/tests/TestSuite_dual_vlan.py
+++ b/dts/tests/TestSuite_dual_vlan.py
@@ -21,11 +21,12 @@
from api.capabilities import LinkTopology, requires_link_topology
from api.packet import send_packet_and_capture
from api.test import verify
-from api.test_suite import TestSuite, func_test
+from api.test_suite import TestSuite, func_suite, func_test
from api.testpmd import TestPmd
from api.testpmd.config import SimpleForwardingModes
+ at func_suite
class TestDualVlan(TestSuite):
"""DPDK Dual VLAN test suite.
diff --git a/dts/tests/TestSuite_dynamic_config.py b/dts/tests/TestSuite_dynamic_config.py
index b9e2c30da1..e071e63a6d 100644
--- a/dts/tests/TestSuite_dynamic_config.py
+++ b/dts/tests/TestSuite_dynamic_config.py
@@ -27,13 +27,14 @@
)
from api.packet import send_packet_and_capture
from api.test import verify
-from api.test_suite import TestSuite, func_test
+from api.test_suite import TestSuite, func_suite, func_test
from api.testpmd import TestPmd
from api.testpmd.config import SimpleForwardingModes
@requires_nic_capability(NicCapability.PHYSICAL_FUNCTION)
@requires_link_topology(LinkTopology.TWO_LINKS)
+ at func_suite
class TestDynamicConfig(TestSuite):
"""Dynamic config suite.
diff --git a/dts/tests/TestSuite_dynamic_queue_conf.py b/dts/tests/TestSuite_dynamic_queue_conf.py
index 24584c7d60..bc11d1ce1f 100644
--- a/dts/tests/TestSuite_dynamic_queue_conf.py
+++ b/dts/tests/TestSuite_dynamic_queue_conf.py
@@ -38,7 +38,7 @@
from api.exception import InteractiveCommandExecutionError
from api.packet import send_packets
from api.test import fail, verify
-from api.test_suite import TestSuite, func_test
+from api.test_suite import TestSuite, func_suite, func_test
from api.testpmd import TestPmd
from api.testpmd.config import PortTopology, SimpleForwardingModes
@@ -121,6 +121,7 @@ def _wrap(self: "TestDynamicQueueConf", is_rx_testing: bool) -> None:
@requires_nic_capability(NicCapability.PHYSICAL_FUNCTION)
+ at func_suite
class TestDynamicQueueConf(TestSuite):
"""DPDK dynamic queue configuration test suite.
diff --git a/dts/tests/TestSuite_flow_offload.py b/dts/tests/TestSuite_flow_offload.py
index 09384b1983..624ff93b17 100644
--- a/dts/tests/TestSuite_flow_offload.py
+++ b/dts/tests/TestSuite_flow_offload.py
@@ -28,7 +28,7 @@
)
from api.packet import send_packet_and_capture
from api.test import fail, log, verify
-from api.test_suite import TestSuite, func_test
+from api.test_suite import TestSuite, func_suite, func_test
from api.testpmd import TestPmd
from api.testpmd.types import FlowRule
@@ -402,6 +402,7 @@ def generate(
@requires_nic_capability(NicCapability.FLOW_CTRL)
+ at func_suite
class TestFlowOffload(TestSuite):
"""Flow offload test suite.
diff --git a/dts/tests/TestSuite_hello_world.py b/dts/tests/TestSuite_hello_world.py
index cd62eb8f3e..9bc555aa08 100644
--- a/dts/tests/TestSuite_hello_world.py
+++ b/dts/tests/TestSuite_hello_world.py
@@ -9,7 +9,7 @@
"""
from api.test import log
-from api.test_suite import BaseConfig, TestSuite, func_test
+from api.test_suite import BaseConfig, TestSuite, func_suite, func_test
from api.testpmd import TestPmd
@@ -20,6 +20,7 @@ class Config(BaseConfig):
msg: str = "Hello World!"
+ at func_suite
class TestHelloWorld(TestSuite):
"""Hello World test suite. One test case, which starts and stops a testpmd session."""
diff --git a/dts/tests/TestSuite_l2fwd.py b/dts/tests/TestSuite_l2fwd.py
index f237821a04..b987efbebf 100644
--- a/dts/tests/TestSuite_l2fwd.py
+++ b/dts/tests/TestSuite_l2fwd.py
@@ -19,7 +19,7 @@
match_all_packets,
send_packets_and_capture,
)
-from api.test_suite import TestSuite, func_test
+from api.test_suite import TestSuite, func_suite, func_test
from api.testbed_model.cpu import LogicalCoreCount
from api.testpmd import TestPmd
from api.testpmd.config import EthPeer, SimpleForwardingModes
@@ -28,6 +28,7 @@
@requires_nic_capability(NicCapability.PHYSICAL_FUNCTION)
@requires_link_topology(LinkTopology.TWO_LINKS)
+ at func_suite
class TestL2fwd(TestSuite):
"""L2 forwarding test suite."""
diff --git a/dts/tests/TestSuite_mac_filter.py b/dts/tests/TestSuite_mac_filter.py
index eb1413f336..f244203593 100644
--- a/dts/tests/TestSuite_mac_filter.py
+++ b/dts/tests/TestSuite_mac_filter.py
@@ -26,11 +26,12 @@
from api.exception import InteractiveCommandExecutionError
from api.packet import send_packet_and_capture
from api.test import fail, verify
-from api.test_suite import TestSuite, func_test
+from api.test_suite import TestSuite, func_suite, func_test
from api.testpmd import TestPmd
@requires_nic_capability(NicCapability.PHYSICAL_FUNCTION)
+ at func_suite
class TestMacFilter(TestSuite):
"""Mac address allowlist filtering test suite.
diff --git a/dts/tests/TestSuite_mtu.py b/dts/tests/TestSuite_mtu.py
index c264db299e..f834be1818 100644
--- a/dts/tests/TestSuite_mtu.py
+++ b/dts/tests/TestSuite_mtu.py
@@ -23,7 +23,7 @@
)
from api.packet import send_packet_and_capture
from api.test import verify
-from api.test_suite import TestSuite, func_test
+from api.test_suite import TestSuite, func_suite, func_test
from api.testpmd import TestPmd
STANDARD_FRAME = 1518 # --max-pkt-len will subtract l2 information at a minimum of 18 bytes.
@@ -37,6 +37,7 @@
@requires_nic_capability(NicCapability.PHYSICAL_FUNCTION)
+ at func_suite
class TestMtu(TestSuite):
"""DPDK PMD jumbo frames and MTU update test suite.
diff --git a/dts/tests/TestSuite_packet_capture.py b/dts/tests/TestSuite_packet_capture.py
index 07bfabb30b..f319d99ede 100644
--- a/dts/tests/TestSuite_packet_capture.py
+++ b/dts/tests/TestSuite_packet_capture.py
@@ -37,7 +37,7 @@
)
from api.params import Params
from api.test import verify
-from api.test_suite import TestSuite, func_test
+from api.test_suite import TestSuite, func_suite, func_test
from api.testbed_model.cpu import LogicalCoreList
from api.testbed_model.traffic_generator.capturing_traffic_generator import PacketFilteringConfig
from api.testpmd import TestPmd
@@ -65,6 +65,7 @@ class DumpcapParams(Params):
@requires_link_topology(LinkTopology.TWO_LINKS)
+ at func_suite
class TestPacketCapture(TestSuite):
"""Packet Capture TestSuite.
diff --git a/dts/tests/TestSuite_port_control.py b/dts/tests/TestSuite_port_control.py
index c2f2de3493..2aa613bc25 100644
--- a/dts/tests/TestSuite_port_control.py
+++ b/dts/tests/TestSuite_port_control.py
@@ -18,12 +18,13 @@
)
from api.packet import send_packets_and_capture
from api.test import verify
-from api.test_suite import TestSuite, func_test
+from api.test_suite import TestSuite, func_suite, func_test
from api.testpmd import TestPmd
from api.testpmd.config import SimpleForwardingModes
@requires_nic_capability(NicCapability.PHYSICAL_FUNCTION)
+ at func_suite
class TestPortControl(TestSuite):
"""DPDK Port Control Testing Suite."""
diff --git a/dts/tests/TestSuite_port_restart_config_persistency.py b/dts/tests/TestSuite_port_restart_config_persistency.py
index 88df35d33c..626baa2097 100644
--- a/dts/tests/TestSuite_port_restart_config_persistency.py
+++ b/dts/tests/TestSuite_port_restart_config_persistency.py
@@ -14,7 +14,7 @@
requires_nic_capability,
)
from api.test import verify
-from api.test_suite import TestSuite, func_test
+from api.test_suite import TestSuite, func_suite, func_test
from api.testpmd import TestPmd
from api.testpmd.types import TestPmdPortFlowCtrl
@@ -23,6 +23,7 @@
ALTERNATIVE_MAC_ADDRESS: str = "42:A6:B7:9E:B4:81"
+ at func_suite
class TestPortRestartConfigPersistency(TestSuite):
"""Port config persistency test suite."""
diff --git a/dts/tests/TestSuite_port_stats.py b/dts/tests/TestSuite_port_stats.py
index 0328c6718c..e2980d8d61 100644
--- a/dts/tests/TestSuite_port_stats.py
+++ b/dts/tests/TestSuite_port_stats.py
@@ -25,7 +25,7 @@
)
from api.packet import send_packet_and_capture
from api.test import verify
-from api.test_suite import TestSuite, func_test
+from api.test_suite import TestSuite, func_suite, func_test
from api.testpmd import TestPmd
from api.testpmd.config import SimpleForwardingModes
from api.testpmd.types import RtePTypes, TestPmdVerbosePacket
@@ -33,6 +33,7 @@
@requires_nic_capability(NicCapability.PHYSICAL_FUNCTION)
@requires_link_topology(LinkTopology.TWO_LINKS)
+ at func_suite
class TestPortStats(TestSuite):
"""DPDK Port statistics testing suite.
diff --git a/dts/tests/TestSuite_promisc_support.py b/dts/tests/TestSuite_promisc_support.py
index c59c8c6078..adbdf77631 100644
--- a/dts/tests/TestSuite_promisc_support.py
+++ b/dts/tests/TestSuite_promisc_support.py
@@ -21,11 +21,12 @@
send_packets_and_capture,
)
from api.test import verify
-from api.test_suite import TestSuite, func_test
+from api.test_suite import TestSuite, func_suite, func_test
from api.testpmd import TestPmd
@requires_nic_capability(NicCapability.PHYSICAL_FUNCTION)
+ at func_suite
class TestPromiscSupport(TestSuite):
"""Promiscuous mode support test suite."""
diff --git a/dts/tests/TestSuite_qinq.py b/dts/tests/TestSuite_qinq.py
index 5dde37d4db..67884a113c 100644
--- a/dts/tests/TestSuite_qinq.py
+++ b/dts/tests/TestSuite_qinq.py
@@ -18,10 +18,11 @@
from api.capabilities import NicCapability, requires_nic_capability
from api.packet import send_packet_and_capture
from api.test import log, verify
-from api.test_suite import TestSuite, func_test
+from api.test_suite import TestSuite, func_suite, func_test
from api.testpmd import TestPmd
+ at func_suite
class TestQinq(TestSuite):
"""QinQ test suite.
diff --git a/dts/tests/TestSuite_queue_toggle.py b/dts/tests/TestSuite_queue_toggle.py
index a9ea356b22..0ad362d233 100644
--- a/dts/tests/TestSuite_queue_toggle.py
+++ b/dts/tests/TestSuite_queue_toggle.py
@@ -24,7 +24,7 @@
)
from api.packet import send_packet_and_capture
from api.test import verify
-from api.test_suite import TestSuite, func_test
+from api.test_suite import TestSuite, func_suite, func_test
from api.testpmd import TestPmd
from api.testpmd.config import SimpleForwardingModes
@@ -32,6 +32,7 @@
@requires_link_topology(LinkTopology.TWO_LINKS)
@requires_nic_capability(NicCapability.RUNTIME_RX_QUEUE_SETUP)
@requires_nic_capability(NicCapability.RUNTIME_TX_QUEUE_SETUP)
+ at func_suite
class TestQueueToggle(TestSuite):
"""DPDK Queue start/stop test suite.
diff --git a/dts/tests/TestSuite_rss.py b/dts/tests/TestSuite_rss.py
index b538e93af9..289c69d225 100644
--- a/dts/tests/TestSuite_rss.py
+++ b/dts/tests/TestSuite_rss.py
@@ -23,7 +23,7 @@
from api.exception import InteractiveCommandExecutionError
from api.packet import send_packets_and_capture
from api.test import verify
-from api.test_suite import BaseConfig, TestSuite, func_test
+from api.test_suite import BaseConfig, TestSuite, func_suite, func_test
from api.testpmd import TestPmd
from api.testpmd.config import SimpleForwardingModes
from api.testpmd.types import (
@@ -55,6 +55,7 @@ class HashAlgorithm(StrEnum):
@requires_link_topology(LinkTopology.ONE_LINK)
@requires_nic_capability(NicCapability.PORT_RX_OFFLOAD_RSS_HASH)
+ at func_suite
class TestRss(TestSuite):
"""RSS test suite."""
diff --git a/dts/tests/TestSuite_rx_split.py b/dts/tests/TestSuite_rx_split.py
index 3b3e4cd620..eac377e93e 100644
--- a/dts/tests/TestSuite_rx_split.py
+++ b/dts/tests/TestSuite_rx_split.py
@@ -21,7 +21,7 @@
from api.exception import InteractiveCommandExecutionError
from api.packet import adjust_addresses, send_packet_and_capture
from api.test import fail, verify
-from api.test_suite import TestSuite, func_test
+from api.test_suite import TestSuite, func_suite, func_test
from api.testpmd import TestPmd
from api.testpmd.config import SimpleForwardingModes
from api.testpmd.types import RxOffloadCapability, TxOffloadCapability
@@ -35,6 +35,7 @@
@requires_nic_capability(NicCapability.PORT_RX_OFFLOAD_BUFFER_SPLIT)
@requires_nic_capability(NicCapability.SELECTIVE_RX)
+ at func_suite
class TestRxSplit(TestSuite):
"""Rx split test suite.
diff --git a/dts/tests/TestSuite_rx_tx_offload.py b/dts/tests/TestSuite_rx_tx_offload.py
index c8d24baaae..cbf9a249b4 100644
--- a/dts/tests/TestSuite_rx_tx_offload.py
+++ b/dts/tests/TestSuite_rx_tx_offload.py
@@ -13,7 +13,7 @@
requires_nic_capability,
)
from api.test import verify
-from api.test_suite import TestSuite, func_test
+from api.test_suite import TestSuite, func_suite, func_test
from api.testpmd import TestPmd
from api.testpmd.types import (
OffloadConfiguration,
@@ -22,6 +22,7 @@
@requires_link_topology(LinkTopology.ONE_LINK)
+ at func_suite
class TestRxTxOffload(TestSuite):
"""RX/TX offload test suite."""
diff --git a/dts/tests/TestSuite_single_core_forward_perf.py b/dts/tests/TestSuite_single_core_forward_perf.py
index 4b22c5d091..c96411cf18 100644
--- a/dts/tests/TestSuite_single_core_forward_perf.py
+++ b/dts/tests/TestSuite_single_core_forward_perf.py
@@ -23,7 +23,7 @@
from api.packet import assess_performance_by_packet
from api.params.types import TestPmdParamsDict
from api.test import verify, write_performance_json
-from api.test_suite import BaseConfig, TestSuite, perf_test
+from api.test_suite import BaseConfig, TestSuite, perf_suite, perf_test
from api.testpmd import TestPmd
from api.testpmd.config import RXRingParams, TXRingParams
@@ -42,6 +42,7 @@ class Config(BaseConfig):
delta_tolerance: float = 0.05
+ at perf_suite
@requires_link_topology(LinkTopology.TWO_LINKS)
class TestSingleCoreForwardPerf(TestSuite):
"""Single core forwarding performance test suite."""
diff --git a/dts/tests/TestSuite_smoke_tests.py b/dts/tests/TestSuite_smoke_tests.py
index b3eb325fc0..993620641c 100644
--- a/dts/tests/TestSuite_smoke_tests.py
+++ b/dts/tests/TestSuite_smoke_tests.py
@@ -19,7 +19,7 @@
requires_link_topology,
)
from api.test import verify
-from api.test_suite import TestSuite, func_test
+from api.test_suite import TestSuite, func_suite, func_test
from api.testbed_model.linux_session import LinuxSession
from api.testpmd import TestPmd
from api.utils import REGEX_FOR_PCI_ADDRESS
@@ -28,6 +28,7 @@
@requires_link_topology(LinkTopology.NO_LINK)
+ at func_suite
class TestSmokeTests(TestSuite):
"""DPDK and infrastructure smoke test suite.
diff --git a/dts/tests/TestSuite_softnic.py b/dts/tests/TestSuite_softnic.py
index 05a6d3aa18..f601130d56 100644
--- a/dts/tests/TestSuite_softnic.py
+++ b/dts/tests/TestSuite_softnic.py
@@ -18,7 +18,7 @@
match_all_packets,
send_packets_and_capture,
)
-from api.test_suite import TestSuite, func_test
+from api.test_suite import TestSuite, func_suite, func_test
from api.testbed_model.virtual_device import VirtualDevice
from api.testpmd import TestPmd
from api.testpmd.config import EthPeer
@@ -27,6 +27,7 @@
@requires_nic_capability(NicCapability.PHYSICAL_FUNCTION)
@requires_link_topology(LinkTopology.TWO_LINKS)
+ at func_suite
class TestSoftnic(TestSuite):
"""Softnic test suite."""
diff --git a/dts/tests/TestSuite_speed_capabilities.py b/dts/tests/TestSuite_speed_capabilities.py
index c9b0f74feb..56c0d0a51a 100644
--- a/dts/tests/TestSuite_speed_capabilities.py
+++ b/dts/tests/TestSuite_speed_capabilities.py
@@ -13,7 +13,7 @@
requires_link_topology,
)
from api.test import verify
-from api.test_suite import BaseConfig, TestSuite, func_test
+from api.test_suite import BaseConfig, TestSuite, func_suite, func_test
from api.testpmd import TestPmd
@@ -39,6 +39,7 @@ class Config(BaseConfig):
@requires_link_topology(LinkTopology.ONE_LINK)
+ at func_suite
class TestSpeedCapabilities(TestSuite):
"""Speed capabilities test suite."""
diff --git a/dts/tests/TestSuite_unified_packet.py b/dts/tests/TestSuite_unified_packet.py
index bf3654f0d7..006f124d19 100644
--- a/dts/tests/TestSuite_unified_packet.py
+++ b/dts/tests/TestSuite_unified_packet.py
@@ -25,12 +25,13 @@
)
from api.packet import send_packet_and_capture
from api.test import verify
-from api.test_suite import TestSuite, func_test
+from api.test_suite import TestSuite, func_suite, func_test
from api.testpmd import TestPmd
from api.testpmd.config import SimpleForwardingModes
from api.testpmd.types import RtePTypes, TestPmdVerbosePacket
+ at func_suite
class TestUnifiedPacket(TestSuite):
"""DPDK Unified packet test suite.
diff --git a/dts/tests/TestSuite_virtio_forward.py b/dts/tests/TestSuite_virtio_forward.py
index a52c1a4402..52889a844b 100644
--- a/dts/tests/TestSuite_virtio_forward.py
+++ b/dts/tests/TestSuite_virtio_forward.py
@@ -12,13 +12,14 @@
from api.capabilities import LinkTopology, requires_link_topology
from api.packet import send_packets_and_capture
from api.test import log, verify
-from api.test_suite import TestSuite, func_test
+from api.test_suite import TestSuite, func_suite, func_test
from api.testbed_model.linux_session import LinuxSession
from api.testbed_model.virtual_device import VirtualDevice
from api.testpmd import TestPmd
from api.testpmd.config import PortTopology, SimpleForwardingModes
+ at func_suite
class TestVirtioForward(TestSuite):
"""Virtio forwarding test suite."""
diff --git a/dts/tests/TestSuite_vlan.py b/dts/tests/TestSuite_vlan.py
index 975e87b128..edd93e3487 100644
--- a/dts/tests/TestSuite_vlan.py
+++ b/dts/tests/TestSuite_vlan.py
@@ -23,12 +23,13 @@
)
from api.packet import send_packet_and_capture
from api.test import verify
-from api.test_suite import TestSuite, func_test
+from api.test_suite import TestSuite, func_suite, func_test
from api.testpmd import TestPmd
from api.testpmd.config import SimpleForwardingModes
@requires_nic_capability(NicCapability.PORT_RX_OFFLOAD_VLAN_FILTER)
+ at func_suite
class TestVlan(TestSuite):
"""DPDK VLAN test suite.
--
2.56.0
More information about the dev
mailing list