From: Andrew Bailey <abailey@iol.unh.edu>
To: dev@dpdk.org, luca.vizzarro@arm.com, patrickrobb1997@gmail.com
Cc: knimoji@iol.unh.edu, lylavoie@iol.unh.edu, dladd@iol.unh.edu,
Andrew Bailey <abailey@iol.unh.edu>
Subject: [PATCH v6 5/8] dts: port base traffic generators to API
Date: Wed, 2 Sep 2026 14:13:29 -0400 [thread overview]
Message-ID: <20260902181333.461556-6-abailey@iol.unh.edu> (raw)
In-Reply-To: <20260902181333.461556-1-abailey@iol.unh.edu>
Some test suites import from the traffic generator package. Separate
this package into interface and logic for user import.
Signed-off-by: Andrew Bailey <abailey@iol.unh.edu>
---
doc/api/dts/api.testbed_model.rst | 14 ++++++++++++++
...ffic_generator.capturing_traffic_generator.rst} | 2 +-
...rst => api.testbed_model.traffic_generator.rst} | 6 +++---
..._model.traffic_generator.traffic_generator.rst} | 2 +-
doc/api/dts/framework.testbed_model.rst | 6 ------
doc/api/dts/index.rst | 1 +
dts/api/packet.py | 12 +++++-------
.../capturing_traffic_generator.py | 3 +--
.../performance_traffic_generator.py | 2 +-
.../traffic_generator/traffic_generator.py | 0
dts/framework/context.py | 2 +-
.../testbed_model/traffic_generator/__init__.py | 2 +-
.../testbed_model/traffic_generator/scapy.py | 9 ++++-----
.../testbed_model/traffic_generator/trex.py | 8 ++++----
dts/tests/TestSuite_packet_capture.py | 4 +---
dts/tests/TestSuite_virtio_forward.py | 9 ++++-----
16 files changed, 42 insertions(+), 40 deletions(-)
create mode 100644 doc/api/dts/api.testbed_model.rst
rename doc/api/dts/{framework.testbed_model.traffic_generator.capturing_traffic_generator.rst => api.testbed_model.traffic_generator.capturing_traffic_generator.rst} (68%)
rename doc/api/dts/{framework.testbed_model.traffic_generator.rst => api.testbed_model.traffic_generator.rst} (54%)
rename doc/api/dts/{framework.testbed_model.traffic_generator.traffic_generator.rst => api.testbed_model.traffic_generator.traffic_generator.rst} (65%)
rename dts/{framework => api}/testbed_model/traffic_generator/capturing_traffic_generator.py (98%)
rename dts/{framework => api}/testbed_model/traffic_generator/performance_traffic_generator.py (95%)
rename dts/{framework => api}/testbed_model/traffic_generator/traffic_generator.py (100%)
diff --git a/doc/api/dts/api.testbed_model.rst b/doc/api/dts/api.testbed_model.rst
new file mode 100644
index 0000000000..900d8851fe
--- /dev/null
+++ b/doc/api/dts/api.testbed_model.rst
@@ -0,0 +1,14 @@
+.. SPDX-License-Identifier: BSD-3-Clause
+
+testbed\_model - Testbed Modelling Package
+==========================================
+
+.. automodule:: api.testbed_model
+ :members:
+ :show-inheritance:
+
+.. toctree::
+ :hidden:
+ :maxdepth: 2
+
+ api.testbed_model.traffic_generator
\ No newline at end of file
diff --git a/doc/api/dts/framework.testbed_model.traffic_generator.capturing_traffic_generator.rst b/doc/api/dts/api.testbed_model.traffic_generator.capturing_traffic_generator.rst
similarity index 68%
rename from doc/api/dts/framework.testbed_model.traffic_generator.capturing_traffic_generator.rst
rename to doc/api/dts/api.testbed_model.traffic_generator.capturing_traffic_generator.rst
index 29fa834042..cfe03201a7 100644
--- a/doc/api/dts/framework.testbed_model.traffic_generator.capturing_traffic_generator.rst
+++ b/doc/api/dts/api.testbed_model.traffic_generator.capturing_traffic_generator.rst
@@ -3,6 +3,6 @@
capturing\_traffic\_generator - Base Capturing TG ABC
=====================================================
-.. automodule:: framework.testbed_model.traffic_generator.capturing_traffic_generator
+.. automodule:: api.testbed_model.traffic_generator.capturing_traffic_generator
:members:
:show-inheritance:
diff --git a/doc/api/dts/framework.testbed_model.traffic_generator.rst b/doc/api/dts/api.testbed_model.traffic_generator.rst
similarity index 54%
rename from doc/api/dts/framework.testbed_model.traffic_generator.rst
rename to doc/api/dts/api.testbed_model.traffic_generator.rst
index 24c250ee3a..a22e27a58b 100644
--- a/doc/api/dts/framework.testbed_model.traffic_generator.rst
+++ b/doc/api/dts/api.testbed_model.traffic_generator.rst
@@ -3,7 +3,7 @@
traffic\_generator Subpackage
=============================
-.. automodule:: framework.testbed_model.traffic_generator
+.. automodule:: api.testbed_model.traffic_generator
:members:
:show-inheritance:
@@ -11,6 +11,6 @@ traffic\_generator Subpackage
:hidden:
:maxdepth: 1
- framework.testbed_model.traffic_generator.traffic_generator
- framework.testbed_model.traffic_generator.capturing_traffic_generator
+ api.testbed_model.traffic_generator.traffic_generator
+ api.testbed_model.traffic_generator.capturing_traffic_generator
framework.testbed_model.traffic_generator.scapy
diff --git a/doc/api/dts/framework.testbed_model.traffic_generator.traffic_generator.rst b/doc/api/dts/api.testbed_model.traffic_generator.traffic_generator.rst
similarity index 65%
rename from doc/api/dts/framework.testbed_model.traffic_generator.traffic_generator.rst
rename to doc/api/dts/api.testbed_model.traffic_generator.traffic_generator.rst
index bfec728dee..1045e534b5 100644
--- a/doc/api/dts/framework.testbed_model.traffic_generator.traffic_generator.rst
+++ b/doc/api/dts/api.testbed_model.traffic_generator.traffic_generator.rst
@@ -3,6 +3,6 @@
traffic\_generator - Base TG ABC
================================
-.. automodule:: framework.testbed_model.traffic_generator.traffic_generator
+.. automodule:: api.testbed_model.traffic_generator.traffic_generator
:members:
:show-inheritance:
diff --git a/doc/api/dts/framework.testbed_model.rst b/doc/api/dts/framework.testbed_model.rst
index f283178f6a..f6fb410133 100644
--- a/doc/api/dts/framework.testbed_model.rst
+++ b/doc/api/dts/framework.testbed_model.rst
@@ -7,12 +7,6 @@ testbed\_model - Testbed Modelling Package
:members:
:show-inheritance:
-.. toctree::
- :hidden:
- :maxdepth: 2
-
- framework.testbed_model.traffic_generator
-
.. toctree::
:hidden:
:maxdepth: 1
diff --git a/doc/api/dts/index.rst b/doc/api/dts/index.rst
index 98269d6e80..d02bc59d2b 100644
--- a/doc/api/dts/index.rst
+++ b/doc/api/dts/index.rst
@@ -16,6 +16,7 @@ Packages
tests
api
+ api.testbed_model
framework.testbed_model
framework.remote_session
framework.params
diff --git a/dts/api/packet.py b/dts/api/packet.py
index 3fd6060234..c6d014765f 100644
--- a/dts/api/packet.py
+++ b/dts/api/packet.py
@@ -30,13 +30,11 @@
from api.context import get_ctx
from api.exception import InternalError
from api.test import fail, log_debug
-from api.utils import get_packet_summaries
-from framework.testbed_model.traffic_generator.capturing_traffic_generator import (
- PacketFilteringConfig,
-)
-from framework.testbed_model.traffic_generator.performance_traffic_generator import (
+from api.testbed_model.traffic_generator.capturing_traffic_generator import PacketFilteringConfig
+from api.testbed_model.traffic_generator.performance_traffic_generator import (
PerformanceTrafficStats,
)
+from api.utils import get_packet_summaries
def send_packet_and_capture(
@@ -83,7 +81,7 @@ def send_packets_and_capture(
A list of received packets.
"""
from api.context import get_ctx
- from framework.testbed_model.traffic_generator.capturing_traffic_generator import (
+ from api.testbed_model.traffic_generator.capturing_traffic_generator import (
CapturingTrafficGenerator,
)
@@ -339,7 +337,7 @@ def assess_performance_by_packet(
Returns:
Performance statistics of the generated test.
"""
- from framework.testbed_model.traffic_generator.performance_traffic_generator import (
+ from api.testbed_model.traffic_generator.performance_traffic_generator import (
PerformanceTrafficGenerator,
)
diff --git a/dts/framework/testbed_model/traffic_generator/capturing_traffic_generator.py b/dts/api/testbed_model/traffic_generator/capturing_traffic_generator.py
similarity index 98%
rename from dts/framework/testbed_model/traffic_generator/capturing_traffic_generator.py
rename to dts/api/testbed_model/traffic_generator/capturing_traffic_generator.py
index 2804d64990..dbe0e72c0f 100644
--- a/dts/framework/testbed_model/traffic_generator/capturing_traffic_generator.py
+++ b/dts/api/testbed_model/traffic_generator/capturing_traffic_generator.py
@@ -17,11 +17,10 @@
from scapy.packet import Packet
from api.artifact import Artifact
+from api.testbed_model.traffic_generator.traffic_generator import TrafficGenerator
from api.utils import get_packet_summaries
from framework.testbed_model.port import Port
-from .traffic_generator import TrafficGenerator
-
def _get_default_capture_name() -> str:
return str(uuid.uuid4())
diff --git a/dts/framework/testbed_model/traffic_generator/performance_traffic_generator.py b/dts/api/testbed_model/traffic_generator/performance_traffic_generator.py
similarity index 95%
rename from dts/framework/testbed_model/traffic_generator/performance_traffic_generator.py
rename to dts/api/testbed_model/traffic_generator/performance_traffic_generator.py
index 5be846361c..7953d0b419 100644
--- a/dts/framework/testbed_model/traffic_generator/performance_traffic_generator.py
+++ b/dts/api/testbed_model/traffic_generator/performance_traffic_generator.py
@@ -8,7 +8,7 @@
from scapy.packet import Packet
-from .traffic_generator import TrafficGenerator
+from api.testbed_model.traffic_generator.traffic_generator import TrafficGenerator
@dataclass(slots=True)
diff --git a/dts/framework/testbed_model/traffic_generator/traffic_generator.py b/dts/api/testbed_model/traffic_generator/traffic_generator.py
similarity index 100%
rename from dts/framework/testbed_model/traffic_generator/traffic_generator.py
rename to dts/api/testbed_model/traffic_generator/traffic_generator.py
diff --git a/dts/framework/context.py b/dts/framework/context.py
index 709b99421e..6ebe4e0249 100644
--- a/dts/framework/context.py
+++ b/dts/framework/context.py
@@ -16,10 +16,10 @@
from framework.testbed_model.topology import Topology
if TYPE_CHECKING:
+ from api.testbed_model.traffic_generator.traffic_generator import TrafficGenerator
from framework.remote_session.dpdk import DPDKBuildEnvironment, DPDKRuntimeEnvironment
from framework.test_suite import TestCase, TestSuite
from framework.testbed_model.capability import TestProtocol
- from framework.testbed_model.traffic_generator.traffic_generator import TrafficGenerator
P = ParamSpec("P")
diff --git a/dts/framework/testbed_model/traffic_generator/__init__.py b/dts/framework/testbed_model/traffic_generator/__init__.py
index 324b5e88f3..d630efa6c2 100644
--- a/dts/framework/testbed_model/traffic_generator/__init__.py
+++ b/dts/framework/testbed_model/traffic_generator/__init__.py
@@ -15,6 +15,7 @@
"""
from api.exception import ConfigurationError
+from api.testbed_model.traffic_generator.traffic_generator import TrafficGenerator
from framework.config.test_run import (
ScapyTrafficGeneratorConfig,
TrafficGeneratorConfig,
@@ -23,7 +24,6 @@
from framework.testbed_model.node import Node
from .scapy import ScapyTrafficGenerator
-from .traffic_generator import TrafficGenerator
from .trex import TrexTrafficGenerator
diff --git a/dts/framework/testbed_model/traffic_generator/scapy.py b/dts/framework/testbed_model/traffic_generator/scapy.py
index 70856cc1f0..0bd1eb39bb 100644
--- a/dts/framework/testbed_model/traffic_generator/scapy.py
+++ b/dts/framework/testbed_model/traffic_generator/scapy.py
@@ -26,17 +26,16 @@
from scapy.packet import Packet
from api.exception import InteractiveSSHSessionDeadError, InternalError
+from api.testbed_model.traffic_generator.capturing_traffic_generator import (
+ CapturingTrafficGenerator,
+ PacketFilteringConfig,
+)
from framework.config.node import OS
from framework.config.test_run import ScapyTrafficGeneratorConfig
from framework.remote_session.python_shell import PythonShell
from framework.testbed_model.node import Node
from framework.testbed_model.port import Port
from framework.testbed_model.topology import Topology
-from framework.testbed_model.traffic_generator.capturing_traffic_generator import (
- PacketFilteringConfig,
-)
-
-from .capturing_traffic_generator import CapturingTrafficGenerator
class ScapyAsyncSniffer(PythonShell):
diff --git a/dts/framework/testbed_model/traffic_generator/trex.py b/dts/framework/testbed_model/traffic_generator/trex.py
index eea37ba1d6..7ce1d40d79 100644
--- a/dts/framework/testbed_model/traffic_generator/trex.py
+++ b/dts/framework/testbed_model/traffic_generator/trex.py
@@ -13,6 +13,10 @@
from scapy.packet import Packet
from api.exception import SSHTimeoutError
+from api.testbed_model.traffic_generator.performance_traffic_generator import (
+ PerformanceTrafficGenerator,
+ PerformanceTrafficStats,
+)
from api.utils import StrEnum
from framework.config.node import OS, NodeConfiguration
from framework.config.test_run import TrexTrafficGeneratorConfig
@@ -22,10 +26,6 @@
from framework.testbed_model.node import Node, create_session
from framework.testbed_model.os_session import OSSession
from framework.testbed_model.topology import Topology
-from framework.testbed_model.traffic_generator.performance_traffic_generator import (
- PerformanceTrafficGenerator,
- PerformanceTrafficStats,
-)
@dataclass(slots=True)
diff --git a/dts/tests/TestSuite_packet_capture.py b/dts/tests/TestSuite_packet_capture.py
index 4bd15e2401..dc71991a91 100644
--- a/dts/tests/TestSuite_packet_capture.py
+++ b/dts/tests/TestSuite_packet_capture.py
@@ -36,15 +36,13 @@
send_packets_and_capture,
)
from api.test import verify
+from api.testbed_model.traffic_generator.capturing_traffic_generator import PacketFilteringConfig
from api.testpmd import TestPmd
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.testbed_model.cpu import LogicalCoreList
-from framework.testbed_model.traffic_generator.capturing_traffic_generator import (
- PacketFilteringConfig,
-)
@dataclass(kw_only=True)
diff --git a/dts/tests/TestSuite_virtio_forward.py b/dts/tests/TestSuite_virtio_forward.py
index 6c4d7532c7..fe1257800e 100644
--- a/dts/tests/TestSuite_virtio_forward.py
+++ b/dts/tests/TestSuite_virtio_forward.py
@@ -9,14 +9,13 @@
from scapy.layers.inet import IP
from scapy.layers.l2 import Ether
-from api.capabilities import LinkTopology
+from api.capabilities import LinkTopology, requires_link_topology
from api.packet import send_packets_and_capture
from api.test import log, verify
from api.testbed_model.linux_session import LinuxSession
from api.testpmd import TestPmd
from api.testpmd.config import PortTopology, SimpleForwardingModes
from framework.test_suite import TestSuite, func_test
-from framework.testbed_model.capability import requires
from framework.testbed_model.virtual_device import VirtualDevice
@@ -28,7 +27,7 @@ class TestVirtioForward(TestSuite):
)
vhost_user_vdev = VirtualDevice("eth_vhost0,iface=/tmp/vhost-net,client=1")
- @requires(topology_type=LinkTopology.NO_LINK)
+ @requires_link_topology(LinkTopology.NO_LINK)
@func_test
def virtio_server(self) -> None:
"""Test virtio server packet transmission.
@@ -77,7 +76,7 @@ def virtio_server(self) -> None:
"Vhost session failed to receive packets from virtio session.",
)
- @requires(topology_type=LinkTopology.NO_LINK)
+ @requires_link_topology(LinkTopology.NO_LINK)
@func_test
def virtio_server_reconnect(self) -> None:
"""Test virtio server reconnection.
@@ -132,7 +131,7 @@ def virtio_server_reconnect(self) -> None:
"Vhost session failed to receive packets from virtio session.",
)
- @requires(topology_type=LinkTopology.ONE_LINK)
+ @requires_link_topology(LinkTopology.ONE_LINK)
@func_test
def pvp_loop(self) -> None:
"""Test vhost/virtio physical-virtual-physical topology.
--
2.55.0
next prev parent reply other threads:[~2026-09-02 18:14 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-06 13:53 [PATCH v5 0/7] dts: remove imports from framework in test suites Andrew Bailey
2026-08-06 13:53 ` [PATCH v5 1/7] dts: move exception module from framework to API Andrew Bailey
2026-08-06 13:53 ` [PATCH v5 2/7] dts: move utils " Andrew Bailey
2026-08-06 13:53 ` [PATCH v5 3/7] dts: move context " Andrew Bailey
2026-08-06 13:53 ` [PATCH v5 4/7] dts: move testbed model " Andrew Bailey
2026-08-06 13:53 ` [PATCH v5 5/7] dts: move test suite module " Andrew Bailey
2026-08-06 13:53 ` [PATCH v5 6/7] dts: move params directory " Andrew Bailey
2026-08-06 13:53 ` [PATCH v5 7/7] dts: separate Linux session into interface and logic Andrew Bailey
2026-08-06 17:16 ` [PATCH v6 0/7] dts: remove imports from framework in test suites Andrew Bailey
2026-08-06 17:16 ` [PATCH v6 1/7] doc: improve 26.07 release notes Andrew Bailey
2026-08-06 17:19 ` Andrew Bailey
2026-08-06 17:16 ` [PATCH v6 2/7] version: 26.07.0 Andrew Bailey
2026-08-06 17:19 ` Andrew Bailey
2026-08-06 17:16 ` [PATCH v6 3/7] version: 26.11.0-rc0 Andrew Bailey
2026-08-06 17:20 ` Andrew Bailey
2026-08-06 17:16 ` [PATCH v6 4/7] ethdev: remove flow metadata symbol aliases Andrew Bailey
2026-08-06 17:20 ` Andrew Bailey
2026-08-06 17:16 ` [PATCH v6 5/7] net/mlx5: remove versioned symbols aliases Andrew Bailey
2026-08-06 17:20 ` Andrew Bailey
2026-08-06 17:16 ` [PATCH v6 6/7] dmadev: fix incomplete configuration validation Andrew Bailey
2026-08-06 17:21 ` Andrew Bailey
2026-08-06 17:16 ` [PATCH v6 7/7] lib: remove ICMP and IPv6 deprecated functions and macros Andrew Bailey
2026-08-06 17:21 ` Andrew Bailey
2026-08-06 17:50 ` [PATCH v6 0/7] dts: remove imports from framework in test suites Andrew Bailey
2026-08-06 17:50 ` [PATCH v6 1/7] dts: move exception module from framework to API Andrew Bailey
2026-08-06 17:50 ` [PATCH v6 2/7] dts: move utils " Andrew Bailey
2026-08-06 17:50 ` [PATCH v6 3/7] dts: move context " Andrew Bailey
2026-08-06 17:50 ` [PATCH v6 4/7] dts: move testbed model " Andrew Bailey
2026-08-06 17:50 ` [PATCH v6 5/7] dts: move test suite module " Andrew Bailey
2026-08-06 17:50 ` [PATCH v6 6/7] dts: move params directory " Andrew Bailey
2026-08-06 17:50 ` [PATCH v6 7/7] dts: separate Linux session into interface and logic Andrew Bailey
2026-08-07 16:16 ` [PATCH v7 0/7] dts: remove imports from framework in test suites Andrew Bailey
2026-08-07 16:16 ` [PATCH v7 1/7] dts: move exception module from framework to API Andrew Bailey
2026-08-20 13:48 ` Luca Vizzarro
2026-08-07 16:16 ` [PATCH v7 2/7] dts: move utils " Andrew Bailey
2026-08-20 13:50 ` Luca Vizzarro
2026-08-07 16:16 ` [PATCH v7 3/7] dts: move context " Andrew Bailey
2026-08-20 13:51 ` Luca Vizzarro
2026-08-07 16:16 ` [PATCH v7 4/7] dts: move testbed model " Andrew Bailey
2026-08-20 13:53 ` Luca Vizzarro
2026-08-07 16:16 ` [PATCH v7 5/7] dts: move test suite module " Andrew Bailey
2026-08-20 13:55 ` Luca Vizzarro
2026-08-07 16:16 ` [PATCH v7 6/7] dts: move params directory " Andrew Bailey
2026-08-20 13:56 ` Luca Vizzarro
2026-08-07 16:16 ` [PATCH v7 7/7] dts: separate Linux session into interface and logic Andrew Bailey
2026-08-20 14:03 ` Luca Vizzarro
2026-08-20 14:04 ` [PATCH v7 0/7] dts: remove imports from framework in test suites Luca Vizzarro
2026-09-02 18:13 ` [PATCH v6 0/8] " Andrew Bailey
2026-09-02 18:13 ` [PATCH v6 1/8] dts: move exception module from framework to API Andrew Bailey
2026-09-02 18:13 ` [PATCH v6 2/8] dts: move utils " Andrew Bailey
2026-09-02 18:13 ` [PATCH v6 3/8] dts: move context " Andrew Bailey
2026-09-02 18:13 ` [PATCH v6 4/8] dts: separate Linux session into interface and logic Andrew Bailey
2026-09-02 18:13 ` Andrew Bailey [this message]
2026-09-02 18:13 ` [PATCH v6 6/8] dts: move testbed model from framework to API Andrew Bailey
2026-09-02 18:13 ` [PATCH v6 7/8] dts: move test suite module " Andrew Bailey
2026-09-02 18:13 ` [PATCH v6 8/8] dts: move params directory " Andrew Bailey
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260902181333.461556-6-abailey@iol.unh.edu \
--to=abailey@iol.unh.edu \
--cc=dev@dpdk.org \
--cc=dladd@iol.unh.edu \
--cc=knimoji@iol.unh.edu \
--cc=luca.vizzarro@arm.com \
--cc=lylavoie@iol.unh.edu \
--cc=patrickrobb1997@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox