From: Anatoly Burakov Date: Wed, 31 Jan 2018 14:17:32 +0000 (+0000) Subject: test: clean up memory for function reentrancy test X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=995eec619024efe9763b9df85bc75e15d2c65b71;p=dpdk.git test: clean up memory for function reentrancy test Function reentrancy test limits maximum number of iterations based on the number of memzones and cores, however it doesn't free the memzones after the fact, so on a machine with big amount of cores the tests will fail due to running out of memzones. Fix this by introducing cleanup functions for ring and mempool reentrancy tests. Signed-off-by: Anatoly Burakov Acked-by: Olivier Matz --- diff --git a/test/test/test_func_reentrancy.c b/test/test/test_func_reentrancy.c index f43ec2e02f..a0ed19d7ae 100644 --- a/test/test/test_func_reentrancy.c +++ b/test/test/test_func_reentrancy.c @@ -81,6 +81,22 @@ test_eal_init_once(__attribute__((unused)) void *arg) /* * ring create/lookup reentrancy test */ +static void +ring_clean(unsigned int lcore_id) +{ + struct rte_ring *rp; + char ring_name[MAX_STRING_SIZE]; + int i; + + for (i = 0; i < MAX_ITER_TIMES; i++) { + snprintf(ring_name, sizeof(ring_name), + "fr_test_%d_%d", lcore_id, i); + rp = rte_ring_lookup(ring_name); + if (rp != NULL) + rte_ring_free(rp); + } +} + static int ring_create_lookup(__attribute__((unused)) void *arg) { @@ -127,6 +143,23 @@ my_obj_init(struct rte_mempool *mp, __attribute__((unused)) void *arg, *objnum = i; } +static void +mempool_clean(unsigned int lcore_id) +{ + struct rte_mempool *mp; + char mempool_name[MAX_STRING_SIZE]; + int i; + + /* verify all ring created successful */ + for (i = 0; i < MAX_ITER_TIMES; i++) { + snprintf(mempool_name, sizeof(mempool_name), "fr_test_%d_%d", + lcore_id, i); + mp = rte_mempool_lookup(mempool_name); + if (mp != NULL) + rte_mempool_free(mp); + } +} + static int mempool_create_lookup(__attribute__((unused)) void *arg) { @@ -312,7 +345,7 @@ fbk_create_free(__attribute__((unused)) void *arg) #ifdef RTE_LIBRTE_LPM static void -lpm_clean(unsigned lcore_id) +lpm_clean(unsigned int lcore_id) { char lpm_name[MAX_STRING_SIZE]; struct rte_lpm *lpm; @@ -383,8 +416,9 @@ struct test_case{ /* All test cases in the test suite */ struct test_case test_cases[] = { { test_eal_init_once, NULL, NULL, "eal init once" }, - { ring_create_lookup, NULL, NULL, "ring create/lookup" }, - { mempool_create_lookup, NULL, NULL, "mempool create/lookup" }, + { ring_create_lookup, NULL, ring_clean, "ring create/lookup" }, + { mempool_create_lookup, NULL, mempool_clean, + "mempool create/lookup" }, #ifdef RTE_LIBRTE_HASH { hash_create_free, NULL, hash_clean, "hash create/free" }, { fbk_create_free, NULL, fbk_clean, "fbk create/free" },