DPDK patches and discussions
 help / color / mirror / Atom feed
From: "Juraj Linkeš" <juraj.linkes@pantheon.tech>
To: Jeremy Spewock <jspewock@iol.unh.edu>
Cc: thomas@monjalon.net, Honnappa.Nagarahalli@arm.com,
	probb@iol.unh.edu,  paul.szczepanek@arm.com,
	yoan.picchi@foss.arm.com, Luca.Vizzarro@arm.com,  dev@dpdk.org
Subject: Re: [PATCH v8 12/21] dts: interactive remote session docstring update
Date: Mon, 4 Dec 2023 10:50:41 +0100	[thread overview]
Message-ID: <CAOb5WZYtQUg1KDGtX+7xh7Ow69K7sisbdnwnM8u4SLBYj8MBig@mail.gmail.com> (raw)
In-Reply-To: <CAAA20URCYu=AYQEtjmQ86==FfrAwB3Ymfc6j=cdbA5jG42ctaQ@mail.gmail.com>

On Thu, Nov 30, 2023 at 10:50 PM Jeremy Spewock <jspewock@iol.unh.edu> wrote:
>
>
>
> On Thu, Nov 23, 2023 at 10:14 AM Juraj Linkeš <juraj.linkes@pantheon.tech> wrote:
>>
>> Format according to the Google format and PEP257, with slight
>> deviations.
>>
>> Signed-off-by: Juraj Linkeš <juraj.linkes@pantheon.tech>
>> ---
>>  .../interactive_remote_session.py             | 36 +++----
>>  .../remote_session/interactive_shell.py       | 99 +++++++++++--------
>>  dts/framework/remote_session/python_shell.py  | 26 ++++-
>>  dts/framework/remote_session/testpmd_shell.py | 58 +++++++++--
>>  4 files changed, 149 insertions(+), 70 deletions(-)
>>
>> diff --git a/dts/framework/remote_session/interactive_remote_session.py b/dts/framework/remote_session/interactive_remote_session.py
>> index 098ded1bb0..1cc82e3377 100644
>> --- a/dts/framework/remote_session/interactive_remote_session.py
>> +++ b/dts/framework/remote_session/interactive_remote_session.py
>> @@ -22,27 +22,23 @@
>>  class InteractiveRemoteSession:
>>      """SSH connection dedicated to interactive applications.
>>
>> -    This connection is created using paramiko and is a persistent connection to the
>> -    host. This class defines methods for connecting to the node and configures this
>> -    connection to send "keep alive" packets every 30 seconds. Because paramiko attempts
>> -    to use SSH keys to establish a connection first, providing a password is optional.
>> -    This session is utilized by InteractiveShells and cannot be interacted with
>> -    directly.
>> -
>> -    Arguments:
>> -        node_config: Configuration class for the node you are connecting to.
>> -        _logger: Desired logger for this session to use.
>> +    The connection is created using `paramiko <https://docs.paramiko.org/en/latest/>`_
>> +    and is a persistent connection to the host. This class defines the methods for connecting
>> +    to the node and configures the connection to send "keep alive" packets every 30 seconds.
>> +    Because paramiko attempts to use SSH keys to establish a connection first, providing
>> +    a password is optional. This session is utilized by InteractiveShells
>> +    and cannot be interacted with directly.
>>
>>      Attributes:
>> -        hostname: Hostname that will be used to initialize a connection to the node.
>> -        ip: A subsection of hostname that removes the port for the connection if there
>> +        hostname: The hostname that will be used to initialize a connection to the node.
>> +        ip: A subsection of `hostname` that removes the port for the connection if there
>>              is one. If there is no port, this will be the same as hostname.
>> -        port: Port to use for the ssh connection. This will be extracted from the
>> -            hostname if there is a port included, otherwise it will default to 22.
>> +        port: Port to use for the ssh connection. This will be extracted from `hostname`
>> +            if there is a port included, otherwise it will default to ``22``.
>>          username: User to connect to the node with.
>>          password: Password of the user connecting to the host. This will default to an
>>              empty string if a password is not provided.
>> -        session: Underlying paramiko connection.
>> +        session: The underlying paramiko connection.
>>
>>      Raises:
>>          SSHConnectionError: There is an error creating the SSH connection.
>> @@ -58,9 +54,15 @@ class InteractiveRemoteSession:
>>      _node_config: NodeConfiguration
>>      _transport: Transport | None
>>
>> -    def __init__(self, node_config: NodeConfiguration, _logger: DTSLOG) -> None:
>> +    def __init__(self, node_config: NodeConfiguration, logger: DTSLOG) -> None:
>> +        """Connect to the node during initialization.
>> +
>> +        Args:
>> +            node_config: The test run configuration of the node to connect to.
>> +            logger: The logger instance this session will use.
>> +        """
>>          self._node_config = node_config
>> -        self._logger = _logger
>> +        self._logger = logger
>>          self.hostname = node_config.hostname
>>          self.username = node_config.user
>>          self.password = node_config.password if node_config.password else ""
>> diff --git a/dts/framework/remote_session/interactive_shell.py b/dts/framework/remote_session/interactive_shell.py
>> index 4db19fb9b3..b158f963b6 100644
>> --- a/dts/framework/remote_session/interactive_shell.py
>> +++ b/dts/framework/remote_session/interactive_shell.py
>> @@ -3,18 +3,20 @@
>>
>>  """Common functionality for interactive shell handling.
>>
>> -This base class, InteractiveShell, is meant to be extended by other classes that
>> -contain functionality specific to that shell type. These derived classes will often
>> -modify things like the prompt to expect or the arguments to pass into the application,
>> -but still utilize the same method for sending a command and collecting output. How
>> -this output is handled however is often application specific. If an application needs
>> -elevated privileges to start it is expected that the method for gaining those
>> -privileges is provided when initializing the class.
>> +The base class, :class:`InteractiveShell`, is meant to be extended by subclasses that contain
>> +functionality specific to that shell type. These subclasses will often modify things like
>> +the prompt to expect or the arguments to pass into the application, but still utilize
>> +the same method for sending a command and collecting output. How this output is handled however
>> +is often application specific. If an application needs elevated privileges to start it is expected
>> +that the method for gaining those privileges is provided when initializing the class.
>> +
>> +The :option:`--timeout` command line argument and the :envvar:`DTS_TIMEOUT`
>> +environment variable configure the timeout of getting the output from command execution.
>>  """
>>
>>  from abc import ABC
>>  from pathlib import PurePath
>> -from typing import Callable
>> +from typing import Callable, ClassVar
>>
>>  from paramiko import Channel, SSHClient, channel  # type: ignore[import]
>>
>> @@ -30,28 +32,6 @@ class InteractiveShell(ABC):
>>      and collecting input until reaching a certain prompt. All interactive applications
>>      will use the same SSH connection, but each will create their own channel on that
>>      session.
>> -
>> -    Arguments:
>> -        interactive_session: The SSH session dedicated to interactive shells.
>> -        logger: Logger used for displaying information in the console.
>> -        get_privileged_command: Method for modifying a command to allow it to use
>> -            elevated privileges. If this is None, the application will not be started
>> -            with elevated privileges.
>> -        app_args: Command line arguments to be passed to the application on startup.
>> -        timeout: Timeout used for the SSH channel that is dedicated to this interactive
>> -            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.
>> -
>> -    Attributes
>> -        _default_prompt: Prompt to expect at the end of output when sending a command.
>> -            This is often overridden by derived classes.
>> -        _command_extra_chars: Extra characters to add to the end of every command
>> -            before sending them. This is often overridden by derived classes and is
>> -            most commonly an additional newline character.
>> -        path: Path to the executable to start the interactive application.
>> -        dpdk_app: Whether this application is a DPDK app. If it is, the build
>> -            directory for DPDK on the node will be prepended to the path to the
>> -            executable.
>>      """
>>
>>      _interactive_session: SSHClient
>> @@ -61,10 +41,22 @@ class InteractiveShell(ABC):
>>      _logger: DTSLOG
>>      _timeout: float
>>      _app_args: str
>> -    _default_prompt: str = ""
>> -    _command_extra_chars: str = ""
>> -    path: PurePath
>> -    dpdk_app: bool = False
>> +
>> +    #: Prompt to expect at the end of output when sending a command.
>> +    #: This is often overridden by subclasses.
>> +    _default_prompt: ClassVar[str] = ""
>> +
>> +    #: Extra characters to add to the end of every command
>> +    #: before sending them. This is often overridden by subclasses and is
>> +    #: most commonly an additional newline character.
>> +    _command_extra_chars: ClassVar[str] = ""
>> +
>> +    #: Path to the executable to start the interactive application.
>> +    path: ClassVar[PurePath]
>> +
>> +    #: Whether this application is a DPDK app. If it is, the build directory
>> +    #: for DPDK on the node will be prepended to the path to the executable.
>> +    dpdk_app: ClassVar[bool] = False
>>
>>      def __init__(
>>          self,
>> @@ -74,6 +66,19 @@ def __init__(
>>          app_args: str = "",
>>          timeout: float = SETTINGS.timeout,
>>      ) -> None:
>> +        """Create an SSH channel during initialization.
>> +
>> +        Args:
>> +            interactive_session: The SSH session dedicated to interactive shells.
>> +            logger: The logger instance this session will use.
>> +            get_privileged_command: A method for modifying a command to allow it to use
>> +                elevated privileges. If :data:`None`, the application will not be started
>> +                with elevated privileges.
>> +            app_args: The command line arguments to be passed to the application on startup.
>> +            timeout: The timeout used for the SSH channel that is dedicated to this interactive
>> +                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.
>> +        """
>>          self._interactive_session = interactive_session
>>          self._ssh_channel = self._interactive_session.invoke_shell()
>>          self._stdin = self._ssh_channel.makefile_stdin("w")
>> @@ -90,6 +95,10 @@ def _start_application(self, get_privileged_command: Callable[[str], str] | None
>>
>>          This method is often overridden by subclasses as their process for
>>          starting may look different.
>> +
>> +        Args:
>> +            get_privileged_command: A function (but could be any callable) that produces
>> +                the version of the command with elevated privileges.
>>          """
>>          start_command = f"{self.path} {self._app_args}"
>>          if get_privileged_command is not None:
>> @@ -97,16 +106,24 @@ def _start_application(self, get_privileged_command: Callable[[str], str] | None
>>          self.send_command(start_command)
>>
>>      def send_command(self, command: str, prompt: str | None = None) -> str:
>> -        """Send a command and get all output before the expected ending string.
>> +        """Send `command` and get all output before the expected ending string.
>>
>>          Lines that expect input are not included in the stdout buffer, so they cannot
>> -        be used for expect. For example, if you were prompted to log into something
>> -        with a username and password, you cannot expect "username:" because it won't
>> -        yet be in the stdout buffer. A workaround for this could be consuming an
>> -        extra newline character to force the current prompt into the stdout buffer.
>> +        be used for expect.
>> +
>> +        Example:
>> +            If you were prompted to log into something with a username and password,
>> +            you cannot expect ``username:`` because it won't yet be in the stdout buffer.
>> +            A workaround for this could be consuming an extra newline character to force
>> +            the current `prompt` into the stdout buffer.
>> +
>> +        Args:
>> +            command: The command to send.
>> +            prompt: After sending the command, `send_command` will be expecting this string.
>> +                If :data:`None`, will use the class's default prompt.
>>
>>          Returns:
>> -            All output in the buffer before expected string
>> +            All output in the buffer before expected string.
>>          """
>>          self._logger.info(f"Sending: '{command}'")
>>          if prompt is None:
>> @@ -124,8 +141,10 @@ def send_command(self, command: str, prompt: str | None = None) -> str:
>>          return out
>>
>>      def close(self) -> None:
>> +        """Properly free all resources."""
>>          self._stdin.close()
>>          self._ssh_channel.close()
>>
>>      def __del__(self) -> None:
>> +        """Make sure the session is properly closed before deleting the object."""
>>          self.close()
>> diff --git a/dts/framework/remote_session/python_shell.py b/dts/framework/remote_session/python_shell.py
>> index cc3ad48a68..ccfd3783e8 100644
>> --- a/dts/framework/remote_session/python_shell.py
>> +++ b/dts/framework/remote_session/python_shell.py
>> @@ -1,12 +1,32 @@
>>  # SPDX-License-Identifier: BSD-3-Clause
>>  # Copyright(c) 2023 PANTHEON.tech s.r.o.
>>
>> +"""Python interactive shell.
>> +
>> +Typical usage example in a TestSuite::
>> +
>> +    from framework.remote_session import PythonShell
>> +    python_shell = self.tg_node.create_interactive_shell(
>> +        PythonShell, timeout=5, privileged=True
>> +    )
>> +    python_shell.send_command("print('Hello World')")
>> +    python_shell.close()
>> +"""
>> +
>>  from pathlib import PurePath
>> +from typing import ClassVar
>>
>>  from .interactive_shell import InteractiveShell
>>
>>
>>  class PythonShell(InteractiveShell):
>> -    _default_prompt: str = ">>>"
>> -    _command_extra_chars: str = "\n"
>> -    path: PurePath = PurePath("python3")
>> +    """Python interactive shell."""
>> +
>> +    #: Python's prompt.
>> +    _default_prompt: ClassVar[str] = ">>>"
>> +
>> +    #: This forces the prompt to appear after sending a command.
>> +    _command_extra_chars: ClassVar[str] = "\n"
>> +
>> +    #: The Python executable.
>> +    path: ClassVar[PurePath] = PurePath("python3")
>> diff --git a/dts/framework/remote_session/testpmd_shell.py b/dts/framework/remote_session/testpmd_shell.py
>> index 08ac311016..79481e845c 100644
>> --- a/dts/framework/remote_session/testpmd_shell.py
>> +++ b/dts/framework/remote_session/testpmd_shell.py
>> @@ -1,41 +1,79 @@
>>  # SPDX-License-Identifier: BSD-3-Clause
>>  # Copyright(c) 2023 University of New Hampshire
>>
>
> Should you add to the copyright here for adding comments?
>

I'll add it, as it sounds fine to me (it is a real contribution), but
I actually don't know.

>>
>> +"""Testpmd interactive shell.
>> +
>> +Typical usage example in a TestSuite::
>> +
>> +    testpmd_shell = self.sut_node.create_interactive_shell(
>> +            TestPmdShell, privileged=True
>> +        )
>> +    devices = testpmd_shell.get_devices()
>> +    for device in devices:
>> +        print(device)
>> +    testpmd_shell.close()
>> +"""
>> +
>>  from pathlib import PurePath
>> -from typing import Callable
>> +from typing import Callable, ClassVar
>>
>>  from .interactive_shell import InteractiveShell
>>
>>
>>  class TestPmdDevice(object):
>> +    """The data of a device that testpmd can recognize.
>> +
>> +    Attributes:
>> +        pci_address: The PCI address of the device.
>> +    """
>> +
>>      pci_address: str
>>
>>      def __init__(self, pci_address_line: str):
>> +        """Initialize the device from the testpmd output line string.
>> +
>> +        Args:
>> +            pci_address_line: A line of testpmd output that contains a device.
>> +        """
>>          self.pci_address = pci_address_line.strip().split(": ")[1].strip()
>>
>>      def __str__(self) -> str:
>> +        """The PCI address captures what the device is."""
>>          return self.pci_address
>>
>>
>>  class TestPmdShell(InteractiveShell):
>> -    path: PurePath = PurePath("app", "dpdk-testpmd")
>> -    dpdk_app: bool = True
>> -    _default_prompt: str = "testpmd>"
>> -    _command_extra_chars: str = "\n"  # We want to append an extra newline to every command
>> +    """Testpmd interactive shell.
>> +
>> +    The testpmd shell users should never use
>> +    the :meth:`~.interactive_shell.InteractiveShell.send_command` method directly, but rather
>> +    call specialized methods. If there isn't one that satisfies a need, it should be added.
>> +    """
>> +
>> +    #: The path to the testpmd executable.
>> +    path: ClassVar[PurePath] = PurePath("app", "dpdk-testpmd")
>> +
>> +    #: Flag this as a DPDK app so that it's clear this is not a system app and
>> +    #: needs to be looked in a specific path.
>> +    dpdk_app: ClassVar[bool] = True
>> +
>> +    #: The testpmd's prompt.
>> +    _default_prompt: ClassVar[str] = "testpmd>"
>> +
>> +    #: This forces the prompt to appear after sending a command.
>> +    _command_extra_chars: ClassVar[str] = "\n"
>>
>>      def _start_application(self, get_privileged_command: Callable[[str], str] | None) -> None:
>> -        """See "_start_application" in InteractiveShell."""
>>          self._app_args += " -- -i"
>>          super()._start_application(get_privileged_command)
>>
>>      def get_devices(self) -> list[TestPmdDevice]:
>> -        """Get a list of device names that are known to testpmd
>> +        """Get a list of device names that are known to testpmd.
>>
>> -        Uses the device info listed in testpmd and then parses the output to
>> -        return only the names of the devices.
>> +        Uses the device info listed in testpmd and then parses the output.
>>
>>          Returns:
>> -            A list of strings representing device names (e.g. 0000:14:00.1)
>> +            A list of devices.
>>          """
>>          dev_info: str = self.send_command("show device info all")
>>          dev_list: list[TestPmdDevice] = []
>> --
>> 2.34.1
>>

  reply	other threads:[~2023-12-04  9:50 UTC|newest]

Thread overview: 257+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-23 10:40 [RFC PATCH v1 0/4] dts: add dts api docs Juraj Linkeš
2023-03-23 10:40 ` [RFC PATCH v1 1/4] dts: code adjustments for sphinx Juraj Linkeš
2023-03-23 10:40 ` [RFC PATCH v1 2/4] dts: add doc generation dependencies Juraj Linkeš
2023-03-23 10:40 ` [RFC PATCH v1 3/4] dts: add doc generation Juraj Linkeš
2023-03-23 10:40 ` [RFC PATCH v1 4/4] dts: format docstrigs to google format Juraj Linkeš
2023-04-28 19:33   ` Jeremy Spewock
2023-04-03  9:17 ` [RFC PATCH v1 0/4] dts: add dts api docs Juraj Linkeš
2023-04-03  9:42   ` Bruce Richardson
2023-04-25  8:20     ` Juraj Linkeš
2023-04-25  8:44       ` Bruce Richardson
2023-04-25  8:57         ` Juraj Linkeš
2023-04-25  9:43           ` Bruce Richardson
2023-05-03 11:33             ` Juraj Linkeš
2023-05-04 12:37 ` [RFC PATCH v2 " Juraj Linkeš
2023-05-04 12:37   ` [RFC PATCH v2 1/4] dts: code adjustments for sphinx Juraj Linkeš
2023-05-04 12:37   ` [RFC PATCH v2 2/4] dts: add doc generation dependencies Juraj Linkeš
2023-05-04 12:37   ` [RFC PATCH v2 3/4] dts: add doc generation Juraj Linkeš
2023-05-04 12:45     ` Bruce Richardson
2023-05-05  7:53       ` Juraj Linkeš
2023-05-05 10:24         ` Bruce Richardson
2023-05-05 10:41           ` Juraj Linkeš
2023-05-05 10:56     ` Bruce Richardson
2023-05-05 11:13       ` Juraj Linkeš
2023-05-05 13:28         ` Bruce Richardson
2023-05-09  9:23           ` Juraj Linkeš
2023-05-09  9:40             ` Bruce Richardson
2023-05-10 12:19               ` Juraj Linkeš
2023-05-04 12:37   ` [RFC PATCH v2 4/4] dts: format docstrigs to google format Juraj Linkeš
2023-05-05 14:06   ` [RFC PATCH v2 0/4] dts: add dts api docs Bruce Richardson
2023-05-09 15:28     ` Juraj Linkeš
2023-05-11  8:55     ` Juraj Linkeš
2023-05-11  9:14   ` [RFC PATCH v3 " Juraj Linkeš
2023-05-11  9:14     ` [RFC PATCH v3 1/4] dts: code adjustments for sphinx Juraj Linkeš
2023-05-11  9:14     ` [RFC PATCH v3 2/4] dts: add doc generation dependencies Juraj Linkeš
2023-05-11  9:14     ` [RFC PATCH v3 3/4] dts: add doc generation Juraj Linkeš
2023-05-11  9:14     ` [RFC PATCH v3 4/4] dts: format docstrigs to google format Juraj Linkeš
2023-06-21 18:27       ` Jeremy Spewock
2023-05-17 16:56     ` [RFC PATCH v3 0/4] dts: add dts api docs Bruce Richardson
2023-05-22  9:17       ` Juraj Linkeš
2023-08-31 10:04     ` [RFC PATCH v4 " Juraj Linkeš
2023-08-31 10:04       ` [RFC PATCH v4 1/4] dts: code adjustments for sphinx Juraj Linkeš
2023-10-22 14:30         ` Yoan Picchi
2023-10-23  6:44           ` Juraj Linkeš
2023-10-23 11:52             ` Yoan Picchi
2023-10-24  6:39               ` Juraj Linkeš
2023-10-24 12:21                 ` Yoan Picchi
2023-08-31 10:04       ` [RFC PATCH v4 2/4] dts: add doc generation dependencies Juraj Linkeš
2023-10-27 15:27         ` Yoan Picchi
2023-08-31 10:04       ` [RFC PATCH v4 3/4] dts: add doc generation Juraj Linkeš
2023-09-20  7:08         ` Juraj Linkeš
2023-10-26 16:43         ` Yoan Picchi
2023-10-27  9:52           ` Juraj Linkeš
2023-08-31 10:04       ` [RFC PATCH v4 4/4] dts: format docstrigs to google format Juraj Linkeš
2023-09-01 17:02         ` Jeremy Spewock
2023-10-31 12:10         ` Yoan Picchi
2023-11-02 10:17           ` Juraj Linkeš
2023-11-06 17:15       ` [PATCH v5 00/23] dts: add dts api docs Juraj Linkeš
2023-11-06 17:15         ` [PATCH v5 01/23] dts: code adjustments for doc generation Juraj Linkeš
2023-11-08 13:35           ` Yoan Picchi
2023-11-15  7:46             ` Juraj Linkeš
2023-11-06 17:15         ` [PATCH v5 02/23] dts: add docstring checker Juraj Linkeš
2023-11-07 17:38           ` Yoan Picchi
2023-11-06 17:15         ` [PATCH v5 03/23] dts: add basic developer docs Juraj Linkeš
2023-11-07 14:39           ` Yoan Picchi
2023-11-08  9:01             ` Juraj Linkeš
2023-11-06 17:15         ` [PATCH v5 04/23] dts: exceptions docstring update Juraj Linkeš
2023-11-06 17:15         ` [PATCH v5 05/23] dts: settings " Juraj Linkeš
2023-11-06 17:15         ` [PATCH v5 06/23] dts: logger and " Juraj Linkeš
2023-11-06 17:15         ` [PATCH v5 07/23] dts: dts runner and main " Juraj Linkeš
2023-11-06 17:15         ` [PATCH v5 08/23] dts: test suite " Juraj Linkeš
2023-11-06 17:15         ` [PATCH v5 09/23] dts: test result " Juraj Linkeš
2023-11-06 17:15         ` [PATCH v5 10/23] dts: config " Juraj Linkeš
2023-11-06 17:15         ` [PATCH v5 11/23] dts: remote session " Juraj Linkeš
2023-11-06 17:15         ` [PATCH v5 12/23] dts: interactive " Juraj Linkeš
2023-11-06 17:15         ` [PATCH v5 13/23] dts: port and virtual device " Juraj Linkeš
2023-11-06 17:15         ` [PATCH v5 14/23] dts: cpu " Juraj Linkeš
2023-11-06 17:15         ` [PATCH v5 15/23] dts: os session " Juraj Linkeš
2023-11-06 17:15         ` [PATCH v5 16/23] dts: posix and linux sessions " Juraj Linkeš
2023-11-06 17:15         ` [PATCH v5 17/23] dts: node " Juraj Linkeš
2023-11-06 17:15         ` [PATCH v5 18/23] dts: sut and tg nodes " Juraj Linkeš
2023-11-06 17:15         ` [PATCH v5 19/23] dts: base traffic generators " Juraj Linkeš
2023-11-06 17:15         ` [PATCH v5 20/23] dts: scapy tg " Juraj Linkeš
2023-11-06 17:15         ` [PATCH v5 21/23] dts: test suites " Juraj Linkeš
2023-11-06 17:16         ` [PATCH v5 22/23] dts: add doc generation dependencies Juraj Linkeš
2023-11-06 17:16         ` [PATCH v5 23/23] dts: add doc generation Juraj Linkeš
2023-11-08 12:53         ` [PATCH v6 01/23] dts: code adjustments for " Juraj Linkeš
2023-11-08 12:53           ` [PATCH v6 02/23] dts: add docstring checker Juraj Linkeš
2023-11-08 12:53           ` [PATCH v6 03/23] dts: add basic developer docs Juraj Linkeš
2023-11-08 12:53           ` [PATCH v6 04/23] dts: exceptions docstring update Juraj Linkeš
2023-11-08 12:53           ` [PATCH v6 05/23] dts: settings " Juraj Linkeš
2023-11-08 16:17             ` Yoan Picchi
2023-11-15 10:09               ` Juraj Linkeš
2023-11-08 12:53           ` [PATCH v6 06/23] dts: logger and " Juraj Linkeš
2023-11-08 17:14             ` Yoan Picchi
2023-11-15 10:11               ` Juraj Linkeš
2023-11-08 12:53           ` [PATCH v6 07/23] dts: dts runner and main " Juraj Linkeš
2023-11-08 12:53           ` [PATCH v6 08/23] dts: test suite " Juraj Linkeš
2023-11-08 12:53           ` [PATCH v6 09/23] dts: test result " Juraj Linkeš
2023-11-08 12:53           ` [PATCH v6 10/23] dts: config " Juraj Linkeš
2023-11-08 12:53           ` [PATCH v6 11/23] dts: remote session " Juraj Linkeš
2023-11-08 12:53           ` [PATCH v6 12/23] dts: interactive " Juraj Linkeš
2023-11-08 12:53           ` [PATCH v6 13/23] dts: port and virtual device " Juraj Linkeš
2023-11-08 12:53           ` [PATCH v6 14/23] dts: cpu " Juraj Linkeš
2023-11-08 12:53           ` [PATCH v6 15/23] dts: os session " Juraj Linkeš
2023-11-08 12:53           ` [PATCH v6 16/23] dts: posix and linux sessions " Juraj Linkeš
2023-11-08 12:53           ` [PATCH v6 17/23] dts: node " Juraj Linkeš
2023-11-08 12:53           ` [PATCH v6 18/23] dts: sut and tg nodes " Juraj Linkeš
2023-11-08 12:53           ` [PATCH v6 19/23] dts: base traffic generators " Juraj Linkeš
2023-11-08 12:53           ` [PATCH v6 20/23] dts: scapy tg " Juraj Linkeš
2023-11-08 12:53           ` [PATCH v6 21/23] dts: test suites " Juraj Linkeš
2023-11-08 12:53           ` [PATCH v6 22/23] dts: add doc generation dependencies Juraj Linkeš
2023-11-08 16:00             ` Yoan Picchi
2023-11-15 10:00               ` Juraj Linkeš
2023-11-08 12:53           ` [PATCH v6 23/23] dts: add doc generation Juraj Linkeš
2023-11-15 13:09             ` [PATCH v7 00/21] dts: docstrings update Juraj Linkeš
2023-11-15 13:09               ` [PATCH v7 01/21] dts: code adjustments for doc generation Juraj Linkeš
2023-11-16 21:04                 ` Jeremy Spewock
2023-11-20 16:10                   ` Juraj Linkeš
2023-11-20 16:02                 ` Yoan Picchi
2023-11-15 13:09               ` [PATCH v7 02/21] dts: add docstring checker Juraj Linkeš
2023-11-20 16:03                 ` Yoan Picchi
2023-11-15 13:09               ` [PATCH v7 03/21] dts: add basic developer docs Juraj Linkeš
2023-11-20 16:03                 ` Yoan Picchi
2023-11-15 13:09               ` [PATCH v7 04/21] dts: exceptions docstring update Juraj Linkeš
2023-11-20 16:22                 ` Yoan Picchi
2023-11-20 16:35                   ` Juraj Linkeš
2023-11-15 13:09               ` [PATCH v7 05/21] dts: settings " Juraj Linkeš
2023-11-15 13:09               ` [PATCH v7 06/21] dts: logger and utils " Juraj Linkeš
2023-11-20 16:23                 ` Yoan Picchi
2023-11-20 16:36                   ` Juraj Linkeš
2023-11-15 13:09               ` [PATCH v7 07/21] dts: dts runner and main " Juraj Linkeš
2023-11-16 21:51                 ` Jeremy Spewock
2023-11-20 16:13                   ` Juraj Linkeš
2023-11-20 17:43                 ` Yoan Picchi
2023-11-21  9:10                   ` Juraj Linkeš
2023-11-15 13:09               ` [PATCH v7 08/21] dts: test suite " Juraj Linkeš
2023-11-16 22:16                 ` Jeremy Spewock
2023-11-20 16:25                   ` Juraj Linkeš
2023-11-15 13:09               ` [PATCH v7 09/21] dts: test result " Juraj Linkeš
2023-11-16 22:47                 ` Jeremy Spewock
2023-11-20 16:33                   ` Juraj Linkeš
2023-11-30 21:20                     ` Jeremy Spewock
2023-11-15 13:09               ` [PATCH v7 10/21] dts: config " Juraj Linkeš
2023-11-21 15:08                 ` Yoan Picchi
2023-11-22 10:42                   ` Juraj Linkeš
2023-11-15 13:09               ` [PATCH v7 11/21] dts: remote session " Juraj Linkeš
2023-11-21 15:36                 ` Yoan Picchi
2023-11-22 11:13                   ` Juraj Linkeš
2023-11-22 11:25                     ` Yoan Picchi
2023-11-15 13:09               ` [PATCH v7 12/21] dts: interactive " Juraj Linkeš
2023-11-15 13:09               ` [PATCH v7 13/21] dts: port and virtual device " Juraj Linkeš
2023-11-15 13:09               ` [PATCH v7 14/21] dts: cpu " Juraj Linkeš
2023-11-21 17:45                 ` Yoan Picchi
2023-11-22 11:18                   ` Juraj Linkeš
2023-11-15 13:09               ` [PATCH v7 15/21] dts: os session " Juraj Linkeš
2023-11-22 11:50                 ` Yoan Picchi
2023-11-22 13:27                   ` Juraj Linkeš
2023-11-15 13:09               ` [PATCH v7 16/21] dts: posix and linux sessions " Juraj Linkeš
2023-11-22 13:24                 ` Yoan Picchi
2023-11-22 13:35                   ` Juraj Linkeš
2023-11-15 13:09               ` [PATCH v7 17/21] dts: node " Juraj Linkeš
2023-11-22 12:18                 ` Yoan Picchi
2023-11-22 13:28                   ` Juraj Linkeš
2023-11-15 13:09               ` [PATCH v7 18/21] dts: sut and tg nodes " Juraj Linkeš
2023-11-22 13:12                 ` Yoan Picchi
2023-11-22 13:34                   ` Juraj Linkeš
2023-11-15 13:09               ` [PATCH v7 19/21] dts: base traffic generators " Juraj Linkeš
2023-11-21 16:20                 ` Yoan Picchi
2023-11-22 11:38                   ` Juraj Linkeš
2023-11-22 11:56                     ` Yoan Picchi
2023-11-22 13:11                       ` Juraj Linkeš
2023-11-15 13:09               ` [PATCH v7 20/21] dts: scapy tg " Juraj Linkeš
2023-11-21 16:33                 ` Yoan Picchi
2023-11-22 13:18                   ` Juraj Linkeš
2023-11-15 13:09               ` [PATCH v7 21/21] dts: test suites " Juraj Linkeš
2023-11-16 17:36                 ` Yoan Picchi
2023-11-20 10:17                   ` Juraj Linkeš
2023-11-20 12:50                     ` Yoan Picchi
2023-11-22 13:40                       ` Juraj Linkeš
2023-11-23 15:13               ` [PATCH v8 00/21] dts: docstrings update Juraj Linkeš
2023-11-23 15:13                 ` [PATCH v8 01/21] dts: code adjustments for doc generation Juraj Linkeš
2023-11-23 15:13                 ` [PATCH v8 02/21] dts: add docstring checker Juraj Linkeš
2023-11-23 15:13                 ` [PATCH v8 03/21] dts: add basic developer docs Juraj Linkeš
2023-11-23 15:13                 ` [PATCH v8 04/21] dts: exceptions docstring update Juraj Linkeš
2023-11-23 15:13                 ` [PATCH v8 05/21] dts: settings " Juraj Linkeš
2023-11-23 15:13                 ` [PATCH v8 06/21] dts: logger and utils " Juraj Linkeš
2023-11-23 15:13                 ` [PATCH v8 07/21] dts: dts runner and main " Juraj Linkeš
2023-11-23 15:13                 ` [PATCH v8 08/21] dts: test suite " Juraj Linkeš
2023-11-23 15:13                 ` [PATCH v8 09/21] dts: test result " Juraj Linkeš
2023-11-23 15:13                 ` [PATCH v8 10/21] dts: config " Juraj Linkeš
2023-11-23 15:13                 ` [PATCH v8 11/21] dts: remote session " Juraj Linkeš
2023-11-23 15:13                 ` [PATCH v8 12/21] dts: interactive " Juraj Linkeš
2023-11-30 21:49                   ` Jeremy Spewock
2023-12-04  9:50                     ` Juraj Linkeš [this message]
2023-11-23 15:13                 ` [PATCH v8 13/21] dts: port and virtual device " Juraj Linkeš
2023-11-23 15:13                 ` [PATCH v8 14/21] dts: cpu " Juraj Linkeš
2023-11-23 15:13                 ` [PATCH v8 15/21] dts: os session " Juraj Linkeš
2023-12-01 17:33                   ` Jeremy Spewock
2023-12-04  9:53                     ` Juraj Linkeš
2023-11-23 15:13                 ` [PATCH v8 16/21] dts: posix and linux sessions " Juraj Linkeš
2023-11-23 15:13                 ` [PATCH v8 17/21] dts: node " Juraj Linkeš
2023-11-23 15:13                 ` [PATCH v8 18/21] dts: sut and tg nodes " Juraj Linkeš
2023-12-01 18:06                   ` Jeremy Spewock
2023-12-04 10:02                     ` Juraj Linkeš
2023-12-04 11:02                       ` Bruce Richardson
2023-11-23 15:13                 ` [PATCH v8 19/21] dts: base traffic generators " Juraj Linkeš
2023-12-01 18:05                   ` Jeremy Spewock
2023-12-04 10:03                     ` Juraj Linkeš
2023-11-23 15:13                 ` [PATCH v8 20/21] dts: scapy tg " Juraj Linkeš
2023-12-01 18:17                   ` Jeremy Spewock
2023-12-04 10:07                     ` Juraj Linkeš
2023-11-23 15:13                 ` [PATCH v8 21/21] dts: test suites " Juraj Linkeš
2023-12-01 16:00                 ` [PATCH v8 00/21] dts: docstrings update Yoan Picchi
2023-12-01 18:23                   ` Jeremy Spewock
2023-12-04 10:24                 ` [PATCH v9 " Juraj Linkeš
2023-12-04 10:24                   ` [PATCH v9 01/21] dts: code adjustments for doc generation Juraj Linkeš
2023-12-04 10:24                   ` [PATCH v9 02/21] dts: add docstring checker Juraj Linkeš
2023-12-04 10:24                   ` [PATCH v9 03/21] dts: add basic developer docs Juraj Linkeš
2023-12-04 10:24                   ` [PATCH v9 04/21] dts: exceptions docstring update Juraj Linkeš
2023-12-04 10:24                   ` [PATCH v9 05/21] dts: settings " Juraj Linkeš
2023-12-04 10:24                   ` [PATCH v9 06/21] dts: logger and utils " Juraj Linkeš
2023-12-04 10:24                   ` [PATCH v9 07/21] dts: dts runner and main " Juraj Linkeš
2023-12-04 10:24                   ` [PATCH v9 08/21] dts: test suite " Juraj Linkeš
2023-12-04 10:24                   ` [PATCH v9 09/21] dts: test result " Juraj Linkeš
2023-12-04 10:24                   ` [PATCH v9 10/21] dts: config " Juraj Linkeš
2023-12-04 10:24                   ` [PATCH v9 11/21] dts: remote session " Juraj Linkeš
2023-12-04 10:24                   ` [PATCH v9 12/21] dts: interactive " Juraj Linkeš
2023-12-04 10:24                   ` [PATCH v9 13/21] dts: port and virtual device " Juraj Linkeš
2023-12-04 10:24                   ` [PATCH v9 14/21] dts: cpu " Juraj Linkeš
2023-12-04 10:24                   ` [PATCH v9 15/21] dts: os session " Juraj Linkeš
2023-12-04 10:24                   ` [PATCH v9 16/21] dts: posix and linux sessions " Juraj Linkeš
2023-12-04 10:24                   ` [PATCH v9 17/21] dts: node " Juraj Linkeš
2023-12-04 10:24                   ` [PATCH v9 18/21] dts: sut and tg nodes " Juraj Linkeš
2023-12-04 10:24                   ` [PATCH v9 19/21] dts: base traffic generators " Juraj Linkeš
2023-12-04 10:24                   ` [PATCH v9 20/21] dts: scapy tg " Juraj Linkeš
2023-12-04 10:24                   ` [PATCH v9 21/21] dts: test suites " Juraj Linkeš
2023-12-05 18:39                     ` Jeremy Spewock
2023-12-21 11:48                   ` [PATCH v9 00/21] dts: docstrings update Thomas Monjalon
2023-11-15 13:36             ` [PATCH v1 0/2] dts: api docs generation Juraj Linkeš
2023-11-15 13:36               ` [PATCH v1 1/2] dts: add doc generation dependencies Juraj Linkeš
2023-11-15 13:36               ` [PATCH v1 2/2] dts: add doc generation Juraj Linkeš
2024-01-22 12:00               ` [PATCH v2 0/3] dts: API docs generation Juraj Linkeš
2024-01-22 12:00                 ` [PATCH v2 1/3] dts: add doc generation dependencies Juraj Linkeš
2024-01-22 12:00                 ` [PATCH v2 2/3] dts: add API doc sources Juraj Linkeš
2024-01-22 12:00                 ` [PATCH v2 3/3] dts: add API doc generation Juraj Linkeš
2024-01-22 16:35               ` [PATCH v3 0/3] dts: API docs generation Juraj Linkeš
2024-01-22 16:35                 ` [PATCH v3 1/3] dts: add doc generation dependencies Juraj Linkeš
2024-01-22 16:35                 ` [PATCH v3 2/3] dts: add API doc sources Juraj Linkeš
2024-01-22 16:35                 ` [PATCH v3 3/3] dts: add API doc generation Juraj Linkeš
2024-01-29 17:09                   ` Jeremy Spewock
     [not found]                   ` <CAJvnSUCNjo0p-yhROF1MNLKhjiAw2QTyTHO2hpOaVVUn0xnJ0A@mail.gmail.com>
2024-02-29 18:12                     ` Nicholas Pratte
2024-04-12 10:14               ` [PATCH v4 0/3] dts: API docs generation Juraj Linkeš
2024-04-12 10:14                 ` [PATCH v4 1/3] dts: add doc generation dependencies Juraj Linkeš
2024-04-12 10:14                 ` [PATCH v4 2/3] dts: add API doc sources Juraj Linkeš
2024-04-12 10:14                 ` [PATCH v4 3/3] dts: add API doc generation Juraj Linkeš
2024-04-29 13:49                 ` [PATCH v4 0/3] dts: API docs generation Jeremy Spewock
2024-04-29 14:12                   ` Patrick Robb

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=CAOb5WZYtQUg1KDGtX+7xh7Ow69K7sisbdnwnM8u4SLBYj8MBig@mail.gmail.com \
    --to=juraj.linkes@pantheon.tech \
    --cc=Honnappa.Nagarahalli@arm.com \
    --cc=Luca.Vizzarro@arm.com \
    --cc=dev@dpdk.org \
    --cc=jspewock@iol.unh.edu \
    --cc=paul.szczepanek@arm.com \
    --cc=probb@iol.unh.edu \
    --cc=thomas@monjalon.net \
    --cc=yoan.picchi@foss.arm.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;
as well as URLs for NNTP newsgroup(s).