get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 76505,
    "url": "http://patches.dpdk.org/api/patches/76505/?format=api",
    "web_url": "http://patches.dpdk.org/project/dts/patch/1599207525-22123-9-git-send-email-xix.zhang@intel.com/",
    "project": {
        "id": 3,
        "url": "http://patches.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": "<1599207525-22123-9-git-send-email-xix.zhang@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dts/1599207525-22123-9-git-send-email-xix.zhang@intel.com",
    "date": "2020-09-04T08:18:16",
    "name": "[09/38] tests-TestSuite_hotplug.py:support meson build",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "eaede5132f8dde57a02644fe486a2cd285182ebf",
    "submitter": {
        "id": 1728,
        "url": "http://patches.dpdk.org/api/people/1728/?format=api",
        "name": "Zhang, XiX",
        "email": "xix.zhang@intel.com"
    },
    "delegate": null,
    "mbox": "http://patches.dpdk.org/project/dts/patch/1599207525-22123-9-git-send-email-xix.zhang@intel.com/mbox/",
    "series": [
        {
            "id": 11948,
            "url": "http://patches.dpdk.org/api/series/11948/?format=api",
            "web_url": "http://patches.dpdk.org/project/dts/list/?series=11948",
            "date": "2020-09-04T08:14:07",
            "name": "Modify suite to support meson & makefile",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/11948/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/76505/comments/",
    "check": "pending",
    "checks": "http://patches.dpdk.org/api/patches/76505/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 dpdk.org (dpdk.org [92.243.14.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id EA9C6A04C5;\n\tFri,  4 Sep 2020 10:17:20 +0200 (CEST)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id E2AE81C0BC;\n\tFri,  4 Sep 2020 10:17:20 +0200 (CEST)",
            "from mga01.intel.com (mga01.intel.com [192.55.52.88])\n by dpdk.org (Postfix) with ESMTP id 055FA255\n for <dts@dpdk.org>; Fri,  4 Sep 2020 10:17:18 +0200 (CEST)",
            "from orsmga002.jf.intel.com ([10.7.209.21])\n by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 04 Sep 2020 01:17:17 -0700",
            "from unknown (HELO localhost.localdomain.sh.intel.com)\n ([10.240.182.150])\n by orsmga002.jf.intel.com with ESMTP; 04 Sep 2020 01:17:11 -0700"
        ],
        "IronPort-SDR": [
            "\n asEp3hTd7+Du7+nQ9QWI04S7l2lNyXbzK4B1zX58FZq0N4tSPAW8HlX+N1CirZSnXtRlXUYe2X\n Q1Kge0loJZKQ==",
            "\n Uga7m1aZFewJKLd7kmNf553/V/TG0wCtJj0awiRcsC09jfwyGfd8oxwn4DdGflaqoE6nXa3ffk\n cOxoqJR5dsew=="
        ],
        "X-IronPort-AV": [
            "E=McAfee;i=\"6000,8403,9733\"; a=\"175763271\"",
            "E=Sophos;i=\"5.76,389,1592895600\"; d=\"scan'208\";a=\"175763271\"",
            "E=Sophos;i=\"5.76,389,1592895600\"; d=\"scan'208\";a=\"315782602\""
        ],
        "X-Amp-Result": "SKIPPED(no attachment in message)",
        "X-Amp-File-Uploaded": "False",
        "X-ExtLoop1": "1",
        "From": "xizhan4x <xix.zhang@intel.com>",
        "To": "dts@dpdk.org",
        "Cc": "xizhan4x <xix.zhang@intel.com>",
        "Date": "Fri,  4 Sep 2020 16:18:16 +0800",
        "Message-Id": "<1599207525-22123-9-git-send-email-xix.zhang@intel.com>",
        "X-Mailer": "git-send-email 1.8.3.1",
        "In-Reply-To": "<1599207525-22123-1-git-send-email-xix.zhang@intel.com>",
        "References": "<1599207525-22123-1-git-send-email-xix.zhang@intel.com>",
        "Subject": "[dts] [dts 09/38] tests-TestSuite_hotplug.py:support meson build",
        "X-BeenThere": "dts@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "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",
        "Sender": "\"dts\" <dts-bounces@dpdk.org>"
    },
    "content": "Signed-off-by: xizhan4x <xix.zhang@intel.com>\n---\n tests/TestSuite_hotplug.py | 92 +++++++++++++++++++++++++---------------------\n 1 file changed, 51 insertions(+), 41 deletions(-)",
    "diff": "diff --git a/tests/TestSuite_hotplug.py b/tests/TestSuite_hotplug.py\nindex 4af9957..1882c84 100644\n--- a/tests/TestSuite_hotplug.py\n+++ b/tests/TestSuite_hotplug.py\n@@ -1,4 +1,4 @@\n-#BSD LICENSE\n+# BSD LICENSE\n #\n # Copyright(c) 2010-2016 Intel Corporation. All rights reserved.\n # All rights reserved.\n@@ -42,10 +42,12 @@ from test_case import TestCase\n from packet import Packet\n import os\n \n+\n class TestPortHotPlug(TestCase):\n     \"\"\"\n     This feature supports igb_uio, vfio-pci and vfio-pci:noiommu now and not support freebsd\n     \"\"\"\n+\n     def set_up_all(self):\n         \"\"\"\n         Run at the start of each test suite.\n@@ -59,59 +61,62 @@ class TestPortHotPlug(TestCase):\n             self.driver_name = \"vfio-pci\"\n         else:\n             self.driver_name = self.drivername\n+        self.path=self.dut.apps_name['test-pmd']\n \n     def set_up(self):\n         \"\"\"\n         Run before each test case.\n         \"\"\"\n-        self.dut.send_expect(\"./usertools/dpdk-devbind.py -u %s\" % self.dut.ports_info[self.port]['pci'],\"#\",60)\n+        self.dut.send_expect(\"./usertools/dpdk-devbind.py -u %s\" % self.dut.ports_info[self.port]['pci'], \"#\", 60)\n \n     def attach(self, port):\n         \"\"\"\n         attach port\n         \"\"\"\n         # dpdk hotplug discern NIC by pci bus and include domid\n-        self.dut.send_expect(\"port attach %s\" % self.dut.ports_info[port]['pci'],\"is attached\",60)\n-        self.dut.send_expect(\"port start %s\" % port,\"Configuring Port\",120)\n+        self.dut.send_expect(\"port attach %s\" % self.dut.ports_info[port]['pci'], \"is attached\", 60)\n+        self.dut.send_expect(\"port start %s\" % port, \"Configuring Port\", 120)\n         # sleep 10 seconds for fortville update link stats\n         time.sleep(10)\n-        self.dut.send_expect(\"show port info %s\" % port,\"testpmd>\",60)\n+        self.dut.send_expect(\"show port info %s\" % port, \"testpmd>\", 60)\n \n     def detach(self, port):\n         \"\"\"\n-        detach port \n+        detach port\n         \"\"\"\n-        self.dut.send_expect(\"port stop %s\" % port,\"Stopping ports\",60)\n+        self.dut.send_expect(\"port stop %s\" % port, \"Stopping ports\", 60)\n         # sleep 10 seconds for fortville update link stats\n         time.sleep(10)\n-        self.dut.send_expect(\"port detach %s\" % port,\"is detached\",60)\n+        self.dut.send_expect(\"port detach %s\" % port, \"is detached\", 60)\n \n     def test_after_attach(self):\n         \"\"\"\n         first run testpmd after attach port\n         \"\"\"\n-        cmd = \"./%s/app/testpmd -c %s -n %s -- -i\" % (self.target,self.coremask,self.dut.get_memory_channels())\n-        self.dut.send_expect(cmd,\"testpmd>\",60)\n+        cmd = \"%s -c %s -n %s -- -i\" % (self.path, self.coremask, self.dut.get_memory_channels())\n+        self.dut.send_expect(cmd, \"testpmd>\", 60)\n         session_secondary = self.dut.new_session()\n-        session_secondary.send_expect(\"./usertools/dpdk-devbind.py --bind=%s %s\" % (self.driver_name, self.dut.ports_info[self.port]['pci']), \"#\", 60)\n+        session_secondary.send_expect(\n+            \"./usertools/dpdk-devbind.py --bind=%s %s\" % (self.driver_name, self.dut.ports_info[self.port]['pci']), \"#\",\n+            60)\n         self.dut.close_session(session_secondary)\n         self.attach(self.port)\n-        self.dut.send_expect(\"start\",\"testpmd>\",60)\n-        self.dut.send_expect(\"port detach %s\" % self.port,\"Port not stopped\",60)\n-        self.dut.send_expect(\"stop\",\"testpmd>\",60)\n+        self.dut.send_expect(\"start\", \"testpmd>\", 60)\n+        self.dut.send_expect(\"port detach %s\" % self.port, \"Port not stopped\", 60)\n+        self.dut.send_expect(\"stop\", \"testpmd>\", 60)\n         self.detach(self.port)\n         self.attach(self.port)\n-   \n-        self.dut.send_expect(\"start\",\"testpmd>\",60)\n-        self.dut.send_expect(\"port detach %s\" % self.port,\"Port not stopped\",60)\n-        self.dut.send_expect(\"clear port stats %s\" % self.port ,\"testpmd>\",60)\n+\n+        self.dut.send_expect(\"start\", \"testpmd>\", 60)\n+        self.dut.send_expect(\"port detach %s\" % self.port, \"Port not stopped\", 60)\n+        self.dut.send_expect(\"clear port stats %s\" % self.port, \"testpmd>\", 60)\n         self.send_packet(self.port)\n-        out = self.dut.send_expect(\"show port stats %s\" % self.port ,\"testpmd>\",60)\n-        packet = re.search(\"RX-packets:\\s*(\\d*)\",out)\n+        out = self.dut.send_expect(\"show port stats %s\" % self.port, \"testpmd>\", 60)\n+        packet = re.search(\"RX-packets:\\s*(\\d*)\", out)\n         sum_packet = packet.group(1)\n         self.verify(int(sum_packet) == 1, \"Insufficient the received package\")\n-        self.dut.send_expect(\"quit\",\"#\",60)\n-     \n+        self.dut.send_expect(\"quit\", \"#\", 60)\n+\n     def send_packet(self, port):\n         \"\"\"\n         Send a packet to port\n@@ -120,30 +125,32 @@ class TestPortHotPlug(TestCase):\n         txport = self.tester.get_local_port(port)\n         self.txItf = self.tester.get_interface(txport)\n         pkt = Packet(pkt_type='UDP')\n-        pkt.config_layer('ether', {'dst': self.dmac,})\n+        pkt.config_layer('ether', {'dst': self.dmac, })\n         pkt.send_pkt(self.tester, tx_port=self.txItf)\n-                       \n+\n     def test_before_attach(self):\n         \"\"\"\n         first attach port after run testpmd\n         \"\"\"\n         session_secondary = self.dut.new_session()\n-        session_secondary.send_expect(\"./usertools/dpdk-devbind.py --bind=%s %s\" % (self.driver_name, self.dut.ports_info[self.port]['pci']), \"#\", 60)\n+        session_secondary.send_expect(\n+            \"./usertools/dpdk-devbind.py --bind=%s %s\" % (self.driver_name, self.dut.ports_info[self.port]['pci']), \"#\",\n+            60)\n         self.dut.close_session(session_secondary)\n-        cmd = \"./%s/app/testpmd -c %s -n %s -- -i\" % (self.target,self.coremask,self.dut.get_memory_channels())\n-        self.dut.send_expect(cmd,\"testpmd>\",60)\n+        cmd = \"%s -c %s -n %s -- -i\" % (self.path, self.coremask, self.dut.get_memory_channels())\n+        self.dut.send_expect(cmd, \"testpmd>\", 60)\n         self.detach(self.port)\n         self.attach(self.port)\n \n-        self.dut.send_expect(\"start\",\"testpmd>\",60)\n-        self.dut.send_expect(\"port detach %s\" % self.port, \"Port not stopped\",60)\n-        self.dut.send_expect(\"clear port stats %s\" % self.port ,\"testpmd>\",60)\n+        self.dut.send_expect(\"start\", \"testpmd>\", 60)\n+        self.dut.send_expect(\"port detach %s\" % self.port, \"Port not stopped\", 60)\n+        self.dut.send_expect(\"clear port stats %s\" % self.port, \"testpmd>\", 60)\n         self.send_packet(self.port)\n-        out = self.dut.send_expect(\"show port stats %s\" % self.port ,\"testpmd>\",60)\n-        packet = re.search(\"RX-packets:\\s*(\\d*)\",out)\n+        out = self.dut.send_expect(\"show port stats %s\" % self.port, \"testpmd>\", 60)\n+        packet = re.search(\"RX-packets:\\s*(\\d*)\", out)\n         sum_packet = packet.group(1)\n         self.verify(int(sum_packet) == 1, \"Insufficient the received package\")\n-        self.dut.send_expect(\"quit\",\"#\",60)\n+        self.dut.send_expect(\"quit\", \"#\", 60)\n \n     def test_port_detach_attach_for_vhost_user_virtio_user(self):\n         vdev = \"eth_vhost0,iface=vhost-net,queues=1\"\n@@ -154,25 +161,27 @@ class TestPortHotPlug(TestCase):\n         cores = self.dut.get_core_list(\"all\")\n         self.verify(len(cores) > 8, \"insufficient cores for this case\")\n         eal_param = self.dut.create_eal_parameters(no_pci=True, cores=cores[1:5], vdevs=[vdev], prefix=\"vhost\")\n-        testpmd_cmd = \"./%s/app/testpmd \" % self.target + eal_param + ' -- -i'\n+        testpmd_cmd = \"%s \" % self.path + eal_param + ' -- -i'\n         self.dut.send_expect(testpmd_cmd, \"testpmd>\", timeout=60)\n         self.dut.send_expect(\"port stop 0\", \"testpmd>\")\n         self.dut.send_expect(\"port detach 0\", \"Device is detached\")\n         stats = self.dut.send_expect(\"ls %s\" % path, \"#\", timeout=3,\n-                                   alt_session=True, verify=True)\n-        self.verify(stats==2, 'port detach failed')\n+                                     alt_session=True, verify=True)\n+        self.verify(stats == 2, 'port detach failed')\n         time.sleep(1)\n         self.dut.send_expect(\"port attach eth_vhost1,iface=%s,queues=1\" % iface, \"Port 0 is attached.\")\n         self.dut.send_expect(\"port start 0\", \"testpmd>\")\n         out = self.dut.send_expect(\"ls %s\" % path, \"#\", timeout=3,\n                                    alt_session=True, verify=True)\n-        self.verify(iface in out , 'port attach failed')\n+        self.verify(iface in out, 'port attach failed')\n \n         self.session2 = self.dut.create_session(name=\"virtio_user\")\n         eal_param = self.dut.create_eal_parameters(no_pci=True, fixed_prefix=\"virtio1\", cores=cores[5:9])\n-        testpmd_cmd2 = \"%s/%s/app/testpmd \" % (self.dut.base_dir,self.target) + eal_param + ' -- -i'\n+        testpmd_cmd2 = \"%s \" % (self.path) + eal_param + ' -- -i'\n         self.session2.send_expect(testpmd_cmd2, \"testpmd>\", timeout=60)\n-        self.session2.send_expect(\"port attach net_virtio_user1,mac=00:01:02:03:04:05,path=%s,queues=1,packed_vq=1,mrg_rxbuf=1,in_order=0\" % path, \"testpmd\")\n+        self.session2.send_expect(\n+            \"port attach net_virtio_user1,mac=00:01:02:03:04:05,path=%s,queues=1,packed_vq=1,mrg_rxbuf=1,in_order=0\" % path,\n+            \"testpmd\")\n         self.session2.send_expect(\"port start 0\", \"testpmd>\", timeout=60)\n         out = self.dut.send_expect(\"ls %s\" % path, \"#\", timeout=3,\n                                    alt_session=True, verify=True)\n@@ -197,9 +206,10 @@ class TestPortHotPlug(TestCase):\n         Run after each test case.\n         \"\"\"\n         self.dut.kill_all()\n-        self.dut.send_expect(\"./usertools/dpdk-devbind.py --bind=%s %s\" % (self.driver_name, self.dut.ports_info[self.port]['pci']), \"#\", 60)\n+        self.dut.send_expect(\n+            \"./usertools/dpdk-devbind.py --bind=%s %s\" % (self.driver_name, self.dut.ports_info[self.port]['pci']), \"#\",\n+            60)\n         time.sleep(2)\n-        \n \n     def tear_down_all(self):\n         \"\"\"\n",
    "prefixes": [
        "09/38"
    ]
}