[PATCH v6 3/3] dts: Improve logging for interactive shells
jspewock at iol.unh.edu
jspewock at iol.unh.edu
Wed Jul 24 20:39:14 CEST 2024
From: Jeremy Spewock <jspewock at iol.unh.edu>
The messages being logged by interactive shells currently are using the
same logger as the node they were created from. Because of this, when
sending interactive commands, the logs make no distinction between when
you are sending a command directly to the host and when you are using an
interactive shell on the host. This change adds names to interactive
shells so that they are able to use their own loggers with distinct
names.
Signed-off-by: Jeremy Spewock <jspewock at iol.unh.edu>
Reviewed-by: Juraj Linkeš <juraj.linkes at pantheon.tech>
Tested-by: Nicholas Pratte <npratte at iol.unh.edu>
Reviewed-by: Nicholas Pratte <npratte at iol.unh.edu>
Reviewed-by: Luca Vizzarro <luca.vizzarro at arm.com>
---
dts/framework/remote_session/dpdk_shell.py | 3 ++-
.../remote_session/single_active_interactive_shell.py | 9 +++++++--
dts/framework/remote_session/testpmd_shell.py | 2 ++
dts/framework/testbed_model/traffic_generator/scapy.py | 4 +++-
4 files changed, 14 insertions(+), 4 deletions(-)
diff --git a/dts/framework/remote_session/dpdk_shell.py b/dts/framework/remote_session/dpdk_shell.py
index 950c6ca670..c5f5c2d116 100644
--- a/dts/framework/remote_session/dpdk_shell.py
+++ b/dts/framework/remote_session/dpdk_shell.py
@@ -82,6 +82,7 @@ def __init__(
ascending_cores: bool = True,
append_prefix_timestamp: bool = True,
app_params: EalParams = EalParams(),
+ name: str | None = None,
) -> None:
"""Extends :meth:`~.interactive_shell.InteractiveShell.__init__`.
@@ -96,7 +97,7 @@ def __init__(
append_prefix_timestamp,
)
- super().__init__(node, privileged, timeout, app_params)
+ super().__init__(node, privileged, timeout, app_params, name)
def _update_real_path(self, path: PurePath) -> None:
"""Extends :meth:`~.interactive_shell.InteractiveShell._update_real_path`.
diff --git a/dts/framework/remote_session/single_active_interactive_shell.py b/dts/framework/remote_session/single_active_interactive_shell.py
index 38318aa764..77a4dcefdf 100644
--- a/dts/framework/remote_session/single_active_interactive_shell.py
+++ b/dts/framework/remote_session/single_active_interactive_shell.py
@@ -32,7 +32,7 @@
InteractiveSSHSessionDeadError,
InteractiveSSHTimeoutError,
)
-from framework.logger import DTSLogger
+from framework.logger import DTSLogger, get_dts_logger
from framework.params import Params
from framework.settings import SETTINGS
from framework.testbed_model.node import Node
@@ -92,6 +92,7 @@ def __init__(
privileged: bool = False,
timeout: float = SETTINGS.timeout,
app_params: Params = Params(),
+ name: str | None = None,
) -> None:
"""Create an SSH channel during initialization.
@@ -102,9 +103,13 @@ def __init__(
shell. This timeout is for collecting output, so if reading from the buffer
and no output is gathered within the timeout, an exception is thrown.
app_params: The command line parameters to be passed to the application on startup.
+ name: Name for the interactive shell to use for logging. This name will be appended to
+ the name of the underlying node which it is running on.
"""
self._node = node
- self._logger = node._logger
+ if name is None:
+ name = type(self).__name__
+ self._logger = get_dts_logger(f"{node.name}.{name}")
self._app_params = app_params
self._privileged = privileged
self._timeout = timeout
diff --git a/dts/framework/remote_session/testpmd_shell.py b/dts/framework/remote_session/testpmd_shell.py
index eda6eb320f..43e9f56517 100644
--- a/dts/framework/remote_session/testpmd_shell.py
+++ b/dts/framework/remote_session/testpmd_shell.py
@@ -604,6 +604,7 @@ def __init__(
lcore_filter_specifier: LogicalCoreCount | LogicalCoreList = LogicalCoreCount(),
ascending_cores: bool = True,
append_prefix_timestamp: bool = True,
+ name: str | None = None,
**app_params: Unpack[TestPmdParamsDict],
) -> None:
"""Overrides :meth:`~.dpdk_shell.DPDKShell.__init__`. Changes app_params to kwargs."""
@@ -615,6 +616,7 @@ def __init__(
ascending_cores,
append_prefix_timestamp,
TestPmdParams(**app_params),
+ name,
)
def start(self, verify: bool = True) -> None:
diff --git a/dts/framework/testbed_model/traffic_generator/scapy.py b/dts/framework/testbed_model/traffic_generator/scapy.py
index 08e1f4ae7e..13fc1107aa 100644
--- a/dts/framework/testbed_model/traffic_generator/scapy.py
+++ b/dts/framework/testbed_model/traffic_generator/scapy.py
@@ -261,7 +261,9 @@ def __init__(self, tg_node: Node, config: ScapyTrafficGeneratorConfig):
self._tg_node.config.os == OS.linux
), "Linux is the only supported OS for scapy traffic generation"
- self.session = PythonShell(self._tg_node, timeout=5, privileged=True)
+ self.session = PythonShell(
+ self._tg_node, timeout=5, privileged=True, name="ScapyXMLRPCServer"
+ )
self.session.start_application()
--
2.45.2
More information about the dev
mailing list