get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 109209,
    "url": "http://patchwork.dpdk.org/api/patches/109209/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dts/patch/20220406141902.20334-1-ohilyard@iol.unh.edu/",
    "project": {
        "id": 3,
        "url": "http://patchwork.dpdk.org/api/projects/3/?format=api",
        "name": "DTS",
        "link_name": "dts",
        "list_id": "dts.dpdk.org",
        "list_email": "dts@dpdk.org",
        "web_url": "",
        "scm_url": "git://dpdk.org/tools/dts",
        "webscm_url": "http://git.dpdk.org/tools/dts/",
        "list_archive_url": "https://inbox.dpdk.org/dts",
        "list_archive_url_format": "https://inbox.dpdk.org/dts/{}",
        "commit_url_format": ""
    },
    "msgid": "<20220406141902.20334-1-ohilyard@iol.unh.edu>",
    "list_archive_url": "https://inbox.dpdk.org/dts/20220406141902.20334-1-ohilyard@iol.unh.edu",
    "date": "2022-04-06T14:19:02",
    "name": "[v1] framework: Move test-specific files to test directory",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": false,
    "hash": "7d305ac3afb26d7b24ca9dfdc39a71cfd76557e5",
    "submitter": {
        "id": 1829,
        "url": "http://patchwork.dpdk.org/api/people/1829/?format=api",
        "name": "Owen Hilyard",
        "email": "ohilyard@iol.unh.edu"
    },
    "delegate": null,
    "mbox": "http://patchwork.dpdk.org/project/dts/patch/20220406141902.20334-1-ohilyard@iol.unh.edu/mbox/",
    "series": [
        {
            "id": 22372,
            "url": "http://patchwork.dpdk.org/api/series/22372/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dts/list/?series=22372",
            "date": "2022-04-06T14:19:02",
            "name": "[v1] framework: Move test-specific files to test directory",
            "version": 1,
            "mbox": "http://patchwork.dpdk.org/series/22372/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/patches/109209/comments/",
    "check": "fail",
    "checks": "http://patchwork.dpdk.org/api/patches/109209/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dts-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 A54A4A0507;\n\tWed,  6 Apr 2022 16:19:06 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 71ECC40689;\n\tWed,  6 Apr 2022 16:19:06 +0200 (CEST)",
            "from mail-pf1-f227.google.com (mail-pf1-f227.google.com\n [209.85.210.227])\n by mails.dpdk.org (Postfix) with ESMTP id 582654014F\n for <dts@dpdk.org>; Wed,  6 Apr 2022 16:19:05 +0200 (CEST)",
            "by mail-pf1-f227.google.com with SMTP id j17so1122913pfi.9\n for <dts@dpdk.org>; Wed, 06 Apr 2022 07:19:05 -0700 (PDT)",
            "from postal.iol.unh.edu (postal.iol.unh.edu.\n [2606:4100:3880:1234::84]) by smtp-relay.gmail.com with ESMTPS id\n 15-20020a17090a0ccf00b001c99eef07a4sm524626pjt.3.2022.04.06.07.19.04\n (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);\n Wed, 06 Apr 2022 07:19:04 -0700 (PDT)",
            "from iol.unh.edu (unknown [IPv6:2606:4100:3880:1257::105d])\n by postal.iol.unh.edu (Postfix) with ESMTP id 7BB4F605183A;\n Wed,  6 Apr 2022 10:19:03 -0400 (EDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=iol.unh.edu;\n s=unh-iol;\n h=from:to:cc:subject:date:message-id:mime-version\n :content-transfer-encoding;\n bh=Np05GdD6JVglPvlVFj18vK8JVCPIh9P47lM4lhRoL14=;\n b=ipBqL2y2RYOZF5mDhItDzvNsdsvraB/vo83ge95jDuAZ8lW+72wZvFO/ffei1AVB1/\n sCxL08g4Q9LYZXu6c63v2SfrYznphxPIEFFf7xaTOx/wpxOpQ5vAXCjkA3GpUHg+FauL\n XTNwcQK1naFwebOcgu3GJ1uvHSrdz6O51WFu0=",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20210112;\n h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version\n :content-transfer-encoding;\n bh=Np05GdD6JVglPvlVFj18vK8JVCPIh9P47lM4lhRoL14=;\n b=GgGRfKSRZbdkkDMuSkyFoZPZRkveqwGdINTZYv5T2dPslMk/xtYndMRwnFQnnKM3fg\n Hk4iUKLEXUkF7sBR8X3yI3YsSj1f3kVrPbiqBDKw1WQqutT+D9lMZdqD/6kkTELkG8K+\n IgvckfT5LTbENla6GYSAnF6tu+pnpWLtAJv16TVSG7qNfJ4BLDPNnQyap+TrrJFbVJpQ\n 4FhrcuuO6DKNVU5mu/EiLUbxBYBXcGUkBXzeZOHq2NHMO51KL0rj8RdZTr+hZVnEzM5Y\n PAhmInJoxHvLvcwAr/2/J/wL+yRzrIMoefKpE83r7lnTrm40uvC+cjq704Pmd3K0b+Ns\n A5yg==",
        "X-Gm-Message-State": "AOAM533628LhoNJ9x2yoit7k+pxVgXP2YHukClNi5Uud8pqN3V2Kl+M1\n JSn2QJgKW2FyDEUEI08LBYVc9ZHqiGXsXfQr79xPJHNPOVycvm4l+l5NVFtlzUZJdbOUKmX1K7i\n bKTGV/0a4fFpPuf6t3xXd21O+6h5r6RNwbxVAUNtEVvT94b7LxxT9u7SwZNKQizukPV7Y3FtoZ4\n p0Px7Y+NzybSm8eA==",
        "X-Google-Smtp-Source": "\n ABdhPJytisTuz5ToLup8FtEqiukMRy94aanMnvN61bsoeRxIcmwNm6SM9KA+YVyMuj0OsbrbuZHb5V8M68Vv",
        "X-Received": "by 2002:a63:a555:0:b0:382:3ec:ee4f with SMTP id\n r21-20020a63a555000000b0038203ecee4fmr7175580pgu.79.1649254744477;\n Wed, 06 Apr 2022 07:19:04 -0700 (PDT)",
        "X-Relaying-Domain": "iol.unh.edu",
        "From": "ohilyard@iol.unh.edu",
        "To": "dts@dpdk.org",
        "Cc": "lijuan.tu@intel.com, juraj.linkes@pantheon.tech,\n Owen Hilyard <ohilyard@iol.unh.edu>",
        "Subject": "[PATCH v1] framework: Move test-specific files to test directory",
        "Date": "Wed,  6 Apr 2022 10:19:02 -0400",
        "Message-Id": "<20220406141902.20334-1-ohilyard@iol.unh.edu>",
        "X-Mailer": "git-send-email 2.30.2",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "X-BeenThere": "dts@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "test suite reviews and discussions <dts.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dts>,\n <mailto:dts-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dts/>",
        "List-Post": "<mailto:dts@dpdk.org>",
        "List-Help": "<mailto:dts-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dts>,\n <mailto:dts-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dts-bounces@dpdk.org"
    },
    "content": "From: Owen Hilyard <ohilyard@iol.unh.edu>\n\nThe DTS Improvement Working Group decided to move files specific to a\nsingle test or a small group of tests into tests/util. This is done in order\nto aid in the organization of DTS.\n\nSigned-off-by: Owen Hilyard <ohilyard@iol.unh.edu>\n---\n framework/flow/__init__.py                           |  0\n framework/virt_resource.py                           |  2 +-\n tests/data/__init__.py                               |  2 ++\n tests/util/__init__.py                               |  2 ++\n tests/util/flow/__init__.py                          |  2 ++\n {framework => tests/util}/flow/enums.py              |  0\n {framework => tests/util}/flow/exceptions.py         |  0\n {framework => tests/util}/flow/flow.py               |  0\n {framework => tests/util}/flow/flow_action_items.py  |  0\n {framework => tests/util}/flow/flow_items.py         |  8 +++-----\n {framework => tests/util}/flow/flow_pattern_items.py |  0\n {framework => tests/util}/flow/flow_rule.py          |  2 +-\n {framework => tests/util}/flow/generator.py          |  0\n tests/util/virt/__init__.py                          |  2 ++\n {framework => tests/util/virt}/virt_base.py          |  8 ++++----\n {framework => tests/util/virt}/virt_common.py        |  8 ++++----\n {framework => tests/util/virt}/virt_dut.py           | 10 +++++-----\n {framework => tests/util/virt}/virt_scene.py         | 12 ++++++------\n 18 files changed, 32 insertions(+), 26 deletions(-)\n delete mode 100644 framework/flow/__init__.py\n create mode 100644 tests/data/__init__.py\n create mode 100644 tests/util/__init__.py\n create mode 100644 tests/util/flow/__init__.py\n rename {framework => tests/util}/flow/enums.py (100%)\n rename {framework => tests/util}/flow/exceptions.py (100%)\n rename {framework => tests/util}/flow/flow.py (100%)\n rename {framework => tests/util}/flow/flow_action_items.py (100%)\n rename {framework => tests/util}/flow/flow_items.py (94%)\n rename {framework => tests/util}/flow/flow_pattern_items.py (100%)\n rename {framework => tests/util}/flow/flow_rule.py (97%)\n rename {framework => tests/util}/flow/generator.py (100%)\n create mode 100644 tests/util/virt/__init__.py\n rename {framework => tests/util/virt}/virt_base.py (99%)\n rename {framework => tests/util/virt}/virt_common.py (92%)\n rename {framework => tests/util/virt}/virt_dut.py (98%)\n rename {framework => tests/util/virt}/virt_scene.py (98%)",
    "diff": "diff --git a/framework/flow/__init__.py b/framework/flow/__init__.py\ndeleted file mode 100644\nindex e69de29b..00000000\ndiff --git a/framework/virt_resource.py b/framework/virt_resource.py\nindex 36b6fe9c..0e012511 100644\n--- a/framework/virt_resource.py\n+++ b/framework/virt_resource.py\n@@ -30,7 +30,7 @@\n # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n from random import randint\n \n-from .utils import RED, get_obj_funcs, parallel_lock\n+from framework.utils import RED, get_obj_funcs, parallel_lock\n \n INIT_FREE_PORT = 6000\n INIT_SERIAL_PORT = 7000\ndiff --git a/tests/data/__init__.py b/tests/data/__init__.py\nnew file mode 100644\nindex 00000000..4ad62931\n--- /dev/null\n+++ b/tests/data/__init__.py\n@@ -0,0 +1,2 @@\n+# SPDX-License-Identifier: BSD-3-Clause\n+# Copyright(c) 2022 University of New Hampshire\ndiff --git a/tests/util/__init__.py b/tests/util/__init__.py\nnew file mode 100644\nindex 00000000..93e83aee\n--- /dev/null\n+++ b/tests/util/__init__.py\n@@ -0,0 +1,2 @@\n+# SPDX-License-Identifier: BSD-3-Clause\n+# Copyright(c) 2022 University of New Hampshire\n\\ No newline at end of file\ndiff --git a/tests/util/flow/__init__.py b/tests/util/flow/__init__.py\nnew file mode 100644\nindex 00000000..93e83aee\n--- /dev/null\n+++ b/tests/util/flow/__init__.py\n@@ -0,0 +1,2 @@\n+# SPDX-License-Identifier: BSD-3-Clause\n+# Copyright(c) 2022 University of New Hampshire\n\\ No newline at end of file\ndiff --git a/framework/flow/enums.py b/tests/util/flow/enums.py\nsimilarity index 100%\nrename from framework/flow/enums.py\nrename to tests/util/flow/enums.py\ndiff --git a/framework/flow/exceptions.py b/tests/util/flow/exceptions.py\nsimilarity index 100%\nrename from framework/flow/exceptions.py\nrename to tests/util/flow/exceptions.py\ndiff --git a/framework/flow/flow.py b/tests/util/flow/flow.py\nsimilarity index 100%\nrename from framework/flow/flow.py\nrename to tests/util/flow/flow.py\ndiff --git a/framework/flow/flow_action_items.py b/tests/util/flow/flow_action_items.py\nsimilarity index 100%\nrename from framework/flow/flow_action_items.py\nrename to tests/util/flow/flow_action_items.py\ndiff --git a/framework/flow/flow_items.py b/tests/util/flow/flow_items.py\nsimilarity index 94%\nrename from framework/flow/flow_items.py\nrename to tests/util/flow/flow_items.py\nindex e43614c5..35d07008 100644\n--- a/framework/flow/flow_items.py\n+++ b/tests/util/flow/flow_items.py\n@@ -33,9 +33,7 @@\n from __future__ import annotations\n \n import copy\n-import itertools\n-from functools import reduce\n-from typing import Any, Dict, FrozenSet, Hashable, Iterable, Set, Tuple, Union\n+from typing import Dict, FrozenSet, Iterable, Tuple, Union\n \n from .enums import FlowActionType, FlowItemType\n from .exceptions import InvalidFlowItemException\n@@ -95,8 +93,8 @@ class FlowItem(object):\n             raise InvalidFlowItemException(self, other)\n         elif other.type in self.valid_next_items:\n             # These imports are in here so there is no circular import\n-            from framework.flow.flow_action_items import ActionFlowItem\n-            from framework.flow.flow_pattern_items import PatternFlowItem\n+            from tests.util.flow.flow_action_items import ActionFlowItem\n+            from tests.util.flow.flow_pattern_items import PatternFlowItem\n \n             from .flow import Flow\n \ndiff --git a/framework/flow/flow_pattern_items.py b/tests/util/flow/flow_pattern_items.py\nsimilarity index 100%\nrename from framework/flow/flow_pattern_items.py\nrename to tests/util/flow/flow_pattern_items.py\ndiff --git a/framework/flow/flow_rule.py b/tests/util/flow/flow_rule.py\nsimilarity index 97%\nrename from framework/flow/flow_rule.py\nrename to tests/util/flow/flow_rule.py\nindex 6687bffe..4d4cf487 100644\n--- a/framework/flow/flow_rule.py\n+++ b/tests/util/flow/flow_rule.py\n@@ -32,7 +32,7 @@\n \n from typing import Union\n \n-import framework.flow.flow_action_items as flow_action_items\n+import tests.util.flow.flow_action_items as flow_action_items\n \n from .enums import *\n from .flow import Flow\ndiff --git a/framework/flow/generator.py b/tests/util/flow/generator.py\nsimilarity index 100%\nrename from framework/flow/generator.py\nrename to tests/util/flow/generator.py\ndiff --git a/tests/util/virt/__init__.py b/tests/util/virt/__init__.py\nnew file mode 100644\nindex 00000000..93e83aee\n--- /dev/null\n+++ b/tests/util/virt/__init__.py\n@@ -0,0 +1,2 @@\n+# SPDX-License-Identifier: BSD-3-Clause\n+# Copyright(c) 2022 University of New Hampshire\n\\ No newline at end of file\ndiff --git a/framework/virt_base.py b/tests/util/virt/virt_base.py\nsimilarity index 99%\nrename from framework/virt_base.py\nrename to tests/util/virt/virt_base.py\nindex d4af8b98..4cc64565 100644\n--- a/framework/virt_base.py\n+++ b/tests/util/virt/virt_base.py\n@@ -37,10 +37,10 @@ from random import randint\n import framework.exception as exception\n import framework.utils as utils\n \n-from .config import VIRTCONF, VirtConf\n-from .dut import Dut\n-from .logger import getLogger\n-from .settings import CONFIG_ROOT_PATH\n+from framework.config import VIRTCONF, VirtConf\n+from framework.dut import Dut\n+from framework.logger import getLogger\n+from framework.settings import CONFIG_ROOT_PATH\n from .virt_dut import VirtDut\n \n ST_NOTSTART = \"NOTSTART\"\ndiff --git a/framework/virt_common.py b/tests/util/virt/virt_common.py\nsimilarity index 92%\nrename from framework/virt_common.py\nrename to tests/util/virt/virt_common.py\nindex eb5ee066..36ea540e 100644\n--- a/framework/virt_common.py\n+++ b/tests/util/virt/virt_common.py\n@@ -30,10 +30,10 @@\n # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n import os\n \n-from .config import VirtConf\n-from .qemu_kvm import QEMUKvm\n-from .qemu_libvirt import LibvirtKvm\n-from .settings import CONFIG_ROOT_PATH\n+from framework.config import VirtConf\n+from framework.qemu_kvm import QEMUKvm\n+from framework.qemu_libvirt import LibvirtKvm\n+from framework.settings import CONFIG_ROOT_PATH\n \n \n def VM(dut, vm_name, suite_name):\ndiff --git a/framework/virt_dut.py b/tests/util/virt/virt_dut.py\nsimilarity index 98%\nrename from framework/virt_dut.py\nrename to tests/util/virt/virt_dut.py\nindex 369abacf..8bbec12c 100644\n--- a/framework/virt_dut.py\n+++ b/tests/util/virt/virt_dut.py\n@@ -36,11 +36,11 @@ import time\n import framework.settings as settings\n from nics.net_device import GetNicObj, RemoveNicObj\n \n-from .config import AppNameConf, PortConf\n-from .dut import Dut\n-from .project_dpdk import DPDKdut\n-from .settings import LOG_NAME_SEP, NICS, get_netdev, load_global_setting\n-from .utils import RED, parallel_lock\n+from framework.config import AppNameConf, PortConf\n+from framework.dut import Dut\n+from framework.project_dpdk import DPDKdut\n+from framework.settings import LOG_NAME_SEP, NICS, get_netdev, load_global_setting\n+from framework.utils import RED, parallel_lock\n \n \n class VirtDut(DPDKdut):\ndiff --git a/framework/virt_scene.py b/tests/util/virt/virt_scene.py\nsimilarity index 98%\nrename from framework/virt_scene.py\nrename to tests/util/virt/virt_scene.py\nindex 63760192..694f84b9 100644\n--- a/framework/virt_scene.py\n+++ b/tests/util/virt/virt_scene.py\n@@ -32,12 +32,12 @@ import time\n \n import framework.utils as utils\n \n-from .config import VIRTCONF, VirtConf\n-from .exception import *\n-from .pmd_output import PmdOutput\n-from .qemu_kvm import QEMUKvm\n-from .settings import CONFIG_ROOT_PATH, get_netdev\n-from .utils import create_mask\n+from framework.config import VIRTCONF, VirtConf\n+from framework.exception import *\n+from framework.pmd_output import PmdOutput\n+from framework.qemu_kvm import QEMUKvm\n+from framework.settings import CONFIG_ROOT_PATH, get_netdev\n+from framework.utils import create_mask\n \n # scenario module for handling scenario\n # 1. load configurations\n",
    "prefixes": [
        "v1"
    ]
}