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 <anatoly.burakov@intel.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
This commit is contained in:
Anatoly Burakov 2018-01-31 14:17:32 +00:00 committed by Thomas Monjalon
parent ac7f4af813
commit 995eec6190

View File

@ -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" },