DPDK patches and discussions
 help / color / mirror / Atom feed
From: Shreyansh Jain <shreyansh.jain@nxp.com>
To: <olivier.matz@6wind.com>
Cc: <dev@dpdk.org>, <hemant.agrawal@nxp.com>,
	Shreyansh Jain <shreyansh.jain@nxp.com>
Subject: [dpdk-dev] [RFC PATCH] test/test: support default mempool autotest
Date: Fri, 31 Mar 2017 15:47:49 +0530	[thread overview]
Message-ID: <1490955469-16216-1-git-send-email-shreyansh.jain@nxp.com> (raw)

Mempool test currently supports:
 * ring_mp_mc
 * stack

In case a new mempool handler is added, there are multiple options
for supporting that in the mempool autotest:
1. Like the patch below, adding a new default pool options
   So, ring* + stack + default (which can be 'stack' or 'ring')
 * This way, whatever the value of RTE_MBUF_DEFAULT_MEMPOOL_OPS is set,
   it would be verified.
 * even if that means duplicating some test (for example when "stack" is
   set as default and it already part of standard test)

2. Removing stack handler as standard, and moving only to one specified
   by RTE_MBUF_DEFAULT_MEMPOOL_OPS (+ existing ring*)
 * It still leaves space for duplication of ring_mp_mc in case that is
   set to default (as in case of master tree)

3. Iterating over the list of mempool handlers and performing a set
   or predefined tests
 * reqiures quite a lot of rewrite of mempool autotest
 * specially, allowing some special tests (cache/no-cache) cases when
   a set of variables in loop are being used, would be tricky

4. only checking the default pool set by RTE_* macro
 * In case a user has build DPDK using a configured value, probably it
   expected that application (or custom applications) would use that
   default handler.
 * would also mean that non-default (non RTE_* value) would not be tested
   even though they are being used.

The decision above would impact how new mempool handlers are added and
how their testing (API verification) can be done without impacting the
mempool_autotest file everytime.

Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>

---
 test/test/test_mempool.c | 35 +++++++++++++++++++++++++++++++++--
 1 file changed, 33 insertions(+), 2 deletions(-)

diff --git a/test/test/test_mempool.c b/test/test/test_mempool.c
index b9880b3..aefbf80 100644
--- a/test/test/test_mempool.c
+++ b/test/test/test_mempool.c
@@ -509,9 +509,11 @@ walk_cb(struct rte_mempool *mp, void *userdata __rte_unused)
 static int
 test_mempool(void)
 {
+	int ret = -1;
 	struct rte_mempool *mp_cache = NULL;
 	struct rte_mempool *mp_nocache = NULL;
 	struct rte_mempool *mp_stack = NULL;
+	struct rte_mempool *default_pool = NULL;
 
 	rte_atomic32_init(&synchro);
 
@@ -561,6 +563,30 @@ test_mempool(void)
 	}
 	rte_mempool_obj_iter(mp_stack, my_obj_init, NULL);
 
+	/* Create a mempool based on Default handler, if not "stack" */
+	printf("Testing %s mempool handler\n",
+	       RTE_MBUF_DEFAULT_MEMPOOL_OPS);
+	default_pool = rte_mempool_create_empty("default_pool",
+					MEMPOOL_SIZE,
+					MEMPOOL_ELT_SIZE,
+					RTE_MEMPOOL_CACHE_MAX_SIZE, 0,
+					SOCKET_ID_ANY, 0);
+
+	if (default_pool == NULL) {
+		printf("cannot allocate default mempool\n");
+		goto err;
+	}
+	if (rte_mempool_set_ops_byname(default_pool,
+			RTE_MBUF_DEFAULT_MEMPOOL_OPS, NULL) < 0) {
+		printf("cannot set default handler\n");
+		goto err;
+	}
+	if (rte_mempool_populate_default(default_pool) < 0) {
+		printf("cannot populate default mempool\n");
+		goto err;
+	}
+	rte_mempool_obj_iter(default_pool, my_obj_init, NULL);
+
 	/* retrieve the mempool from its name */
 	if (rte_mempool_lookup("test_nocache") != mp_nocache) {
 		printf("Cannot lookup mempool from its name\n");
@@ -605,15 +631,20 @@ test_mempool(void)
 	if (test_mempool_basic(mp_stack, 1) < 0)
 		goto err;
 
+	if (test_mempool_basic(default_pool, 1) < 0)
+		goto err;
+
 	rte_mempool_list_dump(stdout);
 
-	return 0;
+	ret = 0;
 
 err:
 	rte_mempool_free(mp_nocache);
 	rte_mempool_free(mp_cache);
 	rte_mempool_free(mp_stack);
-	return -1;
+	rte_mempool_free(default_pool);
+
+	return ret;
 }
 
 REGISTER_TEST_COMMAND(mempool_autotest, test_mempool);
-- 
2.7.4

             reply	other threads:[~2017-03-31 10:11 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-31 10:17 Shreyansh Jain [this message]
2017-03-31 13:59 ` Olivier Matz
2017-03-31 14:11   ` Hemant Agrawal
2017-03-31 15:11 ` Santosh Shukla
2017-04-03  9:27   ` Hemant Agrawal
2017-04-03  9:00 ` [dpdk-dev] [PATCH v2 1/2] test/test: free mempool on exit Hemant Agrawal
2017-04-03  9:00   ` [dpdk-dev] [PATCH v2 2/2] test/test: support default mempool autotest Hemant Agrawal
2017-04-04  5:57   ` [dpdk-dev] [PATCH v3 1/2] test/test: free mempool on exit Hemant Agrawal
2017-04-04  5:57     ` [dpdk-dev] [PATCH v3 2/2] test/test: support default mempool autotest Hemant Agrawal
2017-04-05  7:02       ` santosh
2017-04-05  7:21         ` Shreyansh Jain
2017-04-04 15:28     ` [dpdk-dev] [PATCH v3 1/2] test/test: free mempool on exit santosh
2017-04-05  9:35     ` [dpdk-dev] [PATCH v4 " Shreyansh Jain
2017-04-05  9:35       ` [dpdk-dev] [PATCH v4 2/2] test/test: support default mempool autotest Shreyansh Jain
2017-04-07 15:42         ` Olivier Matz
2017-04-19 13:10           ` Thomas Monjalon
2017-04-07 15:42       ` [dpdk-dev] [PATCH v4 1/2] test/test: free mempool on exit Olivier Matz

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=1490955469-16216-1-git-send-email-shreyansh.jain@nxp.com \
    --to=shreyansh.jain@nxp.com \
    --cc=dev@dpdk.org \
    --cc=hemant.agrawal@nxp.com \
    --cc=olivier.matz@6wind.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).