Skip to content

Commit

Permalink
dts: improve logging for interactive shells
Browse files Browse the repository at this point in the history
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@iol.unh.edu>
Reviewed-by: Juraj Linkeš <juraj.linkes@pantheon.tech>
Tested-by: Nicholas Pratte <npratte@iol.unh.edu>
Reviewed-by: Nicholas Pratte <npratte@iol.unh.edu>
Reviewed-by: Luca Vizzarro <luca.vizzarro@arm.com>
  • Loading branch information
JSpewock authored and tmonjalo committed Jul 29, 2024
1 parent d30bb30 commit 65a1b4e
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 4 deletions.
3 changes: 2 additions & 1 deletion dts/framework/remote_session/dpdk_shell.py
Original file line number Diff line number Diff line change
Expand Up @@ -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__`.
Expand All @@ -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`.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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.
Expand All @@ -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
Expand Down
2 changes: 2 additions & 0 deletions dts/framework/remote_session/testpmd_shell.py
Original file line number Diff line number Diff line change
Expand Up @@ -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."""
Expand All @@ -615,6 +616,7 @@ def __init__(
ascending_cores,
append_prefix_timestamp,
TestPmdParams(**app_params),
name,
)

def start(self, verify: bool = True) -> None:
Expand Down
4 changes: 3 additions & 1 deletion dts/framework/testbed_model/traffic_generator/scapy.py
Original file line number Diff line number Diff line change
Expand Up @@ -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()

Expand Down

0 comments on commit 65a1b4e

Please sign in to comment.