Move ring test to helper and kill not needed api_test
directory. Unfortunately odp_ring_test.c had some old
dirty code so I had to clean up it to to use cunit and
latest helper apis.

Signed-off-by: Maxim Uvarov <[email protected]>
---
 configure.ac                                       |   1 -
 helper/ring.c                                      |   1 +
 helper/test/Makefile.am                            |   6 +-
 .../api_test/odp_ring_test.c => helper/test/ring.c | 100 ++++++++++++---------
 test/Makefile.am                                   |   2 +-
 test/api_test/.gitignore                           |   2 -
 test/api_test/Makefile.am                          |  13 ---
 test/api_test/odp_common.c                         |  91 -------------------
 test/api_test/odp_common.h                         |  42 ---------
 9 files changed, 63 insertions(+), 195 deletions(-)
 rename test/api_test/odp_ring_test.c => helper/test/ring.c (86%)
 delete mode 100644 test/api_test/.gitignore
 delete mode 100644 test/api_test/Makefile.am
 delete mode 100644 test/api_test/odp_common.c
 delete mode 100644 test/api_test/odp_common.h

diff --git a/configure.ac b/configure.ac
index 5d84f92..fb34e19 100644
--- a/configure.ac
+++ b/configure.ac
@@ -308,7 +308,6 @@ AC_CONFIG_FILES([Makefile
                 pkgconfig/libodphelper.pc
                 scripts/Makefile
                 test/Makefile
-                test/api_test/Makefile
                 test/performance/Makefile
                 test/validation/Makefile
                 test/validation/buffer/Makefile
diff --git a/helper/ring.c b/helper/ring.c
index e113606..2bd8e67 100644
--- a/helper/ring.c
+++ b/helper/ring.c
@@ -644,3 +644,4 @@ int odph_ring_dequeue_burst(odph_ring_t *r, void 
**obj_table, unsigned n)
        else
                return odph_ring_mc_dequeue_burst(r, obj_table, n);
 }
+
diff --git a/helper/test/Makefile.am b/helper/test/Makefile.am
index f6a3f83..3e0df0b 100644
--- a/helper/test/Makefile.am
+++ b/helper/test/Makefile.am
@@ -1,13 +1,15 @@
 include $(top_srcdir)/test/Makefile.inc
 
 AM_CFLAGS += -I$(srcdir)/common
+AM_CFLAGS += -I$(top_srcdir)/test/validation/common
 AM_LDFLAGS += -static
 
 TESTS_ENVIRONMENT += TEST_DIR=${builddir}
 
 EXECUTABLES = chksum$(EXEEXT) \
               thread$(EXEEXT) \
-              process$(EXEEXT)
+              process$(EXEEXT) \
+              ring$(EXEEXT)
 
 COMPILE_ONLY =
 
@@ -27,3 +29,5 @@ dist_thread_SOURCES = thread.c
 thread_LDADD = $(LIB)/libodphelper.la $(LIB)/libodp.la
 dist_process_SOURCES = process.c
 process_LDADD = $(LIB)/libodphelper.la $(LIB)/libodp.la
+dist_ring_SOURCES = ring.c
+ring_LDADD = $(LIB)/libodphelper.la $(LIB)/libodp.la
diff --git a/test/api_test/odp_ring_test.c b/helper/test/ring.c
similarity index 86%
rename from test/api_test/odp_ring_test.c
rename to helper/test/ring.c
index e8a962a..1b050be 100644
--- a/test/api_test/odp_ring_test.c
+++ b/helper/test/ring.c
@@ -37,7 +37,6 @@
  *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-
 /**
  * @file
  *
@@ -48,14 +47,24 @@
 #include <stdio.h>
 #include <string.h>
 #include <odp.h>
-#include <odp_common.h>
+#include <odp/helper/linux.h>
 #include <odp/helper/ring.h>
 #include <test_debug.h>
+#include <odp_cunit_common.h>
 
 #define RING_SIZE 4096
 #define MAX_BULK 32
 
-#define RING_TEST_BASIC
+enum {
+       ODP_RING_TEST_BASIC,
+       ODP_RING_TEST_STRESS,
+};
+
+/* local struct for ring_thread argument */
+typedef struct {
+       pthrd_arg thrdarg;
+       int stress_type;
+} ring_arg_t;
 
 static int test_ring_basic(odph_ring_t *r)
 {
@@ -64,24 +73,24 @@ static int test_ring_basic(odph_ring_t *r)
        unsigned i, num_elems;
 
        /* alloc dummy object pointers */
-       src = malloc(RING_SIZE*2*sizeof(void *));
+       src = malloc(RING_SIZE * 2 * sizeof(void *));
        if (src == NULL) {
                LOG_ERR("failed to allocate test ring src memory\n");
                goto fail;
        }
-       for (i = 0; i < RING_SIZE*2; i++)
+       for (i = 0; i < RING_SIZE * 2; i++)
                src[i] = (void *)(unsigned long)i;
 
        cur_src = src;
 
        /* alloc some room for copied objects */
-       dst = malloc(RING_SIZE*2*sizeof(void *));
+       dst = malloc(RING_SIZE * 2 * sizeof(void *));
        if (dst == NULL) {
                LOG_ERR("failed to allocate test ring dst memory\n");
                goto fail;
        }
 
-       memset(dst, 0, RING_SIZE*2*sizeof(void *));
+       memset(dst, 0, RING_SIZE * 2 * sizeof(void *));
        cur_dst = dst;
 
        printf("Test SP & SC basic functions\n");
@@ -251,7 +260,7 @@ static int producer_fn(void)
        void **src = NULL;
 
        /* alloc dummy object pointers */
-       src = malloc(MAX_BULK*2*sizeof(void *));
+       src = malloc(MAX_BULK * 2 * sizeof(void *));
        if (src == NULL) {
                LOG_ERR("failed to allocate producer memory.\n");
                return -1;
@@ -275,7 +284,7 @@ static int consumer_fn(void)
        void **src = NULL;
 
        /* alloc dummy object pointers */
-       src = malloc(MAX_BULK*2*sizeof(void *));
+       src = malloc(MAX_BULK * 2 * sizeof(void *));
        if (src == NULL) {
                LOG_ERR("failed to allocate consumer memory.\n");
                return -1;
@@ -298,7 +307,6 @@ static int consumer_fn(void)
        } while (1);
 }
 
-
 /*
  * Note : make sure that both enqueue and dequeue
  * operation starts at same time so to avoid data corruption
@@ -319,24 +327,22 @@ typedef enum {
 static void test_ring_stress(stress_type_t type)
 {
        int thr;
+
        thr = odp_thread_id();
 
        switch (type) {
        case one_enq_one_deq:
-
                if (thr == 1)
                        producer_fn();
                if (thr == 2)
                        consumer_fn();
                break;
-
        case multi_enq_multi_deq:
-               if (thr%2 == 0)
+               if (thr % 2 == 0)
                        producer_fn();
                else
                        consumer_fn();
                break;
-
        case one_deq_rest_enq:
        case one_enq_rest_deq:/*TBD*/
        default:
@@ -344,13 +350,6 @@ static void test_ring_stress(stress_type_t type)
        }
 }
 
