@@ -331,7 +331,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
@@ -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);
}
+
@@ -1,6 +1,7 @@
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}
@@ -9,7 +10,8 @@ EXECUTABLES = chksum$(EXEEXT) \
thread$(EXEEXT) \
process$(EXEEXT)\
pause$(EXEEXT)\
- table$(EXEEXT)
+ table$(EXEEXT)\
+ ring$(EXEEXT)
COMPILE_ONLY =
@@ -28,5 +30,7 @@ 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
-odph_pause_SOURCES = pause.c
-dist_odp_table_SOURCES = table.c
+dist_pause_SOURCES = pause.c
+dist_table_SOURCES = table.c
+dist_ring_SOURCES = ring.c
+ring_LDADD = $(LIB)/libodphelper.la $(LIB)/libodp.la
similarity index 86%
rename from test/api_test/odp_ring_test.c
rename to 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;
}
-
@@ -1,4 +1,4 @@
-SUBDIRS = api_test performance miscellaneous
+SUBDIRS = performance miscellaneous
if cunit_support
SUBDIRS += validation
deleted file mode 100644
@@ -1,2 +0,0 @@
-odp_ring
-odp_shm
deleted file mode 100644
@@ -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
deleted file mode 100644
@@ -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;
-}
deleted file mode 100644
@@ -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 */
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 <maxim.uvarov@linaro.org> --- configure.ac | 1 - helper/ring.c | 1 + helper/test/Makefile.am | 10 ++- .../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, 65 insertions(+), 197 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