All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pallantla Poornima <pallantlax.poornima@intel.com>
To: dev@dpdk.org
Cc: reshma.pattan@intel.com, olivier.matz@6wind.com,
	bruce.richardson@intel.com, david.hunt@intel.com,
	jananeex.m.parthasarathy@intel.com,
	Pallantla Poornima <pallantlax.poornima@intel.com>
Subject: [dpdk-dev] [PATCH] app/test: add unit test cases to mempool library
Date: Tue, 10 Sep 2019 14:25:27 +0100	[thread overview]
Message-ID: <1568121927-31317-1-git-send-email-pallantlax.poornima@intel.com> (raw)

Added UT in mempool.c to cover below functions:
rte_mempool_populate_anon()
rte_mempool_memchunk_anon_free()
get_anon_size()
rte_mempool_mem_iter()

Signed-off-by: Pallantla Poornima <pallantlax.poornima@intel.com>
---
 app/test/test_mempool.c | 74 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 74 insertions(+)

diff --git a/app/test/test_mempool.c b/app/test/test_mempool.c
index 7738c73db..8b20886c8 100644
--- a/app/test/test_mempool.c
+++ b/app/test/test_mempool.c
@@ -26,6 +26,7 @@
 #include <rte_spinlock.h>
 #include <rte_malloc.h>
 #include <rte_mbuf_pool_ops.h>
+#include <rte_mbuf.h>
 
 #include "test.h"
 
@@ -453,14 +454,41 @@ walk_cb(struct rte_mempool *mp, void *userdata __rte_unused)
 	printf("\t%s\n", mp->name);
 }
 
+struct mp_data {
+	int16_t ret;
+};
+
+static void
+test_mp_mem_init(struct rte_mempool *mp,
+		__rte_unused void *opaque,
+		__rte_unused struct rte_mempool_memhdr *memhdr,
+		__rte_unused unsigned int mem_idx)
+{
+	struct mp_data *data = opaque;
+
+	if (mp == NULL) {
+		data->ret = -1;
+		return;
+	}
+	/* nothing to be implemented here*/
+	data->ret = 0;
+}
+
 static int
 test_mempool(void)
 {
 	int ret = -1;
+	uint32_t nb_objs = 0;
+	uint32_t nb_mem_chunks = 0;
 	struct rte_mempool *mp_cache = NULL;
 	struct rte_mempool *mp_nocache = NULL;
+	struct rte_mempool *mp_stack_anon = NULL;
+	struct rte_mempool *mp_stack_mempool_iter = NULL;
 	struct rte_mempool *mp_stack = NULL;
 	struct rte_mempool *default_pool = NULL;
+	struct mp_data cb_arg = {
+		.ret = -1
+	};
 	const char *default_pool_ops = rte_mbuf_best_mempool_ops();
 
 	rte_atomic32_init(&synchro);
@@ -490,6 +518,50 @@ test_mempool(void)
 		goto err;
 	}
 
+	/* create an empty mempool  */
+	mp_stack_anon = rte_mempool_create_empty("test_stack_anon",
+		MEMPOOL_SIZE,
+		MEMPOOL_ELT_SIZE,
+		RTE_MEMPOOL_CACHE_MAX_SIZE, 0,
+		SOCKET_ID_ANY, 0);
+
+	if (mp_stack_anon == NULL)
+		GOTO_ERR(ret, err);
+
+	/* populate an empty mempool */
+	ret = rte_mempool_populate_anon(mp_stack_anon);
+	printf("%s ret = %d\n", __func__, ret);
+	if (ret < 0)
+		GOTO_ERR(ret, err);
+
+	/* Try to populate when already populated */
+	ret = rte_mempool_populate_anon(mp_stack_anon);
+	if (ret != 0)
+		GOTO_ERR(ret, err);
+
+	/* create a mempool  */
+	mp_stack_mempool_iter = rte_mempool_create("test_iter_obj",
+		MEMPOOL_SIZE,
+		MEMPOOL_ELT_SIZE,
+		RTE_MEMPOOL_CACHE_MAX_SIZE, 0,
+		NULL, NULL,
+		my_obj_init, NULL,
+		SOCKET_ID_ANY, 0);
+
+	if (mp_stack_mempool_iter == NULL)
+		GOTO_ERR(ret, err);
+
+	/* test to initialize mempool objects and memory */
+	nb_objs = rte_mempool_obj_iter(mp_stack_mempool_iter, rte_pktmbuf_init,
+			NULL);
+	if (nb_objs == 0)
+		GOTO_ERR(ret, err);
+
+	nb_mem_chunks = rte_mempool_mem_iter(mp_stack_mempool_iter,
+			test_mp_mem_init, &cb_arg);
+	if (nb_mem_chunks == 0 || cb_arg.ret < 0)
+		GOTO_ERR(ret, err);
+
 	/* create a mempool with an external handler */
 	mp_stack = rte_mempool_create_empty("test_stack",
 		MEMPOOL_SIZE,
@@ -585,6 +657,8 @@ test_mempool(void)
 err:
 	rte_mempool_free(mp_nocache);
 	rte_mempool_free(mp_cache);
+	rte_mempool_free(mp_stack_anon);
+	rte_mempool_free(mp_stack_mempool_iter);
 	rte_mempool_free(mp_stack);
 	rte_mempool_free(default_pool);
 
-- 
2.14.1


             reply	other threads:[~2019-09-10 13:26 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-10 13:25 Pallantla Poornima [this message]
2019-10-24 11:07 ` [dpdk-dev] [PATCH] app/test: add unit test cases to mempool library Olivier Matz
2019-10-24 11:37   ` David Marchand

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=1568121927-31317-1-git-send-email-pallantlax.poornima@intel.com \
    --to=pallantlax.poornima@intel.com \
    --cc=bruce.richardson@intel.com \
    --cc=david.hunt@intel.com \
    --cc=dev@dpdk.org \
    --cc=jananeex.m.parthasarathy@intel.com \
    --cc=olivier.matz@6wind.com \
    --cc=reshma.pattan@intel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.