All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gage Eads <gage.eads@intel.com>
To: dev@dpdk.org
Cc: olivier.matz@6wind.com, arybchenko@solarflare.com,
	bruce.richardson@intel.com, konstantin.ananyev@intel.com,
	stephen@networkplumber.org, jerinj@marvell.com,
	mczekaj@marvell.com, nd@arm.com, Ola.Liljedahl@arm.com,
	gage.eads@intel.com
Subject: [PATCH v8 4/6] test_ring: add lock-free ring autotest
Date: Mon, 18 Mar 2019 20:20:08 -0500	[thread overview]
Message-ID: <20190319012010.16793-5-gage.eads@intel.com> (raw)
In-Reply-To: <20190319012010.16793-1-gage.eads@intel.com>

ring_nb_autotest re-uses the ring_autotest code by wrapping its top-level
function with one that takes a 'flags' argument.

Signed-off-by: Gage Eads <gage.eads@intel.com>
---
 app/test/test_ring.c | 61 ++++++++++++++++++++++++++++++++--------------------
 1 file changed, 38 insertions(+), 23 deletions(-)

diff --git a/app/test/test_ring.c b/app/test/test_ring.c
index aaf1e70ad..400b1bffd 100644
--- a/app/test/test_ring.c
+++ b/app/test/test_ring.c
@@ -1,5 +1,5 @@
 /* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2010-2014 Intel Corporation
+ * Copyright(c) 2010-2019 Intel Corporation
  */
 
 #include <string.h>
@@ -601,18 +601,20 @@ test_ring_burst_basic(struct rte_ring *r)
  * it will always fail to create ring with a wrong ring size number in this function
  */
 static int
-test_ring_creation_with_wrong_size(void)
+test_ring_creation_with_wrong_size(unsigned int flags)
 {
 	struct rte_ring * rp = NULL;
 
 	/* Test if ring size is not power of 2 */
-	rp = rte_ring_create("test_bad_ring_size", RING_SIZE + 1, SOCKET_ID_ANY, 0);
+	rp = rte_ring_create("test_bad_ring_size", RING_SIZE + 1,
+			     SOCKET_ID_ANY, flags);
 	if (NULL != rp) {
 		return -1;
 	}
 
 	/* Test if ring size is exceeding the limit */
-	rp = rte_ring_create("test_bad_ring_size", (RTE_RING_SZ_MASK + 1), SOCKET_ID_ANY, 0);
+	rp = rte_ring_create("test_bad_ring_size", (RTE_RING_SZ_MASK + 1),
+			     SOCKET_ID_ANY, flags);
 	if (NULL != rp) {
 		return -1;
 	}
@@ -623,11 +625,11 @@ test_ring_creation_with_wrong_size(void)
  * it tests if it would always fail to create ring with an used ring name
  */
 static int
-test_ring_creation_with_an_used_name(void)
+test_ring_creation_with_an_used_name(unsigned int flags)
 {
 	struct rte_ring * rp;
 
-	rp = rte_ring_create("test", RING_SIZE, SOCKET_ID_ANY, 0);
+	rp = rte_ring_create("test", RING_SIZE, SOCKET_ID_ANY, flags);
 	if (NULL != rp)
 		return -1;
 
@@ -639,10 +641,10 @@ test_ring_creation_with_an_used_name(void)
  * function to fail correctly
  */
 static int
-test_create_count_odd(void)
+test_create_count_odd(unsigned int flags)
 {
 	struct rte_ring *r = rte_ring_create("test_ring_count",
-			4097, SOCKET_ID_ANY, 0 );
+			4097, SOCKET_ID_ANY, flags);
 	if(r != NULL){
 		return -1;
 	}
@@ -665,7 +667,7 @@ test_lookup_null(void)
  * it tests some more basic ring operations
  */
 static int
-test_ring_basic_ex(void)
+test_ring_basic_ex(unsigned int flags)
 {
 	int ret = -1;
 	unsigned i;
@@ -679,7 +681,7 @@ test_ring_basic_ex(void)
 	}
 
 	rp = rte_ring_create("test_ring_basic_ex", RING_SIZE, SOCKET_ID_ANY,
-			RING_F_SP_ENQ | RING_F_SC_DEQ);
+			RING_F_SP_ENQ | RING_F_SC_DEQ | flags);
 	if (rp == NULL) {
 		printf("test_ring_basic_ex fail to create ring\n");
 		goto fail_test;
@@ -737,22 +739,22 @@ test_ring_basic_ex(void)
 }
 
 static int
-test_ring_with_exact_size(void)
+test_ring_with_exact_size(unsigned int flags)
 {
 	struct rte_ring *std_ring = NULL, *exact_sz_ring = NULL;
-	void *ptr_array[16];
+	void *ptr_array[1024];
 	static const unsigned int ring_sz = RTE_DIM(ptr_array);
 	unsigned int i;
 	int ret = -1;
 
 	std_ring = rte_ring_create("std", ring_sz, rte_socket_id(),
-			RING_F_SP_ENQ | RING_F_SC_DEQ);
+			RING_F_SP_ENQ | RING_F_SC_DEQ | flags);
 	if (std_ring == NULL) {
 		printf("%s: error, can't create std ring\n", __func__);
 		goto end;
 	}
 	exact_sz_ring = rte_ring_create("exact sz", ring_sz, rte_socket_id(),
-			RING_F_SP_ENQ | RING_F_SC_DEQ | RING_F_EXACT_SZ);
+		RING_F_SP_ENQ | RING_F_SC_DEQ | RING_F_EXACT_SZ | flags);
 	if (exact_sz_ring == NULL) {
 		printf("%s: error, can't create exact size ring\n", __func__);
 		goto end;
@@ -770,7 +772,7 @@ test_ring_with_exact_size(void)
 	}
 	/*
 	 * check that the exact_sz_ring can hold one more element than the
-	 * standard ring. (16 vs 15 elements)
+	 * standard ring. (1024 vs 1023 elements)
 	 */
 	for (i = 0; i < ring_sz - 1; i++) {
 		rte_ring_enqueue(std_ring, NULL);
@@ -808,17 +810,17 @@ test_ring_with_exact_size(void)
 }
 
 static int
