From: <kirankumark@marvell.com>
To: Jerin Jacob <jerinj@marvell.com>,
Kiran Kumar K <kirankumark@marvell.com>,
Nithin Dabilpuram <ndabilpuram@marvell.com>,
Zhirun Yan <yanzhirun_163@163.com>
Cc: <dev@dpdk.org>, <rjarry@redhat.com>, <chcchc88@163.com>
Subject: [PATCH v5 3/3] test/graph: fix graph autotest second run test failure
Date: Tue, 26 Nov 2024 10:14:02 +0530 [thread overview]
Message-ID: <20241126044402.1209998-3-kirankumark@marvell.com> (raw)
In-Reply-To: <20241126044402.1209998-1-kirankumark@marvell.com>
From: Kiran Kumar K <kirankumark@marvell.com>
The graph autotest second run test is failing due to the
node name is already present in the node list. Adding changes
to free nodes at the time of test cleanup.
Fixes: 6b89650418fe ("test/graph: add functional tests")
Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
---
app/test/test_graph.c | 95 ++++++++++++++++++++++++++++++++++++++++---
1 file changed, 90 insertions(+), 5 deletions(-)
diff --git a/app/test/test_graph.c b/app/test/test_graph.c
index 2840a25b13..635b8dd527 100644
--- a/app/test/test_graph.c
+++ b/app/test/test_graph.c
@@ -68,6 +68,8 @@ static void *mbuf_p[MAX_NODES + 1][MBUFF_SIZE];
static rte_graph_t graph_id;
static uint64_t obj_stats[MAX_NODES + 1];
static uint64_t fn_calls[MAX_NODES + 1];
+static uint32_t dummy_nodes_id[MAX_NODES];
+static uint32_t dummy_nodes_id_count;
const char *node_patterns[] = {
"test_node_source1", "test_node00",
@@ -541,6 +543,66 @@ test_lookup_functions(void)
return 0;
}
+static int
+test_node_id(void)
+{
+ uint32_t node_id, odummy_id, dummy_id, dummy_id1;
+
+ node_id = rte_node_from_name("test_node00");
+
+ dummy_id = rte_node_clone(node_id, "test_node_id00");
+ if (rte_node_is_invalid(dummy_id)) {
+ printf("Got invalid id when clone\n");
+ return -1;
+ }
+
+ dummy_id1 = rte_node_clone(node_id, "test_node_id01");
+ if (rte_node_is_invalid(dummy_id1)) {
+ printf("Got invalid id when clone\n");
+ return -1;
+ }
+
+ /* Expect next node id to be node_id + 1 */
+ if ((dummy_id + 1) != dummy_id1) {
+ printf("Node id didn't match, expected = %d got = %d\n",
+ dummy_id+1, dummy_id1);
+ return -1;
+ }
+
+ odummy_id = dummy_id;
+ /* Free one of the cloned node */
+ if (rte_node_free(dummy_id)) {
+ printf("Failed to free node\n");
+ return -1;
+ }
+
+ /* Clone again, should get the same id, that is freed */
+ dummy_id = rte_node_clone(node_id, "test_node_id00");
+ if (rte_node_is_invalid(dummy_id)) {
+ printf("Got invalid id when clone\n");
+ return -1;
+ }
+
+ if (dummy_id != odummy_id) {
+ printf("Node id didn't match, expected = %d got = %d\n",
+ odummy_id, dummy_id);
+ return -1;
+ }
+
+ /* Free the node */
+ if (rte_node_free(dummy_id)) {
+ printf("Failed to free node\n");
+ return -1;
+ }
+
+ if (rte_node_free(dummy_id1)) {
+ printf("Failed to free node\n");
+ return -1;
+ }
+
+ return 0;
+}
+
static int
test_node_clone(void)
{
@@ -551,11 +613,12 @@ test_node_clone(void)
node_id = rte_node_from_name("test_node00");
tm->test_node[0].idx = node_id;
- dummy_id = rte_node_clone(node_id, "test_node00");
- if (rte_node_is_invalid(dummy_id)) {
+ dummy_nodes_id[dummy_nodes_id_count] = rte_node_clone(node_id, "test_node00");
+ if (rte_node_is_invalid(dummy_nodes_id[dummy_nodes_id_count])) {
printf("Got invalid id when clone, Expecting fail\n");
return -1;
}
+ dummy_nodes_id_count++;
/* Clone with same name, should fail */
dummy_id = rte_node_clone(node_id, "test_node00");
@@ -635,15 +698,15 @@ test_create_graph(void)
.nb_node_patterns = 6,
.node_patterns = node_patterns_dummy,
};
- uint32_t dummy_node_id;
uint32_t node_id;
node_id = rte_node_from_name("test_node00");
- dummy_node_id = rte_node_clone(node_id, "dummy_node");
- if (rte_node_is_invalid(dummy_node_id)) {
+ dummy_nodes_id[dummy_nodes_id_count] = rte_node_clone(node_id, "dummy_node");
+ if (rte_node_is_invalid(dummy_nodes_id[dummy_nodes_id_count])) {
printf("Got invalid node id\n");
return -1;
}
+ dummy_nodes_id_count++;
graph_id = rte_graph_create("worker0", &gconf);
if (graph_id != RTE_GRAPH_ID_INVALID) {
@@ -1026,17 +1089,39 @@ graph_setup(void)
}
printf("test_node_clone: pass\n");
+ if (test_node_id()) {
+ printf("test_node_id: fail\n");
+ return -1;
+ }
+ printf("test_node_id: pass\n");
+
return 0;
}
static void
graph_teardown(void)
{
+ uint32_t i;
int id;
id = rte_graph_destroy(rte_graph_from_name("worker0"));
if (id)
printf("Graph Destroy failed\n");
+
+ for (i = 1; i < MAX_NODES; i++) {
+ if (rte_node_free(test_main.test_node[i].idx)) {
+ printf("Node free failed\n");
+ return;
+ }
+ }
+
+ for (i = 0; i < dummy_nodes_id_count; i++) {
+ if (rte_node_free(dummy_nodes_id[i])) {
+ printf("Node free failed\n");
+ return;
+ }
+ }
+ dummy_nodes_id_count = 0;
}
static struct unit_test_suite graph_testsuite = {
--
2.43.0
prev parent reply other threads:[~2024-11-26 4:44 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-14 7:04 [PATCH v3 1/3] graph: avoid global node ID counter kirankumark
2024-11-14 7:04 ` [PATCH v3 2/3] graph: add support for node free API kirankumark
2024-11-14 7:04 ` [PATCH v3 3/3] test/graph: fix graph autotest second run test failure kirankumark
2024-11-14 9:08 ` [PATCH v4 1/3] graph: avoid global node ID counter kirankumark
2024-11-14 9:08 ` [PATCH v4 2/3] graph: add support for node free API kirankumark
2024-11-14 17:07 ` Stephen Hemminger
2024-11-14 9:08 ` [PATCH v4 3/3] test/graph: fix graph autotest second run test failure kirankumark
2024-11-14 17:09 ` Stephen Hemminger
2024-11-26 4:44 ` [PATCH v5 1/3] graph: avoid global node ID counter kirankumark
2024-11-26 4:44 ` [PATCH v5 2/3] graph: add support for node free API kirankumark
2024-11-26 4:44 ` kirankumark [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20241126044402.1209998-3-kirankumark@marvell.com \
--to=kirankumark@marvell.com \
--cc=chcchc88@163.com \
--cc=dev@dpdk.org \
--cc=jerinj@marvell.com \
--cc=ndabilpuram@marvell.com \
--cc=rjarry@redhat.com \
--cc=yanzhirun_163@163.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).