All the negative test cases are consolidated into a single
function. This provides the ability to add test cases for
rte_ring_xxx_elem APIs easily.

Signed-off-by: Honnappa Nagarahalli <honnappa.nagaraha...@arm.com>
Reviewed-by: Gavin Hu <gavin...@arm.com>
---
 app/test/test_ring.c | 176 ++++++++++++++++++++++---------------------
 1 file changed, 91 insertions(+), 85 deletions(-)

diff --git a/app/test/test_ring.c b/app/test/test_ring.c
index 294e3ee10..552e8b53a 100644
--- a/app/test/test_ring.c
+++ b/app/test/test_ring.c
@@ -113,6 +113,93 @@ test_ring_print_test_string(const char *istr, unsigned int 
api_type, int esize)
                printf("burst\n");
 }
 
+/*
+ * Various negative test cases.
+ */
+static int
+test_ring_negative_tests(void)
+{
+       struct rte_ring *rp = NULL;
+       struct rte_ring *rt = NULL;
+       unsigned int i;
+
+       /* Test with esize not a multiple of 4 */
+       TEST_RING_CREATE("test_bad_element_size", 23,
+                               RING_SIZE + 1, SOCKET_ID_ANY, 0, rp);
+       if (rp != NULL) {
+               printf("Test failed to detect invalid element size\n");
+               goto test_fail;
+       }
+
+
+       for (i = 0; i < RTE_DIM(esize); i++) {
+               /* Test if ring size is not power of 2 */
+               TEST_RING_CREATE("test_bad_ring_size", esize[i],
+                                       RING_SIZE + 1, SOCKET_ID_ANY, 0, rp);
+               if (rp != NULL) {
+                       printf("Test failed to detect odd count\n");
+                       goto test_fail;
+               }
+
+               /* Test if ring size is exceeding the limit */
+               TEST_RING_CREATE("test_bad_ring_size", esize[i],
+                                       RTE_RING_SZ_MASK + 1, SOCKET_ID_ANY,
+                                       0, rp);
+               if (rp != NULL) {
+                       printf("Test failed to detect limits\n");
+                       goto test_fail;
+               }
+
+               /* Tests if lookup returns NULL on non-existing ring */
+               rp = rte_ring_lookup("ring_not_found");
+               if (rp != NULL && rte_errno != ENOENT) {
+                       printf("Test failed to detect NULL ring lookup\n");
+                       goto test_fail;
+               }
+
+               /* Test to if a non-power of 2 count causes the create
+                * function to fail correctly
+                */
+               TEST_RING_CREATE("test_ring_count", esize[i], 4097,
+                                       SOCKET_ID_ANY, 0, rp);
+               if (rp != NULL)
+                       goto test_fail;
+
+               TEST_RING_CREATE("test_ring_negative", esize[i], RING_SIZE,
+                                       SOCKET_ID_ANY,
+                                       RING_F_SP_ENQ | RING_F_SC_DEQ, rp);
+               if (rp == NULL) {
+                       printf("test_ring_negative fail to create ring\n");
+                       goto test_fail;
+               }
+
+               if (rte_ring_lookup("test_ring_negative") != rp)
+                       goto test_fail;
+
+               if (rte_ring_empty(rp) != 1) {
+                       printf("test_ring_nagative ring is not empty but it 
should be\n");
+                       goto test_fail;
+               }
+
+               /* Tests if it would always fail to create ring with an used
+                * ring name.
+                */
+               TEST_RING_CREATE("test_ring_negative", esize[i], RING_SIZE,
+                                       SOCKET_ID_ANY, 0, rt);
+               if (rt != NULL)
+                       goto test_fail;
+
+               rte_ring_free(rp);
+       }
+
+       return 0;
+
+test_fail:
+
+       rte_ring_free(rp);
+       return -1;
+}
+
 static int
 test_ring_basic(struct rte_ring *r)
 {
@@ -555,70 +642,6 @@ test_ring_burst_bulk_tests(unsigned int api_type)
        return -1;
 }
 
-/*
- * 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)
-{
-       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);
-       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);
-       if (NULL != rp) {
-               return -1;
-       }
-       return 0;
-}
-
-/*
- * 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)
-{
-       struct rte_ring * rp;
-
-       rp = rte_ring_create("test", RING_SIZE, SOCKET_ID_ANY, 0);
-       if (NULL != rp)
-               return -1;
-
-       return 0;
-}
-
-/*
- * Test to if a non-power of 2 count causes the create
- * function to fail correctly
- */
-static int
-test_create_count_odd(void)
-{
-       struct rte_ring *r = rte_ring_create("test_ring_count",
-                       4097, SOCKET_ID_ANY, 0 );
-       if(r != NULL){
-               return -1;
-       }
-       return 0;
-}
-
-static int
-test_lookup_null(void)
-{
-       struct rte_ring *rlp = rte_ring_lookup("ring_not_found");
-       if (rlp ==NULL)
-       if (rte_errno != ENOENT){
-               printf( "test failed to returnn error on null pointer\n");
-               return -1;
-       }
-       return 0;
-}
-
 /*
  * Test default, single element, bulk and burst APIs
  */
@@ -835,6 +858,10 @@ test_ring(void)
        unsigned int i, j;
        struct rte_ring *r = NULL;
 
+       /* Negative test cases */
+       if (test_ring_negative_tests() < 0)
+               goto test_fail;
+
        /* some more basic operations */
        if (test_ring_basic_ex() < 0)
                goto test_fail;
@@ -861,27 +888,6 @@ test_ring(void)
        if (test_ring_basic(r) < 0)
                goto test_fail;
 
-       /* basic operations */
-       if ( test_create_count_odd() < 0){
-               printf("Test failed to detect odd count\n");
-               goto test_fail;
-       } else
-               printf("Test detected odd count\n");
-
-       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)
-               goto test_fail;
-
-       /* test of creation ring with an used name */
-       if (test_ring_creation_with_an_used_name() < 0)
-               goto test_fail;
-
        if (test_ring_with_exact_size() < 0)
                goto test_fail;
 
-- 
2.17.1

Reply via email to