Signed-off-by: Mike Holmes <[email protected]>
---
configure.ac | 1 -
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 ----
test/api_test/odp_ring_test.c | 470 ------------------------------------------
7 files changed, 1 insertion(+), 620 deletions(-)
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
delete mode 100644 test/api_test/odp_ring_test.c
diff --git a/configure.ac b/configure.ac
index 59e9057..1d2a596 100644
--- a/configure.ac
+++ b/configure.ac
@@ -297,7 +297,6 @@ AC_CONFIG_FILES([Makefile
platform/Makefile
platform/linux-generic/Makefile
test/Makefile
- test/api_test/Makefile
test/performance/Makefile
test/validation/Makefile
test/miscellaneous/Makefile
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 ddbac53..0000000
--- a/test/api_test/Makefile.am
+++ /dev/null
@@ -1,13 +0,0 @@
-include $(top_srcdir)/test/Makefile.inc
-
-bin_PROGRAMS = odp_ring
-
-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 0677f9b..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 */
- odph_linux_cpumask_default(&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 */
diff --git a/test/api_test/odp_ring_test.c b/test/api_test/odp_ring_test.c
deleted file mode 100644
index e8a962a..0000000
--- a/test/api_test/odp_ring_test.c
+++ /dev/null
@@ -1,470 +0,0 @@
-/* Copyright (c) 2014, Linaro Limited
- * All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-/*-
- * BSD LICENSE
- *
- * Copyright(c) 2010-2013 Intel Corporation. All rights reserved.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * * Neither the name of Intel Corporation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-/**
- * @file
- *
- * ODP test ring
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <odp.h>
-#include <odp_common.h>
-#include <odp/helper/ring.h>
-#include <test_debug.h>
-
-#define RING_SIZE 4096
-#define MAX_BULK 32
-
-#define RING_TEST_BASIC
-
-static int test_ring_basic(odph_ring_t *r)
-{
- void **src = NULL, **cur_src = NULL, **dst = NULL, **cur_dst = NULL;
- int ret;
- unsigned i, num_elems;
-
- /* alloc dummy object pointers */
- 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++)
- src[i] = (void *)(unsigned long)i;
-
- cur_src = src;
-
- /* alloc some room for copied objects */
- 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 *));
- cur_dst = dst;
-
- printf("Test SP & SC basic functions\n");
- printf("enqueue 1 obj\n");
- ret = odph_ring_sp_enqueue_burst(r, cur_src, 1);
- cur_src += 1;
- if ((ret & ODPH_RING_SZ_MASK) != 1) {
- LOG_ERR("sp_enq for 1 obj failed\n");
- goto fail;
- }
-
- printf("enqueue 2 objs\n");
- ret = odph_ring_sp_enqueue_burst(r, cur_src, 2);
- cur_src += 2;
- if ((ret & ODPH_RING_SZ_MASK) != 2) {
- LOG_ERR("sp_enq for 2 obj failed\n");
- goto fail;
- }
-
- printf("enqueue MAX_BULK objs\n");
- ret = odph_ring_sp_enqueue_burst(r, cur_src, MAX_BULK);
- if ((ret & ODPH_RING_SZ_MASK) != MAX_BULK) {
- LOG_ERR("sp_enq for %d obj failed\n", MAX_BULK);
- goto fail;
- }
-
- printf("dequeue 1 obj\n");
- ret = odph_ring_sc_dequeue_burst(r, cur_dst, 1);
- cur_dst += 1;
- if ((ret & ODPH_RING_SZ_MASK) != 1) {
- LOG_ERR("sc_deq for 1 obj failed\n");
- goto fail;
- }
-
- printf("dequeue 2 objs\n");
- ret = odph_ring_sc_dequeue_burst(r, cur_dst, 2);
- cur_dst += 2;
- if ((ret & ODPH_RING_SZ_MASK) != 2) {
- LOG_ERR("sc_deq for 2 obj failed\n");
- goto fail;
- }
-
- printf("dequeue MAX_BULK objs\n");
- ret = odph_ring_sc_dequeue_burst(r, cur_dst, MAX_BULK);
- cur_dst += MAX_BULK;
- if ((ret & ODPH_RING_SZ_MASK) != MAX_BULK) {
- LOG_ERR("sc_deq for %d obj failed\n", MAX_BULK);
- goto fail;
- }
-
- /* check data */
- if (memcmp(src, dst, cur_dst - dst)) {
- LOG_ERR("data after dequeue is not the same\n");
- goto fail;
- }
-
- cur_src = src;
- cur_dst = dst;
-
- printf("Test MP & MC basic functions\n");
-
- printf("enqueue 1 obj\n");
- ret = odph_ring_mp_enqueue_bulk(r, cur_src, 1);
- cur_src += 1;
- if (ret != 0) {
- LOG_ERR("mp_enq for 1 obj failed\n");
- goto fail;
- }
- printf("enqueue 2 objs\n");
- ret = odph_ring_mp_enqueue_bulk(r, cur_src, 2);
- cur_src += 2;
- if (ret != 0) {
- LOG_ERR("mp_enq for 2 obj failed\n");
- goto fail;
- }
- printf("enqueue MAX_BULK objs\n");
- ret = odph_ring_mp_enqueue_bulk(r, cur_src, MAX_BULK);
- if (ret != 0) {
- LOG_ERR("mp_enq for %d obj failed\n", MAX_BULK);
- goto fail;
- }
- printf("dequeue 1 obj\n");
- ret = odph_ring_mc_dequeue_bulk(r, cur_dst, 1);
- cur_dst += 1;
- if (ret != 0) {
- LOG_ERR("mc_deq for 1 obj failed\n");
- goto fail;
- }
- printf("dequeue 2 objs\n");
- ret = odph_ring_mc_dequeue_bulk(r, cur_dst, 2);
- cur_dst += 2;
- if (ret != 0) {
- LOG_ERR("mc_deq for 2 obj failed\n");
- goto fail;
- }
- printf("dequeue MAX_BULK objs\n");
- ret = odph_ring_mc_dequeue_bulk(r, cur_dst, MAX_BULK);
- cur_dst += MAX_BULK;
- if (ret != 0) {
- LOG_ERR("mc_deq for %d obj failed\n", MAX_BULK);
- goto fail;
- }
- /* check data */
- if (memcmp(src, dst, cur_dst - dst)) {
- LOG_ERR("data after dequeue is not the same\n");
- goto fail;
- }
-
- printf("test watermark and default bulk enqueue / dequeue\n");
- odph_ring_set_water_mark(r, 20);
- num_elems = 16;
-
- cur_src = src;
- cur_dst = dst;
-
- ret = odph_ring_mp_enqueue_bulk(r, cur_src, num_elems);
- cur_src += num_elems;
- if (ret != 0) {
- LOG_ERR("Cannot enqueue\n");
- goto fail;
- }
- ret = odph_ring_mp_enqueue_bulk(r, cur_src, num_elems);
- if (ret != -EDQUOT) {
- LOG_ERR("Watermark not exceeded\n");
- goto fail;
- }
- ret = odph_ring_mc_dequeue_bulk(r, cur_dst, num_elems);
- cur_dst += num_elems;
- if (ret != 0) {
- LOG_ERR("Cannot dequeue\n");
- goto fail;
- }
- ret = odph_ring_mc_dequeue_bulk(r, cur_dst, num_elems);
- cur_dst += num_elems;
- if (ret != 0) {
- LOG_ERR("Cannot dequeue2\n");
- goto fail;
- }
-
- /* check data */
- if (memcmp(src, dst, cur_dst - dst)) {
- LOG_ERR("data after dequeue is not the same\n");
- goto fail;
- }
-
- printf("basic enqueu, dequeue test for ring <%s>@%p passed\n",
- r->name, r);
-
- free(src);
- free(dst);
- return 0;
-
-fail:
- free(src);
- free(dst);
- return -1;
-}
-
-/* global shared ring used for stress testing */
-static odph_ring_t *r_stress;
-
-/* Stress func for Multi producer only */
-static int producer_fn(void)
-{
- unsigned i;
-
- void **src = NULL;
-
- /* alloc dummy object pointers */
- src = malloc(MAX_BULK*2*sizeof(void *));
- if (src == NULL) {
- LOG_ERR("failed to allocate producer memory.\n");
- return -1;
- }
- for (i = 0; i < MAX_BULK; i++)
- src[i] = (void *)(unsigned long)i;
-
- do {
- i = odph_ring_mp_enqueue_bulk(r_stress, src, MAX_BULK);
- if (i == 0) {
- free(src);
- return 0;
- }
- } while (1);
-}
-
-/* Stress func for Multi consumer only */
-static int consumer_fn(void)
-{
- unsigned i;
- void **src = NULL;
-
- /* alloc dummy object pointers */
- src = malloc(MAX_BULK*2*sizeof(void *));
- if (src == NULL) {
- LOG_ERR("failed to allocate consumer memory.\n");
- return -1;
- }
-
- do {
- i = odph_ring_mc_dequeue_bulk(r_stress, src, MAX_BULK);
- if (i == 0) {
- for (i = 0; i < MAX_BULK; i++) {
- if (src[i] != (void *)(unsigned long)i) {
- free(src);
- printf("data mismatch.. lockless ops
fail\n");
- return -1;
- }
- }
- free(src);
- printf("\n Test OK !\n");
- return 0;
- }
- } while (1);
-}
-
-
-/*
- * Note : make sure that both enqueue and dequeue
- * operation starts at same time so to avoid data corruption
- * Its because atomic lock will protect only indexes, but if order of
- * read or write operation incorrect then data mismatch will happen
- * So its resposibility of application develop to take care of order of
- * data read or write.
-*/
-typedef enum {
- one_enq_one_deq, /* One thread to enqueue one to
- dequeu at same time */
- one_enq_rest_deq, /* one thread to enq rest to
- dequeue at same time */
- one_deq_rest_enq, /* one to deq and rest enq at very same time */
- multi_enq_multi_deq /* multiple enq,deq */
-} stress_type_t;
-
-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)
- producer_fn();
- else
- consumer_fn();
- break;
-
- case one_deq_rest_enq:
- case one_enq_rest_deq:/*TBD*/
- default:
- LOG_ERR("Invalid stress type or test case yet not supported\n");
- }
-}
-
-/* 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;
- int thr;
- char ring_name[ODPH_RING_NAMESIZE];
- odph_ring_t *r;
- int result = 0;
-
- thr = odp_thread_id();
-
- printf("Thread %i starts\n", thr);
-
- switch (parg->thrdarg.testcase) {
- case ODP_RING_TEST_BASIC:
- 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 */);
- if (r == NULL) {
- LOG_ERR("ring create failed\n");
- result = -1;
- break;
- }
- /* lookup ring from its name */
- if (odph_ring_lookup(ring_name) != r) {
- LOG_ERR("ring lookup failed\n");
- result = -1;
- break;
- }
-
- /* basic operations */
- if (test_ring_basic(r) < 0) {
- LOG_ERR("ring basic enqueue/dequeu ops failed\n");
- result = -1;
- }
-
- /* dump ring stats */
- odph_ring_list_dump();
-
- break;
-
- case ODP_RING_TEST_STRESS:
- test_ring_stress(parg->stress_type);
-
- /* dump ring stats */
- odph_ring_list_dump();
- break;
-
- default:
- LOG_ERR("Invalid test case [%d]\n", parg->thrdarg.testcase);
- result = -1;
- break;
- }
-
- LOG_DBG("result = %d\n", result);
- if (result == 0)
- printf("test_ring Result:pass\n");
- else
- printf("test_ring Result:fail\n");
-
- fflush(stdout);
-
- return parg;
-}
-
-
-int main(int argc __attribute__((__unused__)),
- char *argv[] __attribute__((__unused__)))
-{
- ring_arg_t rarg;
-
- if (odp_test_global_init() != 0)
- return -1;
-
- odp_print_system_info();
-
- odph_ring_tailq_init();
-
- rarg.thrdarg.numthrds = odp_cpu_count();
-
-#ifdef RING_TEST_BASIC
- rarg.thrdarg.testcase = ODP_RING_TEST_BASIC;
-#else
- 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 */);
- if (r_stress == NULL) {
- LOG_ERR("ring create failed\n");
- goto fail;
- }
- /* lookup ring from its name */
- if (odph_ring_lookup(ring_name) != r_stress) {
- LOG_ERR("ring lookup failed\n");
- goto fail;
- }
-#endif
- odp_test_thread_create(test_ring, (pthrd_arg *)&rarg);
-
-#ifndef RING_TEST_BASIC
-fail:
-#endif
-
- odp_test_thread_exit(&rarg.thrdarg);
-
- return 0;
-}
-
--
2.1.4
_______________________________________________
lng-odp mailing list
[email protected]
https://lists.linaro.org/mailman/listinfo/lng-odp