get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/134587/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 134587,
    "url": "http://patches.dpdk.org/api/patches/134587/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20231123151344.162812-22-juraj.linkes@pantheon.tech/",
    "project": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20231123151344.162812-22-juraj.linkes@pantheon.tech>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20231123151344.162812-22-juraj.linkes@pantheon.tech",
    "date": "2023-11-23T15:13:44",
    "name": "[v8,21/21] dts: test suites docstring update",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "0f1e683ce4d35bbba89268dc70473a12c58f7d64",
    "submitter": {
        "id": 1626,
        "url": "http://patches.dpdk.org/api/people/1626/?format=api",
        "name": "Juraj Linkeš",
        "email": "juraj.linkes@pantheon.tech"
    },
    "delegate": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/users/1/?format=api",
        "username": "tmonjalo",
        "first_name": "Thomas",
        "last_name": "Monjalon",
        "email": "thomas@monjalon.net"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20231123151344.162812-22-juraj.linkes@pantheon.tech/mbox/",
    "series": [
        {
            "id": 30375,
            "url": "http://patches.dpdk.org/api/series/30375/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=30375",
            "date": "2023-11-23T15:13:23",
            "name": "dts: docstrings update",
            "version": 8,
            "mbox": "http://patches.dpdk.org/series/30375/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/134587/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/134587/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 5F63C433AC;\n\tThu, 23 Nov 2023 16:17:10 +0100 (CET)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 9F9BE432CA;\n\tThu, 23 Nov 2023 16:14:31 +0100 (CET)",
            "from mail-wr1-f50.google.com (mail-wr1-f50.google.com\n [209.85.221.50]) by mails.dpdk.org (Postfix) with ESMTP id 93B0842FD9\n for <dev@dpdk.org>; Thu, 23 Nov 2023 16:14:14 +0100 (CET)",
            "by mail-wr1-f50.google.com with SMTP id\n ffacd0b85a97d-32dc9ff4a8fso641073f8f.1\n for <dev@dpdk.org>; Thu, 23 Nov 2023 07:14:14 -0800 (PST)",
            "from jlinkes-PT-Latitude-5530.. ([84.245.121.10])\n by smtp.gmail.com with ESMTPSA id\n q4-20020adfea04000000b003296b488961sm1870143wrm.31.2023.11.23.07.14.13\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Thu, 23 Nov 2023 07:14:13 -0800 (PST)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=pantheon.tech; s=google; t=1700752454; x=1701357254; darn=dpdk.org;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:from:to:cc:subject:date\n :message-id:reply-to;\n bh=Gu+4JrC2IuPtEiL7DfKPBV14u/4QgUSAAuxdak3zylg=;\n b=iitlq/k/emhXzi/+TIuSK5kYq/fAAakr1QWl8a9IMcj8YgV8hGYvraNJMTGWChghvB\n lCBKW4nD7VHbw1A6lZwL+koK/H/DWP8c7EyjQsKwzPA0SecrmoEE4Jc23rtqqwKUPU/5\n Ee/MBy3icvY/MbC38PvRt9FKjcQElWHbafmUyBBdwLH8dcuG0E/bGXi62bUbXqZix/iJ\n ijJsG2AcJ8BCkTadc2OkOBLjnMapuJokITMEefhM+j+ikZEydnRcuqy0o6NOaghQGVh0\n 24pbbpIPi7dtFOZVx3i5mkFr+8I5n0cmCJMP/OQ08rVOvZXUM40xFelDG1ly+2IBHtUP\n k+Tw==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20230601; t=1700752454; x=1701357254;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc\n :subject:date:message-id:reply-to;\n bh=Gu+4JrC2IuPtEiL7DfKPBV14u/4QgUSAAuxdak3zylg=;\n b=uVqzOcUrr/3XrnlPDUp5aa6y6Fw7eSO6qik6uwHK1f6iSpKaROxrvXZn/tNZE3x5ee\n wCSglQuhVUGj/woSjXNjThEOO9uvs0AzimkW9y87u9O7/m0F1Rq8XAhjYQIOxwA8xbRn\n seheby9XrRq+33v6MU4A1eAcnnMSL2te+1obQzaFZ7UoCjroA5ir4WjtpnXhIpepvmXA\n 9/eA79TX8yWyXKr8LqN5It8COV8lcGTqjawLDZu4lHWh6hBLrOj5jJpJN45ptgEPuSZF\n yvitQCSE1n+8hDQh0fQpzhXW9iLJ07lb3PqYa8IHZl1LoFbL0Ay1TtGuPnvBEPYvibf8\n Y2yw==",
        "X-Gm-Message-State": "AOJu0YzrHbFPxVxco3Py3Ku2B9nh13xbzuDO1Hz1rqOBdxafbkfnQF0g\n kPJF+4xwRbE+oS0Co/QlQxmGwA==",
        "X-Google-Smtp-Source": "\n AGHT+IHuvRdxsjO1gTvqaZnQFq4HjH74AbVs7cw7qN5ApRzrnSU2ggjxZ2GioDZFc5jDLnnJRN3bbA==",
        "X-Received": "by 2002:a05:6000:a18:b0:332:c331:f508 with SMTP id\n co24-20020a0560000a1800b00332c331f508mr5473530wrb.16.1700752454221;\n Thu, 23 Nov 2023 07:14:14 -0800 (PST)",
        "From": "=?utf-8?q?Juraj_Linke=C5=A1?= <juraj.linkes@pantheon.tech>",
        "To": "thomas@monjalon.net, Honnappa.Nagarahalli@arm.com, jspewock@iol.unh.edu,\n probb@iol.unh.edu, paul.szczepanek@arm.com, yoan.picchi@foss.arm.com,\n Luca.Vizzarro@arm.com",
        "Cc": "dev@dpdk.org, =?utf-8?q?Juraj_Linke=C5=A1?= <juraj.linkes@pantheon.tech>",
        "Subject": "[PATCH v8 21/21] dts: test suites docstring update",
        "Date": "Thu, 23 Nov 2023 16:13:44 +0100",
        "Message-Id": "<20231123151344.162812-22-juraj.linkes@pantheon.tech>",
        "X-Mailer": "git-send-email 2.34.1",
        "In-Reply-To": "<20231123151344.162812-1-juraj.linkes@pantheon.tech>",
        "References": "<20231115130959.39420-1-juraj.linkes@pantheon.tech>\n <20231123151344.162812-1-juraj.linkes@pantheon.tech>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=UTF-8",
        "Content-Transfer-Encoding": "8bit",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org"
    },
    "content": "Format according to the Google format and PEP257, with slight\ndeviations.\n\nSigned-off-by: Juraj Linkeš <juraj.linkes@pantheon.tech>\n---\n dts/tests/TestSuite_hello_world.py | 16 +++++---\n dts/tests/TestSuite_os_udp.py      | 20 ++++++----\n dts/tests/TestSuite_smoke_tests.py | 61 ++++++++++++++++++++++++------\n 3 files changed, 72 insertions(+), 25 deletions(-)",
    "diff": "diff --git a/dts/tests/TestSuite_hello_world.py b/dts/tests/TestSuite_hello_world.py\nindex 768ba1cfa8..fd7ff1534d 100644\n--- a/dts/tests/TestSuite_hello_world.py\n+++ b/dts/tests/TestSuite_hello_world.py\n@@ -1,7 +1,8 @@\n # SPDX-License-Identifier: BSD-3-Clause\n # Copyright(c) 2010-2014 Intel Corporation\n \n-\"\"\"\n+\"\"\"The DPDK hello world app test suite.\n+\n Run the helloworld example app and verify it prints a message for each used core.\n No other EAL parameters apart from cores are used.\n \"\"\"\n@@ -15,22 +16,25 @@\n \n \n class TestHelloWorld(TestSuite):\n+    \"\"\"DPDK hello world app test suite.\"\"\"\n+\n     def set_up_suite(self) -> None:\n-        \"\"\"\n+        \"\"\"Set up the test suite.\n+\n         Setup:\n             Build the app we're about to test - helloworld.\n         \"\"\"\n         self.app_helloworld_path = self.sut_node.build_dpdk_app(\"helloworld\")\n \n     def test_hello_world_single_core(self) -> None:\n-        \"\"\"\n+        \"\"\"Single core test case.\n+\n         Steps:\n             Run the helloworld app on the first usable logical core.\n         Verify:\n             The app prints a message from the used core:\n             \"hello from core <core_id>\"\n         \"\"\"\n-\n         # get the first usable core\n         lcore_amount = LogicalCoreCount(1, 1, 1)\n         lcores = LogicalCoreCountFilter(self.sut_node.lcores, lcore_amount).filter()\n@@ -42,14 +46,14 @@ def test_hello_world_single_core(self) -> None:\n         )\n \n     def test_hello_world_all_cores(self) -> None:\n-        \"\"\"\n+        \"\"\"All cores test case.\n+\n         Steps:\n             Run the helloworld app on all usable logical cores.\n         Verify:\n             The app prints a message from all used cores:\n             \"hello from core <core_id>\"\n         \"\"\"\n-\n         # get the maximum logical core number\n         eal_para = self.sut_node.create_eal_parameters(\n             lcore_filter_specifier=LogicalCoreList(self.sut_node.lcores)\ndiff --git a/dts/tests/TestSuite_os_udp.py b/dts/tests/TestSuite_os_udp.py\nindex bf6b93deb5..2cf29d37bb 100644\n--- a/dts/tests/TestSuite_os_udp.py\n+++ b/dts/tests/TestSuite_os_udp.py\n@@ -1,7 +1,8 @@\n # SPDX-License-Identifier: BSD-3-Clause\n # Copyright(c) 2023 PANTHEON.tech s.r.o.\n \n-\"\"\"\n+\"\"\"Basic IPv4 OS routing test suite.\n+\n Configure SUT node to route traffic from if1 to if2.\n Send a packet to the SUT node, verify it comes back on the second port on the TG node.\n \"\"\"\n@@ -13,24 +14,26 @@\n \n \n class TestOSUdp(TestSuite):\n+    \"\"\"IPv4 UDP OS routing test suite.\"\"\"\n+\n     def set_up_suite(self) -> None:\n-        \"\"\"\n+        \"\"\"Set up the test suite.\n+\n         Setup:\n-            Configure SUT ports and SUT to route traffic from if1 to if2.\n+            Bind the SUT ports to the OS driver, configure the ports and configure the SUT\n+            to route traffic from if1 to if2.\n         \"\"\"\n-\n-        # This test uses kernel drivers\n         self.sut_node.bind_ports_to_driver(for_dpdk=False)\n         self.configure_testbed_ipv4()\n \n     def test_os_udp(self) -> None:\n-        \"\"\"\n+        \"\"\"Basic UDP IPv4 traffic test case.\n+\n         Steps:\n             Send a UDP packet.\n         Verify:\n             The packet with proper addresses arrives at the other TG port.\n         \"\"\"\n-\n         packet = Ether() / IP() / UDP()\n \n         received_packets = self.send_packet_and_capture(packet)\n@@ -40,7 +43,8 @@ def test_os_udp(self) -> None:\n         self.verify_packets(expected_packet, received_packets)\n \n     def tear_down_suite(self) -> None:\n-        \"\"\"\n+        \"\"\"Tear down the test suite.\n+\n         Teardown:\n             Remove the SUT port configuration configured in setup.\n         \"\"\"\ndiff --git a/dts/tests/TestSuite_smoke_tests.py b/dts/tests/TestSuite_smoke_tests.py\nindex 8958f58dac..5e2bac14bd 100644\n--- a/dts/tests/TestSuite_smoke_tests.py\n+++ b/dts/tests/TestSuite_smoke_tests.py\n@@ -1,6 +1,17 @@\n # SPDX-License-Identifier: BSD-3-Clause\n # Copyright(c) 2023 University of New Hampshire\n \n+\"\"\"Smoke test suite.\n+\n+Smoke tests are a class of tests which are used for validating a minimal set of important features.\n+These are the most important features without which (or when they're faulty) the software wouldn't\n+work properly. Thus, if any failure occurs while testing these features,\n+there isn't that much of a reason to continue testing, as the software is fundamentally broken.\n+\n+These tests don't have to include only DPDK tests, as the reason for failures could be\n+in the infrastructure (a faulty link between NICs or a misconfiguration).\n+\"\"\"\n+\n import re\n \n from framework.config import PortConfig\n@@ -11,23 +22,39 @@\n \n \n class SmokeTests(TestSuite):\n+    \"\"\"DPDK and infrastructure smoke test suite.\n+\n+    The test cases validate the most basic DPDK functionality needed for all other test suites.\n+    The infrastructure also needs to be tested, as that is also used by all other test suites.\n+\n+    Attributes:\n+        is_blocking: This test suite will block the execution of all other test suites\n+            in the build target after it.\n+        nics_in_node: The NICs present on the SUT node.\n+    \"\"\"\n+\n     is_blocking = True\n     # dicts in this list are expected to have two keys:\n     # \"pci_address\" and \"current_driver\"\n     nics_in_node: list[PortConfig] = []\n \n     def set_up_suite(self) -> None:\n-        \"\"\"\n+        \"\"\"Set up the test suite.\n+\n         Setup:\n-            Set the build directory path and generate a list of NICs in the SUT node.\n+            Set the build directory path and a list of NICs in the SUT node.\n         \"\"\"\n         self.dpdk_build_dir_path = self.sut_node.remote_dpdk_build_dir\n         self.nics_in_node = self.sut_node.config.ports\n \n     def test_unit_tests(self) -> None:\n-        \"\"\"\n+        \"\"\"DPDK meson ``fast-tests`` unit tests.\n+\n+        Test that all unit test from the ``fast-tests`` suite pass.\n+        The suite is a subset with only the most basic tests.\n+\n         Test:\n-            Run the fast-test unit-test suite through meson.\n+            Run the ``fast-tests`` unit test suite through meson.\n         \"\"\"\n         self.sut_node.main_session.send_command(\n             f\"meson test -C {self.dpdk_build_dir_path} --suite fast-tests -t 60\",\n@@ -37,9 +64,14 @@ def test_unit_tests(self) -> None:\n         )\n \n     def test_driver_tests(self) -> None:\n-        \"\"\"\n+        \"\"\"DPDK meson ``driver-tests`` unit tests.\n+\n+        Test that all unit test from the ``driver-tests`` suite pass.\n+        The suite is a subset with driver tests. This suite may be run with virtual devices\n+        configured in the test run configuration.\n+\n         Test:\n-            Run the driver-test unit-test suite through meson.\n+            Run the ``driver-tests`` unit test suite through meson.\n         \"\"\"\n         vdev_args = \"\"\n         for dev in self.sut_node.virtual_devices:\n@@ -60,9 +92,12 @@ def test_driver_tests(self) -> None:\n         )\n \n     def test_devices_listed_in_testpmd(self) -> None:\n-        \"\"\"\n+        \"\"\"Testpmd device discovery.\n+\n+        Test that the devices configured in the test run configuration are found in testpmd.\n+\n         Test:\n-            Uses testpmd driver to verify that devices have been found by testpmd.\n+            List all devices found in testpmd and verify the configured devices are among them.\n         \"\"\"\n         testpmd_driver = self.sut_node.create_interactive_shell(TestPmdShell, privileged=True)\n         dev_list = [str(x) for x in testpmd_driver.get_devices()]\n@@ -74,10 +109,14 @@ def test_devices_listed_in_testpmd(self) -> None:\n             )\n \n     def test_device_bound_to_driver(self) -> None:\n-        \"\"\"\n+        \"\"\"Device driver in OS.\n+\n+        Test that the devices configured in the test run configuration are bound to\n+        the proper driver.\n+\n         Test:\n-            Ensure that all drivers listed in the config are bound to the correct\n-            driver.\n+            List all devices with the ``dpdk-devbind.py`` script and verify that\n+            the configured devices are bound to the proper driver.\n         \"\"\"\n         path_to_devbind = self.sut_node.path_to_devbind_script\n \n",
    "prefixes": [
        "v8",
        "21/21"
    ]
}