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

