Recheck-request: iol-mellanox-Performance

On Tue, Aug 11, 2026 at 2:55 PM Koushik Bhargav Nimoji <[email protected]>
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 <[email protected]>
> ---
>  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
>
>
> +@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)
> +@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)
> +@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)
> +@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)
> +@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
>
>
> +@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)
> +@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)
> +@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)
> +@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!"
>
>
> +@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)
> +@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)
> +@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)
> +@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)
> +@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)
> +@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"
>
>
> +@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)
> +@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)
> +@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
>
>
> +@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)
> +@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)
> +@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)
> +@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)
> +@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
>
>
> +@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)
> +@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)
> +@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)
> +@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
>
>
> +@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
>
>
> +@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)
> +@func_suite
>  class TestVlan(TestSuite):
>      """DPDK VLAN test suite.
>
> --
> 2.55.0
>
>

Reply via email to