get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 99876,
    "url": "http://patches.dpdk.org/api/patches/99876/?format=api",
    "web_url": "http://patches.dpdk.org/project/dts/patch/1632793983-301126-3-git-send-email-yogesh.jangra@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": "<1632793983-301126-3-git-send-email-yogesh.jangra@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dts/1632793983-301126-3-git-send-email-yogesh.jangra@intel.com",
    "date": "2021-09-28T01:53:03",
    "name": "[2/2] tests/pipeline: add variable bit and learner table test suite",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "9eb1d6974fbd40c8b64eb1a036b86e90e7a92191",
    "submitter": {
        "id": 2025,
        "url": "http://patches.dpdk.org/api/people/2025/?format=api",
        "name": "Yogesh Jangra",
        "email": "yogesh.jangra@intel.com"
    },
    "delegate": null,
    "mbox": "http://patches.dpdk.org/project/dts/patch/1632793983-301126-3-git-send-email-yogesh.jangra@intel.com/mbox/",
    "series": [
        {
            "id": 19218,
            "url": "http://patches.dpdk.org/api/series/19218/?format=api",
            "web_url": "http://patches.dpdk.org/project/dts/list/?series=19218",
            "date": "2021-09-28T01:53:01",
            "name": "add pipeline varbit and learner table features test coverage",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/19218/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/99876/comments/",
    "check": "warning",
    "checks": "http://patches.dpdk.org/api/patches/99876/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 741EDA0032;\n\tTue, 28 Sep 2021 11:03:25 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 7067A410DB;\n\tTue, 28 Sep 2021 11:03:25 +0200 (CEST)",
            "from mga14.intel.com (mga14.intel.com [192.55.52.115])\n by mails.dpdk.org (Postfix) with ESMTP id D7F2D410DB\n for <dts@dpdk.org>; Tue, 28 Sep 2021 11:03:23 +0200 (CEST)",
            "from fmsmga001.fm.intel.com ([10.253.24.23])\n by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 28 Sep 2021 02:03:22 -0700",
            "from ena-4.iind.intel.com ([10.190.200.151])\n by fmsmga001.fm.intel.com with ESMTP; 28 Sep 2021 02:03:20 -0700"
        ],
        "X-IronPort-AV": [
            "E=McAfee;i=\"6200,9189,10120\"; a=\"224303790\"",
            "E=Sophos;i=\"5.85,329,1624345200\"; d=\"scan'208\";a=\"224303790\"",
            "E=Sophos;i=\"5.85,329,1624345200\"; d=\"scan'208\";a=\"616442116\""
        ],
        "X-ExtLoop1": "1",
        "From": "Yogesh Jangra <yogesh.jangra@intel.com>",
        "To": "dts@dpdk.org",
        "Cc": "venkata.suresh.kumar.p@intel.com, churchill.khangar@intel.com,\n yogesh.jangra@intel.com",
        "Date": "Mon, 27 Sep 2021 21:53:03 -0400",
        "Message-Id": "<1632793983-301126-3-git-send-email-yogesh.jangra@intel.com>",
        "X-Mailer": "git-send-email 1.8.3.1",
        "In-Reply-To": "<1632793983-301126-1-git-send-email-yogesh.jangra@intel.com>",
        "References": "<1632793983-301126-1-git-send-email-yogesh.jangra@intel.com>",
        "Subject": "[dts] [PATCH 2/2] tests/pipeline: add variable bit and learner\n table test suite",
        "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",
        "Sender": "\"dts\" <dts-bounces@dpdk.org>"
    },
    "content": "This patch has the pipeline test suite changes to cover\nthe scenarios on variable bit field headers and learner\ntable features.\n\nSigned-off-by: Yogesh Jangra <yogesh.jangra@intel.com>\nSigned-off-by: Churchill Khangar <churchill.khangar@intel.com>\nTested-by: Venkata Suresh Kumar P <venkata.suresh.kumar.p@intel.com>\n---\n tests/TestSuite_pipeline.py | 138 ++++++++++++++++++++++++++++++++++++++++----\n 1 file changed, 126 insertions(+), 12 deletions(-)",
    "diff": "diff --git a/tests/TestSuite_pipeline.py b/tests/TestSuite_pipeline.py\nindex e00f2e9..b6dc890 100644\n--- a/tests/TestSuite_pipeline.py\n+++ b/tests/TestSuite_pipeline.py\n@@ -423,16 +423,22 @@ class TestPipeline(TestCase):\n \n     def run_dpdk_app(self, cli_file):\n \n-        cmd = \"sed -i -e 's/0000:00:04.0/%s/' {}\".format(cli_file) % self.dut_p0_pci\n-        self.dut.send_expect(cmd, \"# \", 20)\n-        cmd = \"sed -i -e 's/0000:00:05.0/%s/' {}\".format(cli_file) % self.dut_p1_pci\n-        self.dut.send_expect(cmd, \"# \", 20)\n-        cmd = \"sed -i -e 's/0000:00:06.0/%s/' {}\".format(cli_file) % self.dut_p2_pci\n-        self.dut.send_expect(cmd, \"# \", 20)\n-        cmd = \"sed -i -e 's/0000:00:07.0/%s/' {}\".format(cli_file) % self.dut_p3_pci\n-        self.dut.send_expect(cmd, \"# \", 20)\n-        cmd = \"{0} {1} -- -s {2}\".format(self.app_pipeline_path, self.eal_para, cli_file)\n-        self.dut.send_expect(cmd, \"PIPELINE0 enable\", 60)\n+        cmd = \"test -f {} && echo \\\"File exists!\\\"\".format(cli_file)\n+        self.dut.send_expect(cmd, \"File exists!\", 1)\n+        try:\n+            cmd = \"sed -i -e 's/0000:00:04.0/%s/' {}\".format(cli_file) % self.dut_p0_pci\n+            self.dut.send_expect(cmd, \"# \", 20)\n+            cmd = \"sed -i -e 's/0000:00:05.0/%s/' {}\".format(cli_file) % self.dut_p1_pci\n+            self.dut.send_expect(cmd, \"# \", 20)\n+            cmd = \"sed -i -e 's/0000:00:06.0/%s/' {}\".format(cli_file) % self.dut_p2_pci\n+            self.dut.send_expect(cmd, \"# \", 20)\n+            cmd = \"sed -i -e 's/0000:00:07.0/%s/' {}\".format(cli_file) % self.dut_p3_pci\n+            self.dut.send_expect(cmd, \"# \", 20)\n+            cmd = \"{0} {1} -- -s {2}\".format(self.app_pipeline_path, self.eal_para, cli_file)\n+            self.dut.send_expect(cmd, \"PIPELINE0 enable\", 60)\n+        except Exception:\n+            self.dut.send_expect(\"^C\", \"# \", 20)\n+            self.verify(0, \"ERROR in running DPDK application\")\n \n     def send_pkts(self, from_port, to_port, in_pcap):\n         \"\"\"\n@@ -4491,12 +4497,31 @@ class TestPipeline(TestCase):\n     def test_ring_port_001(self):\n \n         cli_file = '/tmp/pipeline/ring_port_001/ring_port_001.cli'\n-        self.run_dpdk_app(cli_file)\n+        cmd = \"test -f {} && echo \\\"File exists!\\\"\".format(cli_file)\n+        self.dut.send_expect(cmd, \"File exists!\", 10)\n+        try:\n+            cmd = \"sed -i -e 's/0000:00:04.0/%s/' {}\".format(cli_file) % self.dut_p0_pci\n+            self.dut.send_expect(cmd, \"# \", 10)\n+            cmd = \"sed -i -e 's/0000:00:05.0/%s/' {}\".format(cli_file) % self.dut_p1_pci\n+            self.dut.send_expect(cmd, \"# \", 10)\n+            cmd = \"sed -i -e 's/0000:00:06.0/%s/' {}\".format(cli_file) % self.dut_p2_pci\n+            self.dut.send_expect(cmd, \"# \", 10)\n+            cmd = \"sed -i -e 's/0000:00:07.0/%s/' {}\".format(cli_file) % self.dut_p3_pci\n+            self.dut.send_expect(cmd, \"# \", 10)\n+\n+            ports = [self.dut_p0_pci, self.dut_p1_pci, self.dut_p2_pci, self.dut_p3_pci]\n+            vdevs = ['net_ring0']\n+            eal_params = self.dut.create_eal_parameters(cores=list(range(4)), ports=ports, vdevs=vdevs)\n+            cmd = \"{0} {1} -- -s {2}\".format(self.app_pipeline_path, eal_params, cli_file)\n+            self.dut.send_expect(cmd, \"PIPELINE0 enable\", 60)\n+        except Exception:\n+            self.dut.send_expect(\"^C\", \"# \", 20)\n+            self.verify(0, \"ERROR in running DPDK application\")\n \n         in_pcap = 'pipeline/ring_port_001/pcap_files/in_1.txt'\n         out_pcap = 'pipeline/ring_port_001/pcap_files/out_1.txt'\n         self.send_and_sniff_pkts(0, 1, in_pcap, out_pcap, \"udp\")\n-        self.dut.send_expect(\"^C\", \"# \", 20)\n+        self.dut.send_expect(\"^C\", \"# \", 10)\n \n     def test_u100_001(self):\n \n@@ -4884,6 +4909,95 @@ class TestPipeline(TestCase):\n         # self.send_scapy_pkts(0)\n         pass\n \n+    def test_profile_001(self):\n+\n+        cli_file = '/tmp/pipeline/profile_001/profile_001.cli'\n+        self.run_dpdk_app(cli_file)\n+\n+        in_pcap = ['pipeline/profile_001/pcap_files/in_1.txt']\n+        out_pcap_1 = 'pipeline/profile_001/pcap_files/out_1.txt'\n+        out_pcap_2 = 'pipeline/profile_001/pcap_files/out_2.txt'\n+        out_pcap_3 = 'pipeline/profile_001/pcap_files/out_3.txt'\n+        out_pcap_4 = 'pipeline/profile_001/pcap_files/out_4.txt'\n+        out_pcap = [out_pcap_1, out_pcap_2, out_pcap_3, out_pcap_4]\n+        filters = [\"tcp\"] * 4\n+        tx_port = [0]\n+        rx_port = [0, 1, 2, 3]\n+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)\n+        self.dut.send_expect(\"^C\", \"# \", 20)\n+\n+    def test_varbit_001(self):\n+\n+        cli_file = '/tmp/pipeline/varbit_001/varbit_001.cli'\n+        self.run_dpdk_app(cli_file)\n+\n+        in_pcap = 'pipeline/varbit_001/pcap_files/in_1.txt'\n+        out_pcap = 'pipeline/varbit_001/pcap_files/out_1.txt'\n+        self.send_and_sniff_pkts(0, 1, in_pcap, out_pcap, \"tcp\")\n+        self.dut.send_expect(\"^C\", \"# \", 20)\n+\n+    def test_learner_001(self):\n+\n+        cli_file = '/tmp/pipeline/learner_001/learner_001.cli'\n+        self.run_dpdk_app(cli_file)\n+\n+        in_pcap = ['pipeline/learner_001/pcap_files/in_1.txt']\n+        out_pcap = ['pipeline/learner_001/pcap_files/out_1.txt']\n+        filters = [\"tcp\"]\n+        tx_port = [0]\n+        rx_port = [0]\n+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)\n+        in_pcap = ['pipeline/learner_001/pcap_files/in_2.txt']\n+        out_pcap = ['pipeline/learner_001/pcap_files/out_2.txt']\n+        filters = [\"tcp\"]\n+        tx_port = [1]\n+        rx_port = [1]\n+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)\n+        in_pcap = ['pipeline/learner_001/pcap_files/in_3.txt']\n+        out_pcap = ['pipeline/learner_001/pcap_files/out_3.txt']\n+        filters = [\"tcp\"]\n+        tx_port = [2]\n+        rx_port = [2]\n+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)\n+        in_pcap = ['pipeline/learner_001/pcap_files/in_4.txt']\n+        out_pcap = ['pipeline/learner_001/pcap_files/out_4.txt']\n+        filters = [\"tcp\"]\n+        tx_port = [3]\n+        rx_port = [3]\n+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)\n+        self.dut.send_expect(\"^C\", \"# \", 20)\n+\n+    def test_learner_002(self):\n+\n+        cli_file = '/tmp/pipeline/learner_002/learner_002.cli'\n+        self.run_dpdk_app(cli_file)\n+\n+        in_pcap = ['pipeline/learner_002/pcap_files/in_1.txt']\n+        out_pcap = ['pipeline/learner_002/pcap_files/out_1.txt']\n+        filters = [\"tcp\"]\n+        tx_port = [0]\n+        rx_port = [0]\n+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)\n+        in_pcap = ['pipeline/learner_002/pcap_files/in_2.txt']\n+        out_pcap = ['pipeline/learner_002/pcap_files/out_2.txt']\n+        filters = [\"tcp\"]\n+        tx_port = [1]\n+        rx_port = [1]\n+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)\n+        in_pcap = ['pipeline/learner_002/pcap_files/in_3.txt']\n+        out_pcap = ['pipeline/learner_002/pcap_files/out_3.txt']\n+        filters = [\"tcp\"]\n+        tx_port = [2]\n+        rx_port = [2]\n+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)\n+        in_pcap = ['pipeline/learner_002/pcap_files/in_4.txt']\n+        out_pcap = ['pipeline/learner_002/pcap_files/out_4.txt']\n+        filters = [\"tcp\"]\n+        tx_port = [3]\n+        rx_port = [3]\n+        self.send_and_sniff_multiple(tx_port, rx_port, in_pcap, out_pcap, filters)\n+        self.dut.send_expect(\"^C\", \"# \", 20)\n+\n     def tear_down(self):\n         \"\"\"\n         Run after each test case.\n",
    "prefixes": [
        "2/2"
    ]
}