Start dpdk-test, execute the graph_autotest test command for the first time, the result is successful, and then test again, the result is always failing, modify this problem to make this test command idempotent.
Signed-off-by: Huichao cai <chcch...@163.com> --- app/test/test_graph.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/app/test/test_graph.c b/app/test/test_graph.c index 2840a25..16a1a90 100644 --- a/app/test/test_graph.c +++ b/app/test/test_graph.c @@ -552,7 +552,7 @@ struct test_node_register { tm->test_node[0].idx = node_id; dummy_id = rte_node_clone(node_id, "test_node00"); - if (rte_node_is_invalid(dummy_id)) { + if (rte_node_is_invalid(dummy_id) && (rte_errno != EEXIST)) { printf("Got invalid id when clone, Expecting fail\n"); return -1; } @@ -565,12 +565,14 @@ struct test_node_register { } for (i = 1; i < MAX_NODES; i++) { - tm->test_node[i].idx = - rte_node_clone(node_id, tm->test_node[i].node.name); - if (rte_node_is_invalid(tm->test_node[i].idx)) { + dummy_id = rte_node_clone(node_id, tm->test_node[i].node.name); + if (rte_node_is_invalid(dummy_id) && (rte_errno != EEXIST)) { printf("Got invalid node id\n"); return -1; } + + if (!rte_node_is_invalid(dummy_id)) + tm->test_node[i].idx = dummy_id; } /* Clone from cloned node should fail */ @@ -640,7 +642,7 @@ struct test_node_register { 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)) { + if (rte_node_is_invalid(dummy_node_id) && (rte_errno != EEXIST)) { printf("Got invalid node id\n"); return -1; } @@ -672,7 +674,7 @@ struct test_node_register { main_graph_id = rte_graph_from_name("worker0"); if (main_graph_id == RTE_GRAPH_ID_INVALID) { printf("Must create main graph first\n"); - ret = -1; + return -1; } graph_conf.dispatch.mp_capacity = 1024; @@ -682,7 +684,7 @@ struct test_node_register { if (cloned_graph_id == RTE_GRAPH_ID_INVALID) { printf("Graph creation failed with error = %d\n", rte_errno); - ret = -1; + return -1; } if (strcmp(rte_graph_id_to_name(cloned_graph_id), "worker0-cloned-test0")) { @@ -787,7 +789,7 @@ struct test_node_register { cloned_graph_id = rte_graph_clone(graph_id, "cloned-test1", &graph_conf); node = rte_graph_node_get(cloned_graph_id, nid); - if (node->dispatch.lcore_id != worker_lcore) { + if (!node || node->dispatch.lcore_id != worker_lcore) { printf("set node affinity failed\n"); ret = -1; } @@ -859,7 +861,8 @@ struct test_node_register { } graph = rte_graph_lookup("worker0-cloned-test3"); - if (rte_graph_worker_model_get(graph) != RTE_GRAPH_MODEL_MCORE_DISPATCH) { + if (!graph || rte_graph_worker_model_get(graph) != + RTE_GRAPH_MODEL_MCORE_DISPATCH) { printf("Get graph worker model failed\n"); ret = -1; } -- 1.8.3.1