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 08/21] dts: test suite docstring update
Date: Thu, 16 Nov 2023 17:16:17 -0500 [thread overview]
Message-ID: <CAAA20UT=HQ9aw5-Q7P3duSFhuH+maoMZ6zrCsybWd5X7Azrp2A@mail.gmail.com> (raw)
In-Reply-To: <20231115130959.39420-9-juraj.linkes@pantheon.tech>
[-- Attachment #1: Type: text/plain, Size: 16583 bytes --]
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_suite.py | 223 +++++++++++++++++++++++++++---------
> 1 file changed, 168 insertions(+), 55 deletions(-)
>
> diff --git a/dts/framework/test_suite.py b/dts/framework/test_suite.py
> index d53553bf34..9e5251ffc6 100644
> --- a/dts/framework/test_suite.py
> +++ b/dts/framework/test_suite.py
> @@ -2,8 +2,19 @@
> # Copyright(c) 2010-2014 Intel Corporation
> # Copyright(c) 2023 PANTHEON.tech s.r.o.
>
> -"""
> -Base class for creating DTS test cases.
> +"""Features common to all test suites.
> +
> +The module defines the :class:`TestSuite` class which doesn't contain any
> test cases, and as such
> +must be extended by subclasses which add test cases. The
> :class:`TestSuite` contains the basics
> +needed by subclasses:
> +
> + * Test suite and test case execution flow,
> + * Testbed (SUT, TG) configuration,
> + * Packet sending and verification,
> + * Test case verification.
> +
> +The module also defines a function, :func:`get_test_suites`,
> +for gathering test suites from a Python module.
> """
>
> import importlib
> @@ -31,25 +42,44 @@
>
>
> class TestSuite(object):
> - """
> - The base TestSuite class provides methods for handling basic flow of
> a test suite:
> - * test case filtering and collection
> - * test suite setup/cleanup
> - * test setup/cleanup
> - * test case execution
> - * error handling and results storage
> - Test cases are implemented by derived classes. Test cases are all
> methods
> - starting with test_, further divided into performance test cases
> - (starting with test_perf_) and functional test cases (all other test
> cases).
> - By default, all test cases will be executed. A list of testcase str
> names
> - may be specified in conf.yaml or on the command line
> - to filter which test cases to run.
> - The methods named [set_up|tear_down]_[suite|test_case] should be
> overridden
> - in derived classes if the appropriate suite/test case fixtures are
> needed.
> + """The base class with methods for handling the basic flow of a test
> suite.
> +
> + * Test case filtering and collection,
> + * Test suite setup/cleanup,
> + * Test setup/cleanup,
> + * Test case execution,
> + * Error handling and results storage.
> +
> + Test cases are implemented by subclasses. Test cases are all methods
> starting with ``test_``,
> + further divided into performance test cases (starting with
> ``test_perf_``)
> + and functional test cases (all other test cases).
> +
> + By default, all test cases will be executed. A list of testcase names
> may be specified
> + in the YAML test run configuration file and in the
> :option:`--test-cases` command line argument
> + or in the :envvar:`DTS_TESTCASES` environment variable to filter
> which test cases to run.
> + The union of both lists will be used. Any unknown test cases from the
> latter lists
> + will be silently ignored.
> +
> + If the :option:`--re-run` command line argument or the
> :envvar:`DTS_RERUN` environment variable
> + is set, in case of a test case failure, the test case will be
> executed again until it passes
> + or it fails that many times in addition of the first failure.
> +
> + The methods named ``[set_up|tear_down]_[suite|test_case]`` should be
> overridden in subclasses
> + if the appropriate test suite/test case fixtures are needed.
> +
> + The test suite is aware of the testbed (the SUT and TG) it's running
> on. From this, it can
> + properly choose the IP addresses and other configuration that must be
> tailored to the testbed.
> +
> + Attributes:
> + sut_node: The SUT node where the test suite is running.
> + tg_node: The TG node where the test suite is running.
> + is_blocking: Whether the test suite is blocking. A failure of a
> blocking test suite
> + will block the execution of all subsequent test suites in the
> current build target.
> """
>
Should this attribute section instead be comments in the form "#:" because
they are class variables instead of instance ones?
>
> sut_node: SutNode
> - is_blocking = False
> + tg_node: TGNode
> + is_blocking: bool = False
> _logger: DTSLOG
> _test_cases_to_run: list[str]
> _func: bool
> @@ -72,6 +102,19 @@ def __init__(
> func: bool,
> build_target_result: BuildTargetResult,
> ):
> + """Initialize the test suite testbed information and basic
> configuration.
> +
> + Process what test cases to run, create the associated
> :class:`TestSuiteResult`,
> + find links between ports and set up default IP addresses to be
> used when configuring them.
> +
> + Args:
> + sut_node: The SUT node where the test suite will run.
> + tg_node: The TG node where the test suite will run.
> + test_cases: The list of test cases to execute.
> + If empty, all test cases will be executed.
> + func: Whether to run functional tests.
> + build_target_result: The build target result this test suite
> is run in.
> + """
> self.sut_node = sut_node
> self.tg_node = tg_node
> self._logger = getLogger(self.__class__.__name__)
> @@ -95,6 +138,7 @@ def __init__(
> self._tg_ip_address_ingress = ip_interface("192.168.101.3/24")
>
> def _process_links(self) -> None:
> + """Construct links between SUT and TG ports."""
> for sut_port in self.sut_node.ports:
> for tg_port in self.tg_node.ports:
> if (sut_port.identifier, sut_port.peer) == (
> @@ -106,27 +150,42 @@ def _process_links(self) -> None:
> )
>
> def set_up_suite(self) -> None:
> - """
> - Set up test fixtures common to all test cases; this is done before
> - any test case is run.
> + """Set up test fixtures common to all test cases.
> +
> + This is done before any test case has been run.
> """
>
> def tear_down_suite(self) -> None:
> - """
> - Tear down the previously created test fixtures common to all test
> cases.
> + """Tear down the previously created test fixtures common to all
> test cases.
> +
> + This is done after all test have been run.
> """
>
> def set_up_test_case(self) -> None:
> - """
> - Set up test fixtures before each test case.
> + """Set up test fixtures before each test case.
> +
> + This is done before *each* test case.
> """
>
> def tear_down_test_case(self) -> None:
> - """
> - Tear down the previously created test fixtures after each test
> case.
> + """Tear down the previously created test fixtures after each test
> case.
> +
> + This is done after *each* test case.
> """
>
> def configure_testbed_ipv4(self, restore: bool = False) -> None:
> + """Configure IPv4 addresses on all testbed ports.
> +
> + The configured ports are:
> +
> + * SUT ingress port,
> + * SUT egress port,
> + * TG ingress port,
> + * TG egress port.
> +
> + Args:
> + restore: If :data:`True`, will remove the configuration
> instead.
> + """
> delete = True if restore else False
> enable = False if restore else True
> self._configure_ipv4_forwarding(enable)
> @@ -153,11 +212,13 @@ def _configure_ipv4_forwarding(self, enable: bool)
> -> None:
> def send_packet_and_capture(
> self, packet: Packet, duration: float = 1
> ) -> list[Packet]:
> - """
> - Send a packet through the appropriate interface and
> - receive on the appropriate interface.
> - Modify the packet with l3/l2 addresses corresponding
> - to the testbed and desired traffic.
> + """Send and receive `packet` using the associated TG.
> +
> + Send `packet` through the appropriate interface and receive on
> the appropriate interface.
> + Modify the packet with l3/l2 addresses corresponding to the
> testbed and desired traffic.
> +
> + Returns:
> + A list of received packets.
> """
> packet = self._adjust_addresses(packet)
> return self.tg_node.send_packet_and_capture(
> @@ -165,13 +226,25 @@ def send_packet_and_capture(
> )
>
> def get_expected_packet(self, packet: Packet) -> Packet:
> + """Inject the proper L2/L3 addresses into `packet`.
> +
> + Args:
> + packet: The packet to modify.
> +
> + Returns:
> + `packet` with injected L2/L3 addresses.
> + """
> return self._adjust_addresses(packet, expected=True)
>
> def _adjust_addresses(self, packet: Packet, expected: bool = False)
> -> Packet:
> - """
> + """L2 and L3 address additions in both directions.
> +
> Assumptions:
> - Two links between SUT and TG, one link is TG -> SUT,
> - the other SUT -> TG.
> + Two links between SUT and TG, one link is TG -> SUT, the
> other SUT -> TG.
> +
> + Args:
> + packet: The packet to modify.
> + expected: If :data:`True`, the direction is SUT -> TG,
> otherwise the direction is TG -> SUT.
> """
> if expected:
> # The packet enters the TG from SUT
> @@ -197,6 +270,19 @@ def _adjust_addresses(self, packet: Packet, expected:
> bool = False) -> Packet:
> return Ether(packet.build())
>
> def verify(self, condition: bool, failure_description: str) -> None:
> + """Verify `condition` and handle failures.
> +
> + When `condition` is :data:`False`, raise an exception and log the
> last 10 commands
> + executed on both the SUT and TG.
> +
> + Args:
> + condition: The condition to check.
> + failure_description: A short description of the failure
> + that will be stored in the raised exception.
> +
> + Raises:
> + TestCaseVerifyError: `condition` is :data:`False`.
> + """
> if not condition:
> self._fail_test_case_verify(failure_description)
>
> @@ -216,6 +302,19 @@ def _fail_test_case_verify(self, failure_description:
> str) -> None:
> def verify_packets(
> self, expected_packet: Packet, received_packets: list[Packet]
> ) -> None:
> + """Verify that `expected_packet` has been received.
> +
> + Go through `received_packets` and check that `expected_packet` is
> among them.
> + If not, raise an exception and log the last 10 commands
> + executed on both the SUT and TG.
> +
> + Args:
> + expected_packet: The packet we're expecting to receive.
> + received_packets: The packets where we're looking for
> `expected_packet`.
> +
> + Raises:
> + TestCaseVerifyError: `expected_packet` is not among
> `received_packets`.
> + """
> for received_packet in received_packets:
> if self._compare_packets(expected_packet, received_packet):
> break
> @@ -303,10 +402,14 @@ def _verify_l3_packet(self, received_packet: IP,
> expected_packet: IP) -> bool:
> return True
>
> def run(self) -> None:
> - """
> - Setup, execute and teardown the whole suite.
> - Suite execution consists of running all test cases scheduled to
> be executed.
> - A test cast run consists of setup, execution and teardown of said
> test case.
> + """Set up, execute and tear down the whole suite.
> +
> + Test suite execution consists of running all test cases scheduled
> to be executed.
> + A test case run consists of setup, execution and teardown of said
> test case.
> +
> + Record the setup and the teardown and handle failures.
> +
> + The list of scheduled test cases is constructed when creating the
> :class:`TestSuite` object.
> """
> test_suite_name = self.__class__.__name__
>
> @@ -338,9 +441,7 @@ def run(self) -> None:
> raise BlockingTestSuiteError(test_suite_name)
>
> def _execute_test_suite(self) -> None:
> - """
> - Execute all test cases scheduled to be executed in this suite.
> - """
> + """Execute all test cases scheduled to be executed in this
> suite."""
> if self._func:
> for test_case_method in self._get_functional_test_cases():
> test_case_name = test_case_method.__name__
> @@ -357,14 +458,18 @@ def _execute_test_suite(self) -> None:
> self._run_test_case(test_case_method,
> test_case_result)
>
> def _get_functional_test_cases(self) -> list[MethodType]:
> - """
> - Get all functional test cases.
> + """Get all functional test cases defined in this TestSuite.
> +
> + Returns:
> + The list of functional test cases of this TestSuite.
> """
> return self._get_test_cases(r"test_(?!perf_)")
>
> def _get_test_cases(self, test_case_regex: str) -> list[MethodType]:
> - """
> - Return a list of test cases matching test_case_regex.
> + """Return a list of test cases matching test_case_regex.
> +
> + Returns:
> + The list of test cases matching test_case_regex of this
> TestSuite.
> """
> self._logger.debug(f"Searching for test cases in
> {self.__class__.__name__}.")
> filtered_test_cases = []
> @@ -378,9 +483,7 @@ def _get_test_cases(self, test_case_regex: str) ->
> list[MethodType]:
> return filtered_test_cases
>
> def _should_be_executed(self, test_case_name: str, test_case_regex:
> str) -> bool:
> - """
> - Check whether the test case should be executed.
> - """
> + """Check whether the test case should be scheduled to be
> executed."""
> match = bool(re.match(test_case_regex, test_case_name))
> if self._test_cases_to_run:
> return match and test_case_name in self._test_cases_to_run
> @@ -390,9 +493,9 @@ def _should_be_executed(self, test_case_name: str,
> test_case_regex: str) -> bool
> def _run_test_case(
> self, test_case_method: MethodType, test_case_result:
> TestCaseResult
> ) -> None:
> - """
> - Setup, execute and teardown a test case in this suite.
> - Exceptions are caught and recorded in logs and results.
> + """Setup, execute and teardown a test case in this suite.
> +
> + Record the result of the setup and the teardown and handle
> failures.
> """
> test_case_name = test_case_method.__name__
>
> @@ -427,9 +530,7 @@ def _run_test_case(
> def _execute_test_case(
> self, test_case_method: MethodType, test_case_result:
> TestCaseResult
> ) -> None:
> - """
> - Execute one test case and handle failures.
> - """
> + """Execute one test case, record the result and handle
> failures."""
> test_case_name = test_case_method.__name__
> try:
> self._logger.info(f"Starting test case execution:
> {test_case_name}")
> @@ -452,6 +553,18 @@ def _execute_test_case(
>
>
> def get_test_suites(testsuite_module_path: str) -> list[type[TestSuite]]:
> + r"""Find all :class:`TestSuite`\s in a Python module.
> +
> + Args:
> + testsuite_module_path: The path to the Python module.
> +
> + Returns:
> + The list of :class:`TestSuite`\s found within the Python module.
> +
> + Raises:
> + ConfigurationError: The test suite module was not found.
> + """
> +
> def is_test_suite(object: Any) -> bool:
> try:
> if issubclass(object, TestSuite) and object is not TestSuite:
> --
> 2.34.1
>
>
[-- Attachment #2: Type: text/html, Size: 20080 bytes --]
next prev parent reply other threads:[~2023-11-16 22:16 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 [this message]
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š
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='CAAA20UT=HQ9aw5-Q7P3duSFhuH+maoMZ6zrCsybWd5X7Azrp2A@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).