-test_ring(void)
+__test_ring(unsigned int flags)
 {
 	struct rte_ring *r = NULL;
 
 	/* some more basic operations */
-	if (test_ring_basic_ex() < 0)
+	if (test_ring_basic_ex(flags) < 0)
 		goto test_fail;
 
 	rte_atomic32_init(&synchro);
 
-	r = rte_ring_create("test", RING_SIZE, SOCKET_ID_ANY, 0);
+	r = rte_ring_create("test", RING_SIZE, SOCKET_ID_ANY, flags);
 	if (r == NULL)
 		goto test_fail;
 
@@ -837,27 +839,27 @@ test_ring(void)
 		goto test_fail;
 
 	/* basic operations */
-	if ( test_create_count_odd() < 0){
+	if (test_create_count_odd(flags) < 0) {
 		printf("Test failed to detect odd count\n");
 		goto test_fail;
 	} else
 		printf("Test detected odd count\n");
 
-	if ( test_lookup_null() < 0){
+	if (test_lookup_null() < 0) {
 		printf("Test failed to detect NULL ring lookup\n");
 		goto test_fail;
 	} else
 		printf("Test detected NULL ring lookup\n");
 
 	/* test of creating ring with wrong size */
-	if (test_ring_creation_with_wrong_size() < 0)
+	if (test_ring_creation_with_wrong_size(flags) < 0)
 		goto test_fail;
 
 	/* test of creation ring with an used name */
-	if (test_ring_creation_with_an_used_name() < 0)
+	if (test_ring_creation_with_an_used_name(flags) < 0)
 		goto test_fail;
 
-	if (test_ring_with_exact_size() < 0)
+	if (test_ring_with_exact_size(flags) < 0)
 		goto test_fail;
 
 	/* dump the ring status */
@@ -873,4 +875,17 @@ test_ring(void)
 	return -1;
 }
 
+static int
+test_ring(void)
+{
+	return __test_ring(0);
+}
+
+static int
+test_lf_ring(void)
+{
+	return __test_ring(RING_F_LF);
+}
+
 REGISTER_TEST_COMMAND(ring_autotest, test_ring);
+REGISTER_TEST_COMMAND(ring_lf_autotest, test_lf_ring);
-- 
2.13.6

  parent reply	other threads:[~2019-03-19  1:20 UTC|newest]

Thread overview: 102+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-01-10 21:01 [PATCH 0/6] Add non-blocking ring Gage Eads
2019-01-10 21:01 ` [PATCH 1/6] ring: change head and tail to pointer-width size Gage Eads
2019-01-11  4:38   ` Stephen Hemminger
2019-01-11 19:07     ` Eads, Gage
2019-01-11 10:25   ` Burakov, Anatoly
2019-01-11 19:12     ` Eads, Gage
2019-01-11 19:55       ` Stephen Hemminger
2019-01-15 15:48         ` Eads, Gage
2019-01-11 10:40   ` Burakov, Anatoly
2019-01-11 10:58     ` Bruce Richardson
2019-01-11 11:30       ` Burakov, Anatoly
     [not found]         ` <20190111115851.GC3336@bricha3-MOBL.ger.corp.intel.com>
2019-01-11 19:27           ` Eads, Gage
2019-01-21 14:14             ` Burakov, Anatoly
2019-01-22 18:27               ` Eads, Gage
2019-01-10 21:01 ` [PATCH 2/6] ring: add a non-blocking implementation Gage Eads
2019-01-10 21:01 ` [PATCH 3/6] test_ring: add non-blocking ring autotest Gage Eads
2019-01-10 21:01 ` [PATCH 4/6] test_ring_perf: add non-blocking ring perf test Gage Eads
2019-01-10 21:01 ` [PATCH 5/6] mempool/ring: add non-blocking ring handlers Gage Eads
2019-01-13 13:43   ` Andrew Rybchenko
2019-01-10 21:01 ` [PATCH 6/6] doc: add NB ring comment to EAL "known issues" Gage Eads
2019-01-11  2:51   ` Varghese, Vipin
2019-01-11 19:30     ` Eads, Gage
2019-01-14  0:07       ` Varghese, Vipin
2019-01-15 23:52 ` [PATCH v2 0/5] Add non-blocking ring Gage Eads
2019-01-15 23:52   ` [PATCH v2 1/5] ring: change head and tail to pointer-width size Gage Eads
2019-01-15 23:52   ` [PATCH v2 2/5] ring: add a non-blocking implementation Gage Eads
2019-01-15 23:52   ` [PATCH v2 3/5] test_ring: add non-blocking ring autotest Gage Eads
2019-01-15 23:52   ` [PATCH v2 4/5] test_ring_perf: add non-blocking ring perf test Gage Eads
2019-01-15 23:52   ` [PATCH v2 5/5] mempool/ring: add non-blocking ring handlers Gage Eads
2019-01-16  0:26   ` [PATCH v2 0/5] Add non-blocking ring Stephen Hemminger
2019-01-18 15:23   ` [PATCH v3 " Gage Eads
2019-01-18 15:23     ` [PATCH v3 1/5] ring: add 64-bit headtail structure Gage Eads
2019-01-18 15:23     ` [PATCH v3 2/5] ring: add a non-blocking implementation Gage Eads
2019-01-22 10:12       ` Ola Liljedahl
2019-01-22 14:49       ` Ola Liljedahl
2019-01-22 21:31         ` Eads, Gage
2019-01-23 10:16           ` Ola Liljedahl
2019-01-25 17:21             ` Eads, Gage
2019-01-28 10:35               ` Ola Liljedahl
2019-01-28 18:54                 ` Eads, Gage
2019-01-28 22:31                   ` Ola Liljedahl
2019-01-28 13:34               ` Jerin Jacob Kollanukkaran
2019-01-28 13:43                 ` Ola Liljedahl
2019-01-28 14:04                   ` Jerin Jacob Kollanukkaran
2019-01-28 14:06                     ` Ola Liljedahl
2019-01-28 18:59                 ` Eads, Gage
2019-01-18 15:23     ` [PATCH v3 3/5] test_ring: add non-blocking ring autotest Gage Eads
2019-01-18 15:23     ` [PATCH v3 4/5] test_ring_perf: add non-blocking ring perf test Gage Eads
2019-01-18 15:23     ` [PATCH v3 5/5] mempool/ring: add non-blocking ring handlers Gage Eads
2019-01-22  9:27     ` [PATCH v3 0/5] Add non-blocking ring Ola Liljedahl
2019-01-22 10:15       ` Ola Liljedahl
2019-01-22 19:15       ` Eads, Gage
2019-01-23 16:02       ` Jerin Jacob Kollanukkaran
2019-01-23 16:29         ` Ola Liljedahl
2019-01-28 13:10           ` [EXT] " Jerin Jacob Kollanukkaran
2019-01-25  5:20     ` Honnappa Nagarahalli
2019-01-25 17:42       ` Eads, Gage
2019-01-25 17:56       ` Eads, Gage
2019-01-28 10:41         ` Ola Liljedahl
2019-01-28 18:14     ` [PATCH v4 " Gage Eads
2019-01-28 18:14       ` [PATCH v4 1/5] ring: add 64-bit headtail structure Gage Eads
2019-01-29 12:56         ` Ola Liljedahl
2019-01-30  4:26           ` Eads, Gage
2019-01-28 18:14       ` [PATCH v4 2/5] ring: add a non-blocking implementation Gage Eads
2019-01-28 18:14       ` [PATCH v4 3/5] test_ring: add non-blocking ring autotest Gage Eads
2019-01-28 18:14       ` [PATCH v4 4/5] test_ring_perf: add non-blocking ring perf test Gage Eads
2019-01-28 18:14       ` [PATCH v4 5/5] mempool/ring: add non-blocking ring handlers Gage Eads
2019-03-05 17:40       ` [PATCH v5 0/6] Add lock-free ring and mempool handler Gage Eads
2019-03-05 17:40         ` [PATCH v5 1/6] ring: add a pointer-width headtail structure Gage Eads
2019-03-05 17:40         ` [PATCH v5 2/6] ring: add a ring start marker Gage Eads
2019-03-05 17:40         ` [PATCH v5 3/6] ring: add a lock-free implementation Gage Eads
2019-03-05 17:40         ` [PATCH v5 4/6] test_ring: add lock-free ring autotest Gage Eads
2019-03-05 17:40         ` [PATCH v5 5/6] test_ring_perf: add lock-free ring perf test Gage Eads
2019-03-05 17:40         ` [PATCH v5 6/6] mempool/ring: add lock-free ring handlers Gage Eads
2019-03-06 15:03         ` [PATCH v6 0/6] Add lock-free ring and mempool handler Gage Eads
2019-03-06 15:03           ` [PATCH v6 1/6] ring: add a pointer-width headtail structure Gage Eads
2019-03-06 15:03           ` [PATCH v6 2/6] ring: add a ring start marker Gage Eads
2019-03-06 15:03           ` [PATCH v6 3/6] ring: add a lock-free implementation Gage Eads
2019-03-06 15:03           ` [PATCH v6 4/6] test_ring: add lock-free ring autotest Gage Eads
2019-03-06 15:03           ` [PATCH v6 5/6] test_ring_perf: add lock-free ring perf test Gage Eads
2019-03-06 15:03           ` [PATCH v6 6/6] mempool/ring: add lock-free ring handlers Gage Eads
2019-03-18 21:35           ` [PATCH v7 0/6] Add lock-free ring and mempool handler Gage Eads
2019-03-18 21:35             ` [PATCH v7 1/6] ring: add a pointer-width headtail structure Gage Eads
2019-03-18 21:35             ` [PATCH v7 2/6] ring: add a ring start marker Gage Eads
2019-03-18 21:35             ` [PATCH v7 3/6] ring: add a lock-free implementation Gage Eads
2019-03-19 15:50               ` Stephen Hemminger
2019-03-18 21:35             ` [PATCH v7 4/6] test_ring: add lock-free ring autotest Gage Eads
2019-03-18 21:35             ` [PATCH v7 5/6] test_ring_perf: add lock-free ring perf test Gage Eads
2019-03-18 21:35             ` [PATCH v7 6/6] mempool/ring: add lock-free ring handlers Gage Eads
2019-03-18 21:49             ` [PATCH v7 0/6] Add lock-free ring and mempool handler Eads, Gage
2019-03-19 15:51               ` Stephen Hemminger
2019-04-01 19:23                 ` Eads, Gage
2019-04-02 10:16                   ` Ola Liljedahl
2019-04-04 22:28                     ` [dpdk-dev] " Eads, Gage
2019-03-19  1:20             ` [PATCH v8 " Gage Eads
2019-03-19  1:20               ` [PATCH v8 1/6] ring: add a pointer-width headtail structure Gage Eads
2019-03-19  1:20               ` [PATCH v8 2/6] ring: add a ring start marker Gage Eads
2019-03-19  1:20               ` [PATCH v8 3/6] ring: add a lock-free implementation Gage Eads
2019-03-19  1:20               ` Gage Eads [this message]
2019-03-19  1:20               ` [PATCH v8 5/6] test_ring_perf: add lock-free ring perf test Gage Eads
2019-03-19  1:20               ` [PATCH v8 6/6] mempool/ring: add lock-free ring handlers Gage Eads
2019-04-03 16:46               ` [PATCH v8 0/6] Add lock-free ring and mempool handler Thomas Monjalon

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=20190319012010.16793-5-gage.eads@intel.com \
    --to=gage.eads@intel.com \
    --cc=Ola.Liljedahl@arm.com \
    --cc=arybchenko@solarflare.com \
    --cc=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=jerinj@marvell.com \
    --cc=konstantin.ananyev@intel.com \
    --cc=mczekaj@marvell.com \
    --cc=nd@arm.com \
    --cc=olivier.matz@6wind.com \
    --cc=stephen@networkplumber.org \
    /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.