-/* local struct for ring_thread argument */
-typedef struct {
-       pthrd_arg thrdarg;
-       int stress_type;
-} ring_arg_t;
-
-
 static void *test_ring(void *arg)
 {
        ring_arg_t *parg = (ring_arg_t *)arg;
@@ -368,8 +367,8 @@ static void *test_ring(void *arg)
                snprintf(ring_name, sizeof(ring_name), "test_ring_%i", thr);
 
                r = odph_ring_create(ring_name, RING_SIZE,
-                                   0 /* not used, alignement
-                                        taken care inside func : todo */);
+                                    0 /* not used, alignement
+                                    taken care inside func : todo */);
                if (r == NULL) {
                        LOG_ERR("ring create failed\n");
                        result = -1;
@@ -417,36 +416,43 @@ static void *test_ring(void *arg)
        return parg;
 }
 
-
-int main(int argc __attribute__((__unused__)),
-        char *argv[] __attribute__((__unused__)))
+int main(int argc TEST_UNUSED, char *argv[] TEST_UNUSED)
 {
        ring_arg_t rarg;
+       odph_linux_pthread_t thread_tbl[MAX_WORKERS];
+       odp_cpumask_t cpu_mask;
+       int num_workers;
+       char ring_name[ODPH_RING_NAMESIZE];
 
-       if (odp_test_global_init() != 0)
-               return -1;
+       if (odp_init_global(NULL, NULL)) {
+               LOG_ERR("Error: ODP global init failed.\n");
+               exit(EXIT_FAILURE);
+       }
 
-       odp_print_system_info();
+       if (odp_init_local(ODP_THREAD_CONTROL)) {
+               LOG_ERR("Error: ODP local init failed.\n");
+               exit(EXIT_FAILURE);
+       }
 
        odph_ring_tailq_init();
 
-       rarg.thrdarg.numthrds = odp_cpu_count();
+       num_workers = odp_cpumask_default_worker(&cpu_mask, MAX_WORKERS);
+       rarg.thrdarg.numthrds = rarg.thrdarg.numthrds;
 
-#ifdef RING_TEST_BASIC
        rarg.thrdarg.testcase = ODP_RING_TEST_BASIC;
-#else
+       printf("starting stess test type : %d..\n", rarg.stress_type);
+       odph_linux_pthread_create(&thread_tbl[0], &cpu_mask,
+                                 test_ring, (void *)&rarg);
+       odph_linux_pthread_join(thread_tbl, num_workers);
+
        rarg.thrdarg.testcase = ODP_RING_TEST_STRESS;
        rarg.stress_type = one_enq_one_deq;
-/*     rarg.stress_type = multi_enq_multi_deq;*/
-       char ring_name[ODPH_RING_NAMESIZE];
 
        printf("starting stess test type : %d..\n", rarg.stress_type);
-       /* create a ring */
        snprintf(ring_name, sizeof(ring_name), "test_ring_stress");
-
        r_stress = odph_ring_create(ring_name, RING_SIZE,
-                               0 /* not used, alignement
-                                taken care inside func : todo */);
+                                   0 /* not used, alignement
+                                   taken care inside func : todo */);
        if (r_stress == NULL) {
                LOG_ERR("ring create failed\n");
                goto fail;
@@ -456,15 +462,21 @@ int main(int argc __attribute__((__unused__)),
                LOG_ERR("ring lookup failed\n");
                goto fail;
        }
-#endif
-       odp_test_thread_create(test_ring, (pthrd_arg *)&rarg);
 
-#ifndef RING_TEST_BASIC
+       odph_linux_pthread_create(&thread_tbl[0], &cpu_mask,
+                                 test_ring, (void *)&rarg);
+       odph_linux_pthread_join(thread_tbl, num_workers);
+
 fail:
-#endif
+       if (odp_term_local()) {
+               LOG_ERR("Error: ODP local term failed.\n");
+               exit(EXIT_FAILURE);
+       }
 
-       odp_test_thread_exit(&rarg.thrdarg);
+       if (odp_term_global()) {
+               LOG_ERR("Error: ODP global term failed.\n");
+               exit(EXIT_FAILURE);
+       }
 
        return 0;
 }
