All of lore.kernel.org
 help / color / mirror / Atom feed
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>,
	Dean Marx <dmarx@iol.unh.edu>
Subject: [PATCH v6 3/8] dts: move context from framework to API
Date: Wed,  2 Sep 2026 14:13:27 -0400	[thread overview]
Message-ID: <20260902181333.461556-4-abailey@iol.unh.edu> (raw)
In-Reply-To: <20260902181333.461556-1-abailey@iol.unh.edu>

A couple test suites import and get the run context
during execution. Move this to the API.

Signed-off-by: Andrew Bailey <abailey@iol.unh.edu>
Signed-off-by: Dean Marx <dmarx@iol.unh.edu>
---
 ...{framework.context.rst => api.context.rst} |  2 +-
 doc/api/dts/index.rst                         |  2 +-
 dts/api/artifact.py                           |  2 +-
 dts/api/context.py                            | 30 +++++++++++++++++++
 dts/api/cryptodev/__init__.py                 |  2 +-
 dts/api/packet.py                             |  4 +--
 dts/api/test.py                               |  2 +-
 dts/api/testpmd/__init__.py                   |  2 +-
 dts/framework/remote_session/blocking_app.py  |  2 +-
 dts/framework/remote_session/dpdk.py          |  2 +-
 dts/framework/remote_session/dpdk_shell.py    |  2 +-
 .../remote_session/interactive_shell.py       |  2 +-
 dts/framework/test_run.py                     |  2 +-
 dts/framework/test_suite.py                   |  4 +--
 dts/framework/testbed_model/node.py           |  2 +-
 dts/framework/testbed_model/topology.py       | 14 ++++-----
 dts/tests/TestSuite_cryptodev_latency.py      |  2 +-
 dts/tests/TestSuite_cryptodev_throughput.py   |  2 +-
 dts/tests/TestSuite_l2fwd.py                  |  2 +-
 19 files changed, 56 insertions(+), 26 deletions(-)
 rename doc/api/dts/{framework.context.rst => api.context.rst} (80%)
 create mode 100644 dts/api/context.py

diff --git a/doc/api/dts/framework.context.rst b/doc/api/dts/api.context.rst
similarity index 80%
rename from doc/api/dts/framework.context.rst
rename to doc/api/dts/api.context.rst
index 925c160360..65b4ab9a47 100644
--- a/doc/api/dts/framework.context.rst
+++ b/doc/api/dts/api.context.rst
@@ -3,6 +3,6 @@
 context - DTS execution context
 ===============================
 
-.. automodule:: framework.context
+.. automodule:: api.context
    :members:
    :show-inheritance:
diff --git a/doc/api/dts/index.rst b/doc/api/dts/index.rst
index 783270f6e9..98269d6e80 100644
--- a/doc/api/dts/index.rst
+++ b/doc/api/dts/index.rst
@@ -32,7 +32,7 @@ Modules
    framework.test_suite
    framework.test_result
    framework.settings
-   framework.context
+   api.context
    framework.logger
    framework.parser
    api.utils
