DPDK patches and discussions
 help / color / mirror / Atom feed
From: Jeremy Spewock <jspewock@iol.unh.edu>
To: "Juraj Linkeš" <juraj.linkes@pantheon.tech>
Cc: thomas@monjalon.net, Honnappa.Nagarahalli@arm.com,
	probb@iol.unh.edu,  paul.szczepanek@arm.com,
	yoan.picchi@foss.arm.com, dev@dpdk.org
Subject: Re: [PATCH v7 09/21] dts: test result docstring update
Date: Thu, 16 Nov 2023 17:47:28 -0500	[thread overview]
Message-ID: <CAAA20UQasL65A+RhjE4TcrUSWbCnzBNZMTqDKz4sZ6XBbNnX3Q@mail.gmail.com> (raw)
In-Reply-To: <20231115130959.39420-10-juraj.linkes@pantheon.tech>

[-- Attachment #1: Type: text/plain, Size: 21137 bytes --]

The only comments I had on this were a few places where I think attribute
sections should be class variables instead. I tried to mark all of the
places I saw it and it could be a difference where because of the way they
are subclassed they might do it differently but I'm unsure.

On Wed, Nov 15, 2023 at 8:12 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>
> ---
>  dts/framework/test_result.py | 292 ++++++++++++++++++++++++++++-------
>  1 file changed, 234 insertions(+), 58 deletions(-)
>
> diff --git a/dts/framework/test_result.py b/dts/framework/test_result.py
> index 603e18872c..05e210f6e7 100644
> --- a/dts/framework/test_result.py
> +++ b/dts/framework/test_result.py
> @@ -2,8 +2,25 @@
>  # Copyright(c) 2023 PANTHEON.tech s.r.o.
>  # Copyright(c) 2023 University of New Hampshire
>
> -"""
> -Generic result container and reporters
> +r"""Record and process DTS results.
> +
> +The results are recorded in a hierarchical manner:
> +
> +    * :class:`DTSResult` contains
> +    * :class:`ExecutionResult` contains
> +    * :class:`BuildTargetResult` contains
> +    * :class:`TestSuiteResult` contains
> +    * :class:`TestCaseResult`
> +
> +Each result may contain multiple lower level results, e.g. there are
> multiple
> +:class:`TestSuiteResult`\s in a :class:`BuildTargetResult`.
> +The results have common parts, such as setup and teardown results,
> captured in :class:`BaseResult`,
> +which also defines some common behaviors in its methods.
> +
> +Each result class has its own idiosyncrasies which they implement in
> overridden methods.
> +
> +The :option:`--output` command line argument and the
> :envvar:`DTS_OUTPUT_DIR` environment
> +variable modify the directory where the files with results will be stored.
>  """
>
>  import os.path
> @@ -26,26 +43,34 @@
>
>
>  class Result(Enum):
> -    """
> -    An Enum defining the possible states that
> -    a setup, a teardown or a test case may end up in.
> -    """
> +    """The possible states that a setup, a teardown or a test case may
> end up in."""
>
> +    #:
>      PASS = auto()
> +    #:
>      FAIL = auto()
> +    #:
>      ERROR = auto()
> +    #:
>      SKIP = auto()
>
>      def __bool__(self) -> bool:
> +        """Only PASS is True."""
>          return self is self.PASS
>
>
>  class FixtureResult(object):
> -    """
> -    A record that stored the result of a setup or a teardown.
> -    The default is FAIL because immediately after creating the object
> -    the setup of the corresponding stage will be executed, which also
> guarantees
> -    the execution of teardown.
> +    """A record that stores the result of a setup or a teardown.
> +
> +    FAIL is a sensible default since it prevents false positives
> +        (which could happen if the default was PASS).
> +
> +    Preventing false positives or other false results is preferable since
> a failure
> +    is mostly likely to be investigated (the other false results may not
> be investigated at all).
> +
> +    Attributes:
> +        result: The associated result.
> +        error: The error in case of a failure.
>      """
>

I think the items in the attributes section should instead be "#:" because
they are class variables.


>
>      result: Result
> @@ -56,21 +81,32 @@ def __init__(
>          result: Result = Result.FAIL,
>          error: Exception | None = None,
>      ):
> +        """Initialize the constructor with the fixture result and store a
> possible error.
> +
> +        Args:
> +            result: The result to store.
> +            error: The error which happened when a failure occurred.
> +        """
>          self.result = result
>          self.error = error
>
>      def __bool__(self) -> bool:
> +        """A wrapper around the stored :class:`Result`."""
>          return bool(self.result)
>
>
>  class Statistics(dict):
> -    """
> -    A helper class used to store the number of test cases by its result
> -    along a few other basic information.
> -    Using a dict provides a convenient way to format the data.
> +    """How many test cases ended in which result state along some other
> basic information.
> +
> +    Subclassing :class:`dict` provides a convenient way to format the
> data.
>      """
>
>      def __init__(self, dpdk_version: str | None):
> +        """Extend the constructor with relevant keys.
> +
> +        Args:
> +            dpdk_version: The version of tested DPDK.
> +        """
>

Should we maybe mark the "PASS RATE" and the "DPDK VERSION" as instance
variables of the class?


>          super(Statistics, self).__init__()
>          for result in Result:
>              self[result.name] = 0
> @@ -78,8 +114,17 @@ def __init__(self, dpdk_version: str | None):
>          self["DPDK VERSION"] = dpdk_version
>
>      def __iadd__(self, other: Result) -> "Statistics":
> -        """
> -        Add a Result to the final count.
> +        """Add a Result to the final count.
> +
> +        Example:
> +            stats: Statistics = Statistics()  # empty Statistics
> +            stats += Result.PASS  # add a Result to `stats`
> +
> +        Args:
> +            other: The Result to add to this statistics object.
> +
> +        Returns:
> +            The modified statistics object.
>          """
>          self[other.name] += 1
>          self["PASS RATE"] = (
> @@ -90,9 +135,7 @@ def __iadd__(self, other: Result) -> "Statistics":
>          return self
>
>      def __str__(self) -> str:
> -        """
> -        Provide a string representation of the data.
> -        """
> +        """Each line contains the formatted key = value pair."""
>          stats_str = ""
>          for key, value in self.items():
>              stats_str += f"{key:<12} = {value}\n"
> @@ -102,10 +145,16 @@ def __str__(self) -> str:
>
>
>  class BaseResult(object):
> -    """
> -    The Base class for all results. Stores the results of
> -    the setup and teardown portions of the corresponding stage
> -    and a list of results from each inner stage in _inner_results.
> +    """Common data and behavior of DTS results.
> +
> +    Stores the results of the setup and teardown portions of the
> corresponding stage.
> +    The hierarchical nature of DTS results is captured recursively in an
> internal list.
> +    A stage is each level in this particular hierarchy (pre-execution or
> the top-most level,
> +    execution, build target, test suite and test case.)
> +
> +    Attributes:
> +        setup_result: The result of the setup of the particular stage.
> +        teardown_result: The results of the teardown of the particular
> stage.
>      """
>

I think this might be another case of the attributes should be marked as
class variables instead of instance variables.


>
>      setup_result: FixtureResult
> @@ -113,15 +162,28 @@ class BaseResult(object):
>      _inner_results: MutableSequence["BaseResult"]
>
>      def __init__(self):
> +        """Initialize the constructor."""
>          self.setup_result = FixtureResult()
>          self.teardown_result = FixtureResult()
>          self._inner_results = []
>
>      def update_setup(self, result: Result, error: Exception | None =
> None) -> None:
> +        """Store the setup result.
> +
> +        Args:
> +            result: The result of the setup.
> +            error: The error that occurred in case of a failure.
> +        """
>          self.setup_result.result = result
>          self.setup_result.error = error
>
>      def update_teardown(self, result: Result, error: Exception | None =
> None) -> None:
> +        """Store the teardown result.
> +
> +        Args:
> +            result: The result of the teardown.
> +            error: The error that occurred in case of a failure.
> +        """
>          self.teardown_result.result = result
>          self.teardown_result.error = error
>
> @@ -141,27 +203,55 @@ def _get_inner_errors(self) -> list[Exception]:
>          ]
>
>      def get_errors(self) -> list[Exception]:
> +        """Compile errors from the whole result hierarchy.
> +
> +        Returns:
> +            The errors from setup, teardown and all errors found in the
> whole result hierarchy.
> +        """
>          return self._get_setup_teardown_errors() +
> self._get_inner_errors()
>
>      def add_stats(self, statistics: Statistics) -> None:
> +        """Collate stats from the whole result hierarchy.
> +
> +        Args:
> +            statistics: The :class:`Statistics` object where the stats
> will be collated.
> +        """
>          for inner_result in self._inner_results:
>              inner_result.add_stats(statistics)
>
>
>  class TestCaseResult(BaseResult, FixtureResult):
> -    """
> -    The test case specific result.
> -    Stores the result of the actual test case.
> -    Also stores the test case name.
> +    r"""The test case specific result.
> +
> +    Stores the result of the actual test case. This is done by adding an
> extra superclass
> +    in :class:`FixtureResult`. The setup and teardown results are
> :class:`FixtureResult`\s and
> +    the class is itself a record of the test case.
> +
> +    Attributes:
> +        test_case_name: The test case name.
>      """
>
>
Another spot where I think this should have a class variable comment.


>      test_case_name: str
>
>      def __init__(self, test_case_name: str):
> +        """Extend the constructor with `test_case_name`.
> +
> +        Args:
> +            test_case_name: The test case's name.
> +        """
>          super(TestCaseResult, self).__init__()
>          self.test_case_name = test_case_name
>
>      def update(self, result: Result, error: Exception | None = None) ->
> None:
> +        """Update the test case result.
> +
> +        This updates the result of the test case itself and doesn't affect
> +        the results of the setup and teardown steps in any way.
> +
> +        Args:
> +            result: The result of the test case.
> +            error: The error that occurred in case of a failure.
> +        """
>          self.result = result
>          self.error = error
>
> @@ -171,38 +261,66 @@ def _get_inner_errors(self) -> list[Exception]:
>          return []
>
>      def add_stats(self, statistics: Statistics) -> None:
> +        r"""Add the test case result to statistics.
> +
> +        The base method goes through the hierarchy recursively and this
> method is here to stop
> +        the recursion, as the :class:`TestCaseResult`\s are the leaves of
> the hierarchy tree.
> +
> +        Args:
> +            statistics: The :class:`Statistics` object where the stats
> will be added.
> +        """
>          statistics += self.result
>
>      def __bool__(self) -> bool:
> +        """The test case passed only if setup, teardown and the test case
> itself passed."""
>          return (
>              bool(self.setup_result) and bool(self.teardown_result) and
> bool(self.result)
>          )
>
>
>  class TestSuiteResult(BaseResult):
> -    """
> -    The test suite specific result.
> -    The _inner_results list stores results of test cases in a given test
> suite.
> -    Also stores the test suite name.
> +    """The test suite specific result.
> +
> +    The internal list stores the results of all test cases in a given
> test suite.
> +
> +    Attributes:
> +        suite_name: The test suite name.
>      """
>
>
I think this should also be a class variable.



>      suite_name: str
>
>      def __init__(self, suite_name: str):
> +        """Extend the constructor with `suite_name`.
> +
> +        Args:
> +            suite_name: The test suite's name.
> +        """
>          super(TestSuiteResult, self).__init__()
>          self.suite_name = suite_name
>
>      def add_test_case(self, test_case_name: str) -> TestCaseResult:
> +        """Add and return the inner result (test case).
> +
> +        Returns:
> +            The test case's result.
> +        """
>          test_case_result = TestCaseResult(test_case_name)
>          self._inner_results.append(test_case_result)
>          return test_case_result
>
>
>  class BuildTargetResult(BaseResult):
> -    """
> -    The build target specific result.
> -    The _inner_results list stores results of test suites in a given
> build target.
> -    Also stores build target specifics, such as compiler used to build
> DPDK.
> +    """The build target specific result.
> +
> +    The internal list stores the results of all test suites in a given
> build target.
> +
> +    Attributes:
> +        arch: The DPDK build target architecture.
> +        os: The DPDK build target operating system.
> +        cpu: The DPDK build target CPU.
> +        compiler: The DPDK build target compiler.
> +        compiler_version: The DPDK build target compiler version.
> +        dpdk_version: The built DPDK version.
>      """
>

I think this should be broken into class variables as well.


>
>      arch: Architecture
> @@ -213,6 +331,11 @@ class BuildTargetResult(BaseResult):
>      dpdk_version: str | None
>
>      def __init__(self, build_target: BuildTargetConfiguration):
> +        """Extend the constructor with the `build_target`'s build target
> config.
> +
> +        Args:
> +            build_target: The build target's test run configuration.
> +        """
>          super(BuildTargetResult, self).__init__()
>          self.arch = build_target.arch
>          self.os = build_target.os
> @@ -222,20 +345,35 @@ def __init__(self, build_target:
> BuildTargetConfiguration):
>          self.dpdk_version = None
>
>      def add_build_target_info(self, versions: BuildTargetInfo) -> None:
> +        """Add information about the build target gathered at runtime.
> +
> +        Args:
> +            versions: The additional information.
> +        """
>          self.compiler_version = versions.compiler_version
>          self.dpdk_version = versions.dpdk_version
>
>      def add_test_suite(self, test_suite_name: str) -> TestSuiteResult:
> +        """Add and return the inner result (test suite).
> +
> +        Returns:
> +            The test suite's result.
> +        """
>          test_suite_result = TestSuiteResult(test_suite_name)
>          self._inner_results.append(test_suite_result)
>          return test_suite_result
>
>
>  class ExecutionResult(BaseResult):
> -    """
> -    The execution specific result.
> -    The _inner_results list stores results of build targets in a given
> execution.
> -    Also stores the SUT node configuration.
> +    """The execution specific result.
> +
> +    The internal list stores the results of all build targets in a given
> execution.
> +
> +    Attributes:
> +        sut_node: The SUT node used in the execution.
> +        sut_os_name: The operating system of the SUT node.
> +        sut_os_version: The operating system version of the SUT node.
> +        sut_kernel_version: The operating system kernel version of the
> SUT node.
>      """
>
>
I think these should be class variables as well.


>      sut_node: NodeConfiguration
> @@ -244,36 +382,55 @@ class ExecutionResult(BaseResult):
>      sut_kernel_version: str
>
>      def __init__(self, sut_node: NodeConfiguration):
> +        """Extend the constructor with the `sut_node`'s config.
> +
> +        Args:
> +            sut_node: The SUT node's test run configuration used in the
> execution.
> +        """
>          super(ExecutionResult, self).__init__()
>          self.sut_node = sut_node
>
>      def add_build_target(
>          self, build_target: BuildTargetConfiguration
>      ) -> BuildTargetResult:
> +        """Add and return the inner result (build target).
> +
> +        Args:
> +            build_target: The build target's test run configuration.
> +
> +        Returns:
> +            The build target's result.
> +        """
>          build_target_result = BuildTargetResult(build_target)
>          self._inner_results.append(build_target_result)
>          return build_target_result
>
>      def add_sut_info(self, sut_info: NodeInfo) -> None:
> +        """Add SUT information gathered at runtime.
> +
> +        Args:
> +            sut_info: The additional SUT node information.
> +        """
>          self.sut_os_name = sut_info.os_name
>          self.sut_os_version = sut_info.os_version
>          self.sut_kernel_version = sut_info.kernel_version
>
>
>  class DTSResult(BaseResult):
> -    """
> -    Stores environment information and test results from a DTS run, which
> are:
> -    * Execution level information, such as SUT and TG hardware.
> -    * Build target level information, such as compiler, target OS and cpu.
> -    * Test suite results.
> -    * All errors that are caught and recorded during DTS execution.
> +    """Stores environment information and test results from a DTS run.
>
> -    The information is stored in nested objects.
> +        * Execution level information, such as testbed and the test suite
> list,
> +        * Build target level information, such as compiler, target OS and
> cpu,
> +        * Test suite and test case results,
> +        * All errors that are caught and recorded during DTS execution.
>
> -    The class is capable of computing the return code used to exit DTS
> with
> -    from the stored error.
> +    The information is stored hierarchically. This is the first level of
> the hierarchy
> +    and as such is where the data form the whole hierarchy is collated or
> processed.
>
> -    It also provides a brief statistical summary of passed/failed test
> cases.
> +    The internal list stores the results of all executions.
> +
> +    Attributes:
> +        dpdk_version: The DPDK version to record.
>      """
>
>
I think this should be a class variable as well.


>      dpdk_version: str | None
> @@ -284,6 +441,11 @@ class DTSResult(BaseResult):
>      _stats_filename: str
>
>      def __init__(self, logger: DTSLOG):
> +        """Extend the constructor with top-level specifics.
> +
> +        Args:
> +            logger: The logger instance the whole result will use.
> +        """
>          super(DTSResult, self).__init__()
>          self.dpdk_version = None
>          self._logger = logger
> @@ -293,21 +455,33 @@ def __init__(self, logger: DTSLOG):
>          self._stats_filename = os.path.join(SETTINGS.output_dir,
> "statistics.txt")
>
>      def add_execution(self, sut_node: NodeConfiguration) ->
> ExecutionResult:
> +        """Add and return the inner result (execution).
> +
> +        Args:
> +            sut_node: The SUT node's test run configuration.
> +
> +        Returns:
> +            The execution's result.
> +        """
>          execution_result = ExecutionResult(sut_node)
>          self._inner_results.append(execution_result)
>          return execution_result
>
>      def add_error(self, error: Exception) -> None:
> +        """Record an error that occurred outside any execution.
> +
> +        Args:
> +            error: The exception to record.
> +        """
>          self._errors.append(error)
>
>      def process(self) -> None:
> -        """
> -        Process the data after a DTS run.
> -        The data is added to nested objects during runtime and this
> parent object
> -        is not updated at that time. This requires us to process the
> nested data
> -        after it's all been gathered.
> +        """Process the data after a whole DTS run.
> +
> +        The data is added to inner objects during runtime and this object
> is not updated
> +        at that time. This requires us to process the inner data after
> it's all been gathered.
>
> -        The processing gathers all errors and the result statistics of
> test cases.
> +        The processing gathers all errors and the statistics of test case
> results.
>          """
>          self._errors += self.get_errors()
>          if self._errors and self._logger:
> @@ -321,8 +495,10 @@ def process(self) -> None:
>              stats_file.write(str(self._stats_result))
>
>      def get_return_code(self) -> int:
> -        """
> -        Go through all stored Exceptions and return the highest error
> code found.
> +        """Go through all stored Exceptions and return the final DTS
> error code.
> +
> +        Returns:
> +            The highest error code found.
>          """
>          for error in self._errors:
>              error_return_code = ErrorSeverity.GENERIC_ERR
> --
> 2.34.1
>
>

[-- Attachment #2: Type: text/html, Size: 27447 bytes --]

  reply	other threads:[~2023-11-16 22:47 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 [this message]
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š
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=CAAA20UQasL65A+RhjE4TcrUSWbCnzBNZMTqDKz4sZ6XBbNnX3Q@mail.gmail.com \
    --to=jspewock@iol.unh.edu \
    --cc=Honnappa.Nagarahalli@arm.com \
    --cc=dev@dpdk.org \
    --cc=juraj.linkes@pantheon.tech \
    --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).