-
diff --git a/test/Makefile.am b/test/Makefile.am
index 2ba8008..4a75364 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -1,4 +1,4 @@
-SUBDIRS = api_test performance miscellaneous
+SUBDIRS = performance miscellaneous
 
 if cunit_support
     SUBDIRS += validation
diff --git a/test/api_test/.gitignore b/test/api_test/.gitignore
deleted file mode 100644
index 950f443..0000000
--- a/test/api_test/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-odp_ring
-odp_shm
diff --git a/test/api_test/Makefile.am b/test/api_test/Makefile.am
deleted file mode 100644
index fcdba48..0000000
--- a/test/api_test/Makefile.am
+++ /dev/null
@@ -1,13 +0,0 @@
-include $(top_srcdir)/test/Makefile.inc
-
-bin_PROGRAMS = odp_ring$(EXEEXT)
-
-odp_ring_CFLAGS = $(AM_CFLAGS)
-
-odp_ring_LDFLAGS = $(AM_LDFLAGS) -static
-
-noinst_HEADERS = \
-                 $(top_srcdir)/test/api_test/odp_common.h \
-                 $(top_srcdir)/test/test_debug.h
-
-dist_odp_ring_SOURCES = odp_ring_test.c odp_common.c
diff --git a/test/api_test/odp_common.c b/test/api_test/odp_common.c
deleted file mode 100644
index 681d915..0000000
--- a/test/api_test/odp_common.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/* Copyright (c) 2013, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP test application common
- */
-
-#include <string.h>
-#include <odp.h>
-#include <odp/helper/linux.h>
-#include <odp_common.h>
-#include <test_debug.h>
-
-#define MAX_WORKERS           32            /**< Max worker threads */
-
-/* Globals */
-static odph_linux_pthread_t thread_tbl[MAX_WORKERS]; /**< worker threads 
table*/
-static int num_workers;                                    /**< number of 
workers      */
-
-/**
- * Print system information
- */
-void odp_print_system_info(void)
-{
-       odp_cpumask_t cpumask;
-       char str[ODP_CPUMASK_STR_SIZE];
-
-       memset(str, 1, sizeof(str));
-
-       odp_cpumask_zero(&cpumask);
-
-       odp_cpumask_from_str(&cpumask, "0x1");
-       (void)odp_cpumask_to_str(&cpumask, str, sizeof(str));
-
-       printf("\n");
-       printf("ODP system info\n");
-       printf("---------------\n");
-       printf("ODP API version: %s\n",        odp_version_api_str());
-       printf("CPU model:       %s\n",        odp_sys_cpu_model_str());
-       printf("CPU freq (hz):   %"PRIu64"\n", odp_sys_cpu_hz());
-       printf("Cache line size: %i\n",        odp_sys_cache_line_size());
-       printf("CPU count:       %i\n",        odp_cpu_count());
-       printf("CPU mask:        %s\n",        str);
-
-       printf("\n");
-}
-
-/** test init globals and call odp_init_global() */
-int odp_test_global_init(void)
-{
-       memset(thread_tbl, 0, sizeof(thread_tbl));
-
-       if (odp_init_global(NULL, NULL)) {
-               LOG_ERR("ODP global init failed.\n");
-               return -1;
-       }
-
-       num_workers = odp_cpu_count();
-       /* force to max CPU count */
-       if (num_workers > MAX_WORKERS)
-               num_workers = MAX_WORKERS;
-
-       return 0;
-}
-
-/** create test thread */
-int odp_test_thread_create(void *func_ptr(void *), pthrd_arg *arg)
-{
-       odp_cpumask_t cpumask;
-
-       /* Create and init additional threads */
-       odp_cpumask_default_worker(&cpumask, arg->numthrds);
-       odph_linux_pthread_create(thread_tbl, &cpumask, func_ptr,
-                                 (void *)arg);
-
-       return 0;
-}
-
-/** exit from test thread */
-int odp_test_thread_exit(pthrd_arg *arg)
-{
-       /* Wait for other threads to exit */
-       odph_linux_pthread_join(thread_tbl, arg->numthrds);
-
-       return 0;
-}
diff --git a/test/api_test/odp_common.h b/test/api_test/odp_common.h
deleted file mode 100644
index f321b6b..0000000
--- a/test/api_test/odp_common.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Copyright (c) 2013, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier:     BSD-3-Clause
- */
-
-/**
- * @file
- *
- * ODP test application common headers
- */
-
-#ifndef ODP_COMMON_H
-#define ODP_COMMON_H
-
-#define MAX_WORKERS 32 /**< Maximum number of work threads */
-
-/** types of tests */
-typedef enum {
-       ODP_ATOMIC_TEST = 0,
-       ODP_SHM_TEST,
-       ODP_RING_TEST_BASIC,
-       ODP_RING_TEST_STRESS,
-       ODP_TIMER_PING_TEST,
-       ODP_MAX_TEST
-} odp_test_case_e;
-
-/**
- * Thread argument
- */
-typedef struct {
-       int testcase; /**< specifies which set of API's to exercise */
-       int numthrds; /**< no of pthreads to create */
-} pthrd_arg;
-
-extern void odp_print_system_info(void);
-extern int odp_test_global_init(void);
-/** create thread fro start_routine function */
-extern int odp_test_thread_create(void *(*start_routine) (void *), pthrd_arg 
*);
-extern int odp_test_thread_exit(pthrd_arg *);
-
-#endif /* ODP_COMMON_H */
-- 
1.9.1

_______________________________________________
lng-odp mailing list
[email protected]
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to