diff --git a/dts/api/artifact.py b/dts/api/artifact.py
index 7d04c7ab49..f3dd07de56 100644
--- a/dts/api/artifact.py
+++ b/dts/api/artifact.py
@@ -86,7 +86,7 @@ def make_file_path(
 
         path /= custom_path
     else:
-        from framework.context import get_ctx
+        from api.context import get_ctx
 
         try:
             ctx = get_ctx()
diff --git a/dts/api/context.py b/dts/api/context.py
new file mode 100644
index 0000000000..a3cee7f17a
--- /dev/null
+++ b/dts/api/context.py
@@ -0,0 +1,30 @@
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2025 Arm Limited
+
+"""Runtime contexts."""
+
+from collections.abc import Callable
+
+from framework.context import Context
+from framework.context import filter_cores as _filter_cores
+from framework.context import get_ctx as _get_ctx
+from framework.context import init_ctx as _init_ctx
+from framework.testbed_model.capability import TestProtocol
+from framework.testbed_model.cpu import LogicalCoreCount, LogicalCoreList
+
+
+def get_ctx() -> Context:
+    """Retrieve the current runtime context."""
+    return _get_ctx()
+
+
+def init_ctx(ctx: Context) -> None:
+    """Initialize context."""
+    _init_ctx(ctx)
+
+
+def filter_cores(
+    specifier: LogicalCoreCount | LogicalCoreList, ascending_cores: bool | None = None
+) -> Callable[[type["TestProtocol"]], Callable]:
+    """Decorates functions that require a temporary update to the lcore specifier."""
+    return _filter_cores(specifier, ascending_cores)
diff --git a/dts/api/cryptodev/__init__.py b/dts/api/cryptodev/__init__.py
index 335b811620..198607696f 100644
--- a/dts/api/cryptodev/__init__.py
+++ b/dts/api/cryptodev/__init__.py
@@ -14,6 +14,7 @@
 
 from typing_extensions import Unpack
 
+from api.context import get_ctx
 from api.cryptodev.config import CryptoPmdParams, TestType
 from api.cryptodev.types import (
     CryptodevResults,
@@ -23,7 +24,6 @@
     VerifyResults,
 )
 from api.exception import RemoteCommandExecutionError, SkippedTestException
-from framework.context import get_ctx
 from framework.remote_session.dpdk_shell import compute_eal_params
 
 if TYPE_CHECKING:
diff --git a/dts/api/packet.py b/dts/api/packet.py
index e18765bfb1..3fd6060234 100644
--- a/dts/api/packet.py
+++ b/dts/api/packet.py
@@ -27,10 +27,10 @@
 from scapy.layers.l2 import Ether
 from scapy.packet import Packet, Padding, raw
 
+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.context import get_ctx
 from framework.testbed_model.traffic_generator.capturing_traffic_generator import (
     PacketFilteringConfig,
 )
@@ -82,7 +82,7 @@ def send_packets_and_capture(
     Returns:
         A list of received packets.
     """
-    from framework.context import get_ctx
+    from api.context import get_ctx
     from framework.testbed_model.traffic_generator.capturing_traffic_generator import (
         CapturingTrafficGenerator,
     )
diff --git a/dts/api/test.py b/dts/api/test.py
index 29d6842111..b6caf5c1ae 100644
--- a/dts/api/test.py
+++ b/dts/api/test.py
@@ -11,8 +11,8 @@
 
 from api.artifact import Artifact
 from api.capabilities import LinkTopology
+from api.context import get_ctx
 from api.exception import InternalError, SkippedTestException, TestCaseVerifyError
-from framework.context import get_ctx
 from framework.logger import DTSLogger
 
 
diff --git a/dts/api/testpmd/__init__.py b/dts/api/testpmd/__init__.py
index e0b58e54fe..d8985e429b 100644
--- a/dts/api/testpmd/__init__.py
+++ b/dts/api/testpmd/__init__.py
@@ -32,6 +32,7 @@
 from typing_extensions import Unpack
 
 from api.capabilities import LinkTopology, NicCapability
+from api.context import get_ctx
 from api.exception import InteractiveCommandExecutionError, InternalError
 from api.testpmd.config import PortTopology, SimpleForwardingModes, TestPmdParams
 from api.testpmd.types import (
@@ -55,7 +56,6 @@
     TxOffloadConfiguration,
     VLANOffloadFlag,
 )
-from framework.context import get_ctx
 from framework.params.types import TestPmdParamsDict
 from framework.remote_session.dpdk_shell import DPDKShell
 from framework.remote_session.interactive_shell import only_active
diff --git a/dts/framework/remote_session/blocking_app.py b/dts/framework/remote_session/blocking_app.py
index c3b02dcc62..07db6dfeb0 100644
--- a/dts/framework/remote_session/blocking_app.py
+++ b/dts/framework/remote_session/blocking_app.py
@@ -30,7 +30,7 @@
 
 from typing_extensions import Self
 
-from framework.context import get_ctx
+from api.context import get_ctx
 from framework.params import Params
 from framework.params.eal import EalParams
 from framework.remote_session.dpdk_shell import compute_eal_params
diff --git a/dts/framework/remote_session/dpdk.py b/dts/framework/remote_session/dpdk.py
index 8b85e118da..2d8bc7844e 100644
--- a/dts/framework/remote_session/dpdk.py
+++ b/dts/framework/remote_session/dpdk.py
@@ -14,6 +14,7 @@
 from typing import ClassVar, Final
 
 from api.capabilities import LinkTopology
+from api.context import get_ctx
 from api.exception import ConfigurationError, RemoteFileNotFoundError
 from api.utils import MesonArgs, TarCompressionFormat
 from framework.config.test_run import (
@@ -27,7 +28,6 @@
     RemoteDPDKTarballLocation,
     RemoteDPDKTreeLocation,
 )
-from framework.context import get_ctx
 from framework.logger import DTSLogger, get_dts_logger
 from framework.params.eal import EalParams
 from framework.remote_session.remote_session import CommandResult
diff --git a/dts/framework/remote_session/dpdk_shell.py b/dts/framework/remote_session/dpdk_shell.py
index 269c2cada4..a8f169787c 100644
--- a/dts/framework/remote_session/dpdk_shell.py
+++ b/dts/framework/remote_session/dpdk_shell.py
@@ -10,7 +10,7 @@
 from abc import ABC, abstractmethod
 from pathlib import PurePath
 
-from framework.context import get_ctx
+from api.context import get_ctx
 from framework.params.eal import EalParams
 from framework.remote_session.interactive_shell import (
     InteractiveShell,
diff --git a/dts/framework/remote_session/interactive_shell.py b/dts/framework/remote_session/interactive_shell.py
index 367a01714d..362bc2a352 100644
--- a/dts/framework/remote_session/interactive_shell.py
+++ b/dts/framework/remote_session/interactive_shell.py
@@ -29,12 +29,12 @@
 from paramiko import Channel, channel
 from typing_extensions import Self
 
+from api.context import get_ctx
 from api.exception import (
     InteractiveCommandExecutionError,
     InteractiveSSHSessionDeadError,
     InteractiveSSHTimeoutError,
 )
-from framework.context import get_ctx
 from framework.logger import DTSLogger, get_dts_logger
 from framework.params import Params
 from framework.settings import SETTINGS
diff --git a/dts/framework/test_run.py b/dts/framework/test_run.py
index 75d82c1104..8b9ae4a49a 100644
--- a/dts/framework/test_run.py
+++ b/dts/framework/test_run.py
@@ -108,9 +108,9 @@
 from typing import ClassVar, Protocol, Union
 
 from api.capabilities import LinkTopology
+from api.context import Context, init_ctx
 from api.exception import InternalError, SkippedTestException, TestCaseVerifyError
 from framework.config.test_run import TestRunConfiguration
-from framework.context import Context, init_ctx
 from framework.logger import DTSLogger, get_dts_logger
 from framework.remote_session.dpdk import DPDKBuildEnvironment, DPDKRuntimeEnvironment
 from framework.settings import SETTINGS
diff --git a/dts/framework/test_suite.py b/dts/framework/test_suite.py
index 426c98fdf6..6066f7a77a 100644
--- a/dts/framework/test_suite.py
+++ b/dts/framework/test_suite.py
@@ -38,7 +38,7 @@
 from .logger import DTSLogger, get_dts_logger
 
 if TYPE_CHECKING:
-    from framework.context import Context
+    from api.context import Context
 
 
 class BaseConfig(FrozenModel):
@@ -92,7 +92,7 @@ def __init__(self, config: BaseConfig) -> None:
         Args:
             config: The test suite configuration.
         """
-        from framework.context import get_ctx
+        from api.context import get_ctx
 
         self.config = config
         self._ctx = get_ctx()
diff --git a/dts/framework/testbed_model/node.py b/dts/framework/testbed_model/node.py
index 4f42bf6aeb..40dd7f0666 100644
--- a/dts/framework/testbed_model/node.py
+++ b/dts/framework/testbed_model/node.py
@@ -242,7 +242,7 @@ def get_node(node_identifier: NodeIdentifier) -> Node | None:
     if node_identifier == "local":
         return None
 
-    from framework.context import get_ctx
+    from api.context import get_ctx
 
     ctx = get_ctx()
     if node_identifier == "sut":
diff --git a/dts/framework/testbed_model/topology.py b/dts/framework/testbed_model/topology.py
index 002faf0b7f..6b8c5edee5 100644
--- a/dts/framework/testbed_model/topology.py
+++ b/dts/framework/testbed_model/topology.py
@@ -98,7 +98,7 @@ def node_and_ports_from_id(self, node_identifier: NodeIdentifier) -> tuple[Node,
         Raises:
             InternalError: If the given `node_identifier` is invalid.
         """
-        from framework.context import get_ctx
+        from api.context import get_ctx
 
         ctx = get_ctx()
         match node_identifier:
@@ -188,7 +188,7 @@ def instantiate_crypto_ports(self) -> None:
         Raises:
             InternalError: If crypto virtual functions could not be created on a port.
         """
-        from framework.context import get_ctx
+        from api.context import get_ctx
 
         ctx = get_ctx()
         for port in ctx.sut_node.cryptodevs:
@@ -214,7 +214,7 @@ def instantiate_vf_ports(self) -> None:
         Raises:
             InternalError: If virtual function creation fails.
         """
-        from framework.context import get_ctx
+        from api.context import get_ctx
 
         ctx = get_ctx()
 
@@ -243,7 +243,7 @@ def instantiate_vf_ports(self) -> None:
 
     def delete_vf_ports(self) -> None:
         """Delete virtual functions from the SUT node during test run teardown."""
-        from framework.context import get_ctx
+        from api.context import get_ctx
 
         ctx = get_ctx()
 
@@ -254,7 +254,7 @@ def delete_vf_ports(self) -> None:
 
     def delete_crypto_vf_ports(self) -> None:
         """Delete crypto virtual functions from the SUT node during test run teardown."""
-        from framework.context import get_ctx
+        from api.context import get_ctx
 
         ctx = get_ctx()
 
@@ -267,7 +267,7 @@ def bind_cryptodevs(self, driver: DriverKind):
         Args:
             driver: The driver to bind the crypto functions
         """
-        from framework.context import get_ctx
+        from api.context import get_ctx
 
         self._bind_ports_to_drivers(get_ctx().sut_node, self.crypto_vf_ports, driver)
 
@@ -326,7 +326,7 @@ def _prepare_devbind_script(self) -> None:
         Raises:
             InternalError: If dpdk-devbind.py could not be found.
         """
-        from framework.context import get_ctx
+        from api.context import get_ctx
 
         local_script_path = Path("..", "usertools", "dpdk-devbind.py").resolve()
         valid_script_path = local_script_path.exists()
diff --git a/dts/tests/TestSuite_cryptodev_latency.py b/dts/tests/TestSuite_cryptodev_latency.py
index 4e7d814faa..ed6423eb26 100644
--- a/dts/tests/TestSuite_cryptodev_latency.py
+++ b/dts/tests/TestSuite_cryptodev_latency.py
@@ -13,6 +13,7 @@
     LinkTopology,
     requires_link_topology,
 )
+from api.context import get_ctx
 from api.cryptodev import Cryptodev
 from api.cryptodev.config import (
     AeadAlgName,
@@ -30,7 +31,6 @@
     CryptodevResults,
 )
 from api.test import skip, verify
-from framework.context import get_ctx
 from framework.test_suite import BaseConfig, TestSuite, crypto_test
 from framework.testbed_model.virtual_device import VirtualDevice
 
diff --git a/dts/tests/TestSuite_cryptodev_throughput.py b/dts/tests/TestSuite_cryptodev_throughput.py
index 53682f35fa..d69714e1fa 100644
--- a/dts/tests/TestSuite_cryptodev_throughput.py
+++ b/dts/tests/TestSuite_cryptodev_throughput.py
@@ -13,6 +13,7 @@
     LinkTopology,
     requires_link_topology,
 )
+from api.context import get_ctx
 from api.cryptodev import Cryptodev
 from api.cryptodev.config import (
     AeadAlgName,
@@ -30,7 +31,6 @@
     CryptodevResults,
 )
 from api.test import skip, verify
-from framework.context import get_ctx
 from framework.test_suite import BaseConfig, TestSuite, crypto_test
 from framework.testbed_model.virtual_device import VirtualDevice
 
diff --git a/dts/tests/TestSuite_l2fwd.py b/dts/tests/TestSuite_l2fwd.py
index 1e99b82b8c..574842e2e4 100644
--- a/dts/tests/TestSuite_l2fwd.py
+++ b/dts/tests/TestSuite_l2fwd.py
@@ -13,6 +13,7 @@
     requires_link_topology,
     requires_nic_capability,
 )
+from api.context import filter_cores
 from api.packet import (
     get_expected_packets,
     match_all_packets,
@@ -21,7 +22,6 @@
 from api.testpmd import TestPmd
 from api.testpmd.config import EthPeer, SimpleForwardingModes
 from api.utils import generate_random_packets
-from framework.context import filter_cores
 from framework.test_suite import TestSuite, func_test
 from framework.testbed_model.cpu import LogicalCoreCount
 
-- 
2.55.0


  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   ` Andrew Bailey [this message]
2026-09-02 18:13   ` [PATCH v6 4/8] dts: separate Linux session into interface and logic Andrew Bailey
2026-09-02 18:13   ` [PATCH v6 5/8] dts: port base traffic generators to API Andrew Bailey
2026-09-02 18:13   ` [PATCH v6 6/8] dts: move testbed model from framework " 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-4-abailey@iol.unh.edu \
    --to=abailey@iol.unh.edu \
    --cc=dev@dpdk.org \
    --cc=dladd@iol.unh.edu \
    --cc=dmarx@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.