[RFC PATCH] dts: resolve trex driver binding issue
Koushik Bhargav Nimoji
knimoji at iol.unh.edu
Thu Oct 22 20:38:44 CEST 2026
Recheck-request: iol-mellanox-Performance
On Tue, Aug 11, 2026 at 2:55 PM Koushik Bhargav Nimoji <knimoji at iol.unh.edu>
wrote:
> 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>
> ---
> dts/framework/test_result.py | 1 +
> dts/framework/test_run.py | 29 +++++++++++---
> dts/framework/test_suite.py | 40 +++++++++++++++++++
> dts/framework/testbed_model/linux_session.py | 6 ++-
> 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, 128 insertions(+), 38 deletions(-)
>
> diff --git a/dts/framework/test_result.py b/dts/framework/test_result.py
> index 21faa55dc1..13ed8f671c 100644
> --- a/dts/framework/test_result.py
> +++ b/dts/framework/test_result.py
> @@ -117,6 +117,7 @@ class ResultNode(BaseModel):
> label: str
> children: list[Union["ResultNode", ResultLeaf]] =
> Field(default_factory=list)
> parent: Union["ResultNode", None] = None
> + ports: list[dict[str, str]] | None = None
>
> def add_child(self, label: str) -> "ResultNode":
> """Creates and append a child node to the model.
> diff --git a/dts/framework/test_run.py b/dts/framework/test_run.py
> index c20a0fa885..b23930b953 100644
> --- a/dts/framework/test_run.py
> +++ b/dts/framework/test_run.py
> @@ -115,7 +115,7 @@
> from framework.remote_session.dpdk import DPDKBuildEnvironment,
> DPDKRuntimeEnvironment
> from framework.settings import SETTINGS
> from framework.test_result import Result, ResultNode, TestRunResult
> -from framework.test_suite import BaseConfig, TestCase, TestCaseType,
> TestSuite
> +from framework.test_suite import BaseConfig, TestCase, TestCaseType,
> TestSuite, TestSuiteType
> from framework.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
> ]
> @@ -506,12 +501,34 @@ class TestSuiteSetup(TestSuiteState):
> """Test suite setup."""
>
> logger_name: ClassVar[str] = "test_suite_setup"
> + test_run: TestRun
>
> def before(self) -> None:
> """Hook before the state is processed."""
> super().before()
> self.logger.set_custom_log_file(self.test_suite.name)
>
> + ctx = self.test_run.ctx
> + testsuite_type = self.test_suite.testsuite_type
> + if (
> + ctx.topology.type is not LinkTopology.NO_LINK
> + and testsuite_type is not TestSuiteType.CRYPTO
> + ):
> + if testsuite_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 testsuite_type == TestSuiteType.FUNC and ctx.tg_node:
> + for port in ctx.topology.tg_ports:
> +
> ctx.tg_node.main_session.bind_ports_to_driver([port], port.config.os_driver)
> +
> + 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/test_suite.py b/dts/framework/test_suite.py
> index 69ce26040a..554fe3a475 100644
> --- a/dts/framework/test_suite.py
> +++ b/dts/framework/test_suite.py
> @@ -45,6 +45,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.
>
> @@ -85,6 +96,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]
> + testsuite_type: ClassVar[TestSuiteType]
> +
> + @classmethod
> + def make_decorator(
> + cls, testsuite_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:
> + testsuite_type: A functional, performance, or cryptodev test
> suite.
> +
> + Returns:
> + The decorator of a functional, performance, or cryptodev test
> suite.
> + """
> +
> + def _decorator(testsuite_cls: TestSuiteClassType) ->
> TestSuiteClassType:
> + testsuite_cls.testsuite_type = testsuite_type
> + return testsuite_cls
> +
> + return _decorator
>
> def __init__(self, config: BaseConfig) -> None:
> """Initialize the test suite testbed information and basic
> configuration.
> @@ -270,6 +305,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/testbed_model/linux_session.py
> b/dts/framework/testbed_model/linux_session.py
> index c118f803b6..861b09e413 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/tests/TestSuite_blocklist.py
> b/dts/tests/TestSuite_blocklist.py
> index c57231de22..46c5ff57cb 100644
> --- a/dts/tests/TestSuite_blocklist.py
> +++ b/dts/tests/TestSuite_blocklist.py
> @@ -12,10 +12,11 @@
> )
> from api.test import verify
> from api.testpmd import TestPmd
> -from framework.test_suite import TestSuite, func_test
> +from framework.test_suite import TestSuite, func_suite, func_test
> from framework.testbed_model.port import Port
>
>
> + 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 539082f2e4..b9064e8022 100644
> --- a/dts/tests/TestSuite_buffer_scatter.py
> +++ b/dts/tests/TestSuite_buffer_scatter.py
> @@ -30,11 +30,12 @@
> from api.test import verify
> from api.testpmd import TestPmd
> from api.testpmd.config import SimpleForwardingModes
> -from framework.test_suite import TestSuite, func_test
> +from framework.test_suite import TestSuite, func_suite, func_test
>
>
> @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 90ca798e56..2a9d4ef631 100644
> --- a/dts/tests/TestSuite_checksum_offload.py
> +++ b/dts/tests/TestSuite_checksum_offload.py
> @@ -28,12 +28,13 @@
> from api.testpmd import TestPmd
> from api.testpmd.config import SimpleForwardingModes
> from api.testpmd.types import ChecksumOffloadOptions, PacketOffloadFlag
> -from framework.test_suite import TestSuite, func_test
> +from framework.test_suite import TestSuite, func_suite, func_test
>
>
> @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 4e7d814faa..e63c43a12b 100644
> --- a/dts/tests/TestSuite_cryptodev_latency.py
> +++ b/dts/tests/TestSuite_cryptodev_latency.py
> @@ -31,7 +31,7 @@
> )
> from api.test import skip, verify
> from framework.context import get_ctx
> -from framework.test_suite import BaseConfig, TestSuite, crypto_test
> +from framework.test_suite import BaseConfig, TestSuite, crypto_suite,
> crypto_test
> from framework.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 2fc0d8779a..93727d90d4 100644
> --- a/dts/tests/TestSuite_cryptodev_throughput.py
> +++ b/dts/tests/TestSuite_cryptodev_throughput.py
> @@ -32,7 +32,7 @@
> from api.test import verify
> from framework.context import get_ctx
> from framework.exception import SkippedTestException
> -from framework.test_suite import BaseConfig, TestSuite, crypto_test
> +from framework.test_suite import BaseConfig, TestSuite, crypto_suite,
> crypto_test
> from framework.testbed_model.virtual_device import VirtualDevice
>
> config_list: list[dict[str, int | float | str]] = [
> @@ -75,6 +75,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 1b77dd2b47..8676a65c80 100644
> --- a/dts/tests/TestSuite_dual_vlan.py
> +++ b/dts/tests/TestSuite_dual_vlan.py
> @@ -23,9 +23,10 @@
> from api.test import verify
> from api.testpmd import TestPmd
> from api.testpmd.config import SimpleForwardingModes
> -from framework.test_suite import TestSuite, func_test
> +from framework.test_suite import TestSuite, func_suite, func_test
>
>
> + 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 7204ec4f73..94554a735e 100644
> --- a/dts/tests/TestSuite_dynamic_config.py
> +++ b/dts/tests/TestSuite_dynamic_config.py
> @@ -29,11 +29,12 @@
> from api.test import verify
> from api.testpmd import TestPmd
> from api.testpmd.config import SimpleForwardingModes
> -from framework.test_suite import TestSuite, func_test
> +from framework.test_suite import TestSuite, func_suite, func_test
>
>
> @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 5ac85bee7d..c92edc7306 100644
> --- a/dts/tests/TestSuite_dynamic_queue_conf.py
> +++ b/dts/tests/TestSuite_dynamic_queue_conf.py
> @@ -40,7 +40,7 @@
> from api.testpmd import TestPmd
> from api.testpmd.config import PortTopology, SimpleForwardingModes
> from framework.exception import InteractiveCommandExecutionError
> -from framework.test_suite import TestSuite, func_test
> +from framework.test_suite import TestSuite, func_suite, func_test
>
>
> def setup_and_teardown_test(
> @@ -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 be11d09875..d955eb7d7d 100644
> --- a/dts/tests/TestSuite_flow_offload.py
> +++ b/dts/tests/TestSuite_flow_offload.py
> @@ -30,7 +30,7 @@
> SkippedTestException,
> TestCaseVerifyError,
> )
> -from framework.test_suite import TestSuite, func_test
> +from framework.test_suite import TestSuite, func_suite, func_test
>
>
> @dataclass
> @@ -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 bf1a93c782..0beb144644 100644
> --- a/dts/tests/TestSuite_hello_world.py
> +++ b/dts/tests/TestSuite_hello_world.py
> @@ -10,7 +10,7 @@
>
> from api.test import log
> from api.testpmd import TestPmd
> -from framework.test_suite import BaseConfig, TestSuite, func_test
> +from framework.test_suite import BaseConfig, TestSuite, func_suite,
> func_test
>
>
> class Config(BaseConfig):
> @@ -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 596b892730..3f9f1dd12d 100644
> --- a/dts/tests/TestSuite_l2fwd.py
> +++ b/dts/tests/TestSuite_l2fwd.py
> @@ -21,13 +21,14 @@
> from api.testpmd import TestPmd
> from api.testpmd.config import EthPeer, SimpleForwardingModes
> from framework.context import filter_cores
> -from framework.test_suite import TestSuite, func_test
> +from framework.test_suite import TestSuite, func_suite, func_test
> from framework.testbed_model.cpu import LogicalCoreCount
> from framework.utils import generate_random_packets
>
>
> @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 a7e24b37d5..def0b97856 100644
> --- a/dts/tests/TestSuite_mac_filter.py
> +++ b/dts/tests/TestSuite_mac_filter.py
> @@ -27,10 +27,11 @@
> from api.test import fail, verify
> from api.testpmd import TestPmd
> from framework.exception import InteractiveCommandExecutionError
> -from framework.test_suite import TestSuite, func_test
> +from framework.test_suite import TestSuite, func_suite, func_test
>
>
> @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 8355495d33..06de6c9c1a 100644
> --- a/dts/tests/TestSuite_mtu.py
> +++ b/dts/tests/TestSuite_mtu.py
> @@ -24,7 +24,7 @@
> from api.packet import send_packet_and_capture
> from api.test import verify
> from api.testpmd import TestPmd
> -from framework.test_suite import TestSuite, func_test
> +from framework.test_suite import TestSuite, func_suite, func_test
>
> STANDARD_FRAME = 1518 # --max-pkt-len will subtract l2 information at a
> minimum of 18 bytes.
> JUMBO_FRAME = 9018
> @@ -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 4bd15e2401..f26b03f46f 100644
> --- a/dts/tests/TestSuite_packet_capture.py
> +++ b/dts/tests/TestSuite_packet_capture.py
> @@ -40,7 +40,7 @@
> from framework.params import Params
> from framework.remote_session.blocking_app import BlockingApp
> from framework.remote_session.dpdk_shell import compute_eal_params
> -from framework.test_suite import TestSuite, func_test
> +from framework.test_suite import TestSuite, func_suite, func_test
> from framework.testbed_model.cpu import LogicalCoreList
> from
> framework.testbed_model.traffic_generator.capturing_traffic_generator
> import (
> PacketFilteringConfig,
> @@ -67,6 +67,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 b51fdc2959..858ab3af8b 100644
> --- a/dts/tests/TestSuite_port_control.py
> +++ b/dts/tests/TestSuite_port_control.py
> @@ -20,10 +20,11 @@
> from api.test import verify
> from api.testpmd import TestPmd
> from api.testpmd.config import SimpleForwardingModes
> -from framework.test_suite import TestSuite, func_test
> +from framework.test_suite import TestSuite, func_suite, func_test
>
>
> @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 4ea22b6d70..646e80651b 100644
> --- a/dts/tests/TestSuite_port_restart_config_persistency.py
> +++ b/dts/tests/TestSuite_port_restart_config_persistency.py
> @@ -16,13 +16,14 @@
> from api.test import verify
> from api.testpmd import TestPmd
> from api.testpmd.types import TestPmdPortFlowCtrl
> -from framework.test_suite import TestSuite, func_test
> +from framework.test_suite import TestSuite, func_suite, func_test
>
> ALTERNATIVE_MTU: int = 800
> STANDARD_MTU: int = 1500
> 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 3dc045f847..a737c17fb0 100644
> --- a/dts/tests/TestSuite_port_stats.py
> +++ b/dts/tests/TestSuite_port_stats.py
> @@ -28,11 +28,12 @@
> from api.testpmd import TestPmd
> from api.testpmd.config import SimpleForwardingModes
> from api.testpmd.types import RtePTypes, TestPmdVerbosePacket
> -from framework.test_suite import TestSuite, func_test
> +from framework.test_suite import TestSuite, func_suite, func_test
>
>
> @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 a0c65dc662..1907e779f8 100644
> --- a/dts/tests/TestSuite_promisc_support.py
> +++ b/dts/tests/TestSuite_promisc_support.py
> @@ -22,10 +22,11 @@
> )
> from api.test import verify
> from api.testpmd import TestPmd
> -from framework.test_suite import TestSuite, func_test
> +from framework.test_suite import TestSuite, func_suite, func_test
>
>
> @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 505d71dbc8..8fa4db2ab6 100644
> --- a/dts/tests/TestSuite_qinq.py
> +++ b/dts/tests/TestSuite_qinq.py
> @@ -19,9 +19,10 @@
> from api.packet import send_packet_and_capture
> from api.test import log, verify
> from api.testpmd import TestPmd
> -from framework.test_suite import TestSuite, func_test
> +from framework.test_suite import TestSuite, func_suite, func_test
>
>
> + 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 e4edc89123..97e80965d8 100644
> --- a/dts/tests/TestSuite_queue_toggle.py
> +++ b/dts/tests/TestSuite_queue_toggle.py
> @@ -26,12 +26,13 @@
> from api.test import verify
> from api.testpmd import TestPmd
> from api.testpmd.config import SimpleForwardingModes
> -from framework.test_suite import TestSuite, func_test
> +from framework.test_suite import TestSuite, func_suite, func_test
>
>
> @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 2747c8a36c..062b2d8891 100644
> --- a/dts/tests/TestSuite_rss.py
> +++ b/dts/tests/TestSuite_rss.py
> @@ -30,7 +30,7 @@
> TestPmdVerbosePacket,
> )
> from framework.exception import InteractiveCommandExecutionError
> -from framework.test_suite import BaseConfig, TestSuite, func_test
> +from framework.test_suite import BaseConfig, TestSuite, func_suite,
> func_test
> from framework.utils import StrEnum
>
>
> @@ -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 5117a569e2..8b9cf38095 100644
> --- a/dts/tests/TestSuite_rx_split.py
> +++ b/dts/tests/TestSuite_rx_split.py
> @@ -24,7 +24,7 @@
> from api.testpmd.config import SimpleForwardingModes
> from api.testpmd.types import RxOffloadCapability, TxOffloadCapability
> from framework.exception import InteractiveCommandExecutionError
> -from framework.test_suite import TestSuite, func_test
> +from framework.test_suite import TestSuite, func_suite, func_test
>
> PAYLOAD = bytes(range(256))
> ETHER_HDR_LEN = len(Ether(dst="00:00:00:00:00:00"))
> @@ -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 b0da627d3c..4a4607c685 100644
> --- a/dts/tests/TestSuite_rx_tx_offload.py
> +++ b/dts/tests/TestSuite_rx_tx_offload.py
> @@ -18,10 +18,11 @@
> OffloadConfiguration,
> RxTxLiteralSwitch,
> )
> -from framework.test_suite import TestSuite, func_test
> +from framework.test_suite import TestSuite, func_suite, func_test
>
>
> @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 57aecdf7a4..f30a5322a0 100644
> --- a/dts/tests/TestSuite_single_core_forward_perf.py
> +++ b/dts/tests/TestSuite_single_core_forward_perf.py
> @@ -25,7 +25,7 @@
> from api.testpmd import TestPmd
> from api.testpmd.config import RXRingParams, TXRingParams
> from framework.params.types import TestPmdParamsDict
> -from framework.test_suite import BaseConfig, TestSuite, perf_test
> +from framework.test_suite import BaseConfig, TestSuite, perf_suite,
> perf_test
>
>
> class Config(BaseConfig):
> @@ -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 271ad4301c..368614e7ed 100644
> --- a/dts/tests/TestSuite_smoke_tests.py
> +++ b/dts/tests/TestSuite_smoke_tests.py
> @@ -22,12 +22,13 @@
> from api.testpmd import TestPmd
> from framework.config.node import PortConfig
> from framework.settings import SETTINGS
> -from framework.test_suite import TestSuite, func_test
> +from framework.test_suite import TestSuite, func_suite, func_test
> from framework.testbed_model.linux_session import LinuxSession
> from framework.utils import REGEX_FOR_PCI_ADDRESS
>
>
> @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 fa91f7ee2f..07da406a2d 100644
> --- a/dts/tests/TestSuite_softnic.py
> +++ b/dts/tests/TestSuite_softnic.py
> @@ -20,13 +20,14 @@
> )
> from api.testpmd import TestPmd
> from api.testpmd.config import EthPeer
> -from framework.test_suite import TestSuite, func_test
> +from framework.test_suite import TestSuite, func_suite, func_test
> from framework.testbed_model.virtual_device import VirtualDevice
> from framework.utils import generate_random_packets
>
>
> @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 9cbd6f1ef7..5fbe1fe5c3 100644
> --- a/dts/tests/TestSuite_speed_capabilities.py
> +++ b/dts/tests/TestSuite_speed_capabilities.py
> @@ -14,7 +14,7 @@
> )
> from api.test import verify
> from api.testpmd import TestPmd
> -from framework.test_suite import BaseConfig, TestSuite, func_test
> +from framework.test_suite import BaseConfig, TestSuite, func_suite,
> func_test
>
>
> class Config(BaseConfig):
> @@ -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 fcc7f7fbbb..05f52d5690 100644
> --- a/dts/tests/TestSuite_unified_packet.py
> +++ b/dts/tests/TestSuite_unified_packet.py
> @@ -28,9 +28,10 @@
> from api.testpmd import TestPmd
> from api.testpmd.config import SimpleForwardingModes
> from api.testpmd.types import RtePTypes, TestPmdVerbosePacket
> -from framework.test_suite import TestSuite, func_test
> +from framework.test_suite import TestSuite, func_suite, func_test
>
>
> + 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 6efaa4e156..c2a4a4612e 100644
> --- a/dts/tests/TestSuite_virtio_forward.py
> +++ b/dts/tests/TestSuite_virtio_forward.py
> @@ -14,12 +14,13 @@
> from api.test import log, verify
> from api.testpmd import TestPmd
> from api.testpmd.config import PortTopology, SimpleForwardingModes
> -from framework.test_suite import TestSuite, func_test
> +from framework.test_suite import TestSuite, func_suite, func_test
> from framework.testbed_model.capability import requires
> from framework.testbed_model.linux_session import LinuxSession
> from framework.testbed_model.virtual_device import VirtualDevice
>
>
> + 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 898673fc86..14011da087 100644
> --- a/dts/tests/TestSuite_vlan.py
> +++ b/dts/tests/TestSuite_vlan.py
> @@ -25,10 +25,11 @@
> from api.test import verify
> from api.testpmd import TestPmd
> from api.testpmd.config import SimpleForwardingModes
> -from framework.test_suite import TestSuite, func_test
> +from framework.test_suite import TestSuite, func_suite, func_test
>
>
> @requires_nic_capability(NicCapability.PORT_RX_OFFLOAD_VLAN_FILTER)
> + at func_suite
> class TestVlan(TestSuite):
> """DPDK VLAN test suite.
>
> --
> 2.55.0
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mails.dpdk.org/archives/dev/attachments/20261022/46898e37/attachment-0001.htm>
More information about the dev
mailing list