Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/140011/?format=api
http://patches.dpdk.org/api/patches/140011/?format=api", "web_url": "http://patches.dpdk.org/project/dpdk/patch/20240509112635.1170557-6-luca.vizzarro@arm.com/", "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": "<20240509112635.1170557-6-luca.vizzarro@arm.com>", "list_archive_url": "https://inbox.dpdk.org/dev/20240509112635.1170557-6-luca.vizzarro@arm.com", "date": "2024-05-09T11:26:35", "name": "[v2,5/5] dts: add `show port stats` command to TestPmdShell", "commit_ref": null, "pull_url": null, "state": "under-review", "archived": false, "hash": "0604ae4056444718f1592077fa8a1e0e73b8f4b4", "submitter": { "id": 3197, "url": "http://patches.dpdk.org/api/people/3197/?format=api", "name": "Luca Vizzarro", "email": "luca.vizzarro@arm.com" }, "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/20240509112635.1170557-6-luca.vizzarro@arm.com/mbox/", "series": [ { "id": 31898, "url": "http://patches.dpdk.org/api/series/31898/?format=api", "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=31898", "date": "2024-05-09T11:26:30", "name": "dts: testpmd show port info/stats", "version": 2, "mbox": "http://patches.dpdk.org/series/31898/mbox/" } ], "comments": "http://patches.dpdk.org/api/patches/140011/comments/", "check": "fail", "checks": "http://patches.dpdk.org/api/patches/140011/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 8155A43F7C;\n\tThu, 9 May 2024 13:27:19 +0200 (CEST)", "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 6D1A940DDA;\n\tThu, 9 May 2024 13:26:55 +0200 (CEST)", "from foss.arm.com (foss.arm.com [217.140.110.172])\n by mails.dpdk.org (Postfix) with ESMTP id 2939F40A6F\n for <dev@dpdk.org>; Thu, 9 May 2024 13:26:52 +0200 (CEST)", "from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14])\n by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 318CB12FC;\n Thu, 9 May 2024 04:27:17 -0700 (PDT)", "from localhost.localdomain (unknown [10.1.194.74])\n by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 0B6313F6A8;\n Thu, 9 May 2024 04:26:50 -0700 (PDT)" ], "From": "Luca Vizzarro <luca.vizzarro@arm.com>", "To": "dev@dpdk.org", "Cc": "=?utf-8?q?Juraj_Linke=C5=A1?= <juraj.linkes@pantheon.tech>,\n Jeremy Spewock <jspewock@iol.unh.edu>, Luca Vizzarro <luca.vizzarro@arm.com>,\n Paul Szczepanek <paul.szczepanek@arm.com>", "Subject": "[PATCH v2 5/5] dts: add `show port stats` command to TestPmdShell", "Date": "Thu, 9 May 2024 12:26:35 +0100", "Message-Id": "<20240509112635.1170557-6-luca.vizzarro@arm.com>", "X-Mailer": "git-send-email 2.34.1", "In-Reply-To": "<20240509112635.1170557-1-luca.vizzarro@arm.com>", "References": "<20240412111136.3470304-1-luca.vizzarro@arm.com>\n <20240509112635.1170557-1-luca.vizzarro@arm.com>", "MIME-Version": "1.0", "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": "Add a new TestPmdPortStats data structure to represent the output\nreturned by `show port stats`, which is implemented as part of\nTestPmdShell.\n\nBugzilla ID: 1407\n\nSigned-off-by: Luca Vizzarro <luca.vizzarro@arm.com>\nReviewed-by: Paul Szczepanek <paul.szczepanek@arm.com>\n---\n dts/framework/remote_session/testpmd_shell.py | 68 +++++++++++++++++++\n 1 file changed, 68 insertions(+)", "diff": "diff --git a/dts/framework/remote_session/testpmd_shell.py b/dts/framework/remote_session/testpmd_shell.py\nindex 7910e17fed..d0b6da50f0 100644\n--- a/dts/framework/remote_session/testpmd_shell.py\n+++ b/dts/framework/remote_session/testpmd_shell.py\n@@ -531,6 +531,42 @@ class TestPmdPort(TextParser):\n )\n \n \n+@dataclass\n+class TestPmdPortStats(TextParser):\n+ \"\"\"Port statistics.\"\"\"\n+\n+ #:\n+ port_id: int = field(metadata=TextParser.find_int(r\"NIC statistics for port (\\d+)\"))\n+\n+ #:\n+ rx_packets: int = field(metadata=TextParser.find_int(r\"RX-packets:\\s+(\\d+)\"))\n+ #:\n+ rx_missed: int = field(metadata=TextParser.find_int(r\"RX-missed:\\s+(\\d+)\"))\n+ #:\n+ rx_bytes: int = field(metadata=TextParser.find_int(r\"RX-bytes:\\s+(\\d+)\"))\n+ #:\n+ rx_errors: int = field(metadata=TextParser.find_int(r\"RX-errors:\\s+(\\d+)\"))\n+ #:\n+ rx_nombuf: int = field(metadata=TextParser.find_int(r\"RX-nombuf:\\s+(\\d+)\"))\n+\n+ #:\n+ tx_packets: int = field(metadata=TextParser.find_int(r\"TX-packets:\\s+(\\d+)\"))\n+ #:\n+ tx_errors: int = field(metadata=TextParser.find_int(r\"TX-errors:\\s+(\\d+)\"))\n+ #:\n+ tx_bytes: int = field(metadata=TextParser.find_int(r\"TX-bytes:\\s+(\\d+)\"))\n+\n+ #:\n+ rx_pps: int = field(metadata=TextParser.find_int(r\"Rx-pps:\\s+(\\d+)\"))\n+ #:\n+ rx_bps: int = field(metadata=TextParser.find_int(r\"Rx-bps:\\s+(\\d+)\"))\n+\n+ #:\n+ tx_pps: int = field(metadata=TextParser.find_int(r\"Tx-pps:\\s+(\\d+)\"))\n+ #:\n+ tx_bps: int = field(metadata=TextParser.find_int(r\"Tx-bps:\\s+(\\d+)\"))\n+\n+\n class TestPmdShell(InteractiveShell):\n \"\"\"Testpmd interactive shell.\n \n@@ -713,6 +749,38 @@ def show_port_info(self, port_id: int) -> TestPmdPort:\n \n return TestPmdPort.parse(output)\n \n+ def show_port_stats_all(self) -> list[TestPmdPortStats]:\n+ \"\"\"Returns the statistics of all the ports.\"\"\"\n+ output = self.send_command(\"show port stats all\")\n+\n+ # Sample output of the \"all\" command looks like:\n+ #\n+ # ########### NIC statistics for port 0 ###########\n+ # values...\n+ # #################################################\n+ #\n+ # ########### NIC statistics for port 1 ###########\n+ # values...\n+ # #################################################\n+ #\n+ iter = re.finditer(r\"(^ #*.+#*$[^#]+)^ #*$\", output, re.MULTILINE)\n+ return [TestPmdPortStats.parse(block.group(1)) for block in iter]\n+\n+ def show_port_stats(self, port_id: int) -> TestPmdPortStats:\n+ \"\"\"Returns the given port statistics.\n+\n+ Args:\n+ port_id: The port ID to gather information for.\n+\n+ Raises:\n+ InteractiveCommandExecutionError: If `port_id` is invalid.\n+ \"\"\"\n+ output = self.send_command(f\"show port stats {port_id}\", skip_first_line=True)\n+ if output.startswith(\"Invalid port\"):\n+ raise InteractiveCommandExecutionError(\"invalid port given\")\n+\n+ return TestPmdPortStats.parse(output)\n+\n def close(self) -> None:\n \"\"\"Overrides :meth:`~.interactive_shell.close`.\"\"\"\n self.send_command(\"quit\", \"\")\n", "prefixes": [ "v2", "5/5" ] }{ "id": 140011, "url": "