---
test/api_test/Makefile.am | 6 +++
test/api_test/odp_atomic_test.c | 10 ++---
test/api_test/odp_common.c | 3 +-
test/api_test/odp_ring_test.c | 62 ++++++++++++++---------------
test/api_test/odp_shm_test.c | 3 +-
test/api_test/odp_timer_ping.c | 27 +++++++------
test/test_debug.h | 88 +++++++++++++++++++++++++++++++++++++++++
7 files changed, 148 insertions(+), 51 deletions(-)
create mode 100644 test/test_debug.h
diff --git a/test/api_test/Makefile.am b/test/api_test/Makefile.am
index 5104454..bad7132 100644
--- a/test/api_test/Makefile.am
+++ b/test/api_test/Makefile.am
@@ -1,6 +1,12 @@
include $(top_srcdir)/test/Makefile.inc
bin_PROGRAMS = odp_atomic odp_shm odp_ring odp_timer_ping
+
+odp_atomic_CFLAGS = $(AM_CFLAGS) -I $(top_srcdir)/test
+odp_shm_CFLAGS = $(AM_CFLAGS) -I $(top_srcdir)/test
+odp_ring_CFLAGS = $(AM_CFLAGS) -I $(top_srcdir)/test
+odp_timer_ping_CFLAGS = $(AM_CFLAGS) -I $(top_srcdir)/test
+
odp_atomic_LDFLAGS = $(AM_LDFLAGS) -static
odp_shm_LDFLAGS = $(AM_LDFLAGS) -static
odp_ring_LDFLAGS = $(AM_LDFLAGS) -static
diff --git a/test/api_test/odp_atomic_test.c b/test/api_test/odp_atomic_test.c
index 3ca7674..f07c962 100644
--- a/test/api_test/odp_atomic_test.c
+++ b/test/api_test/odp_atomic_test.c
@@ -6,9 +6,9 @@
#include <string.h>
#include <sys/time.h>
-#include <odp_debug.h>
#include <odp_common.h>
#include <odp_atomic_test.h>
+#include <test_debug.h>
static odp_atomic_u32_t a32u;
static odp_atomic_u64_t a64u;
@@ -166,12 +166,12 @@ void test_atomic_store(void)
int test_atomic_validate(void)
{
if (odp_atomic_load_u32(&a32u) != U32_INIT_VAL) {
- ODP_ERR("Atomic u32 usual functions failed\n");
+ LOG_ERR("Atomic u32 usual functions failed\n");
return -1;
}
if (odp_atomic_load_u64(&a64u) != U64_INIT_VAL) {
- ODP_ERR("Atomic u64 usual functions failed\n");
+ LOG_ERR("Atomic u64 usual functions failed\n");
return -1;
}
@@ -247,7 +247,7 @@ int main(int argc, char *argv[])
sscanf(argv[++i], "%d", &pthrdnum);
break;
default:
- ODP_ERR("Invalid option %c\n", c);
+ LOG_ERR("Invalid option %c\n", c);
usage();
goto err_exit;
}
@@ -273,7 +273,7 @@ int main(int argc, char *argv[])
if ((test_type > 0) && (test_type < TEST_MAX)) {
printf("%s\n", test_name[test_type]);
} else {
- ODP_ERR("Invalid test case [%d]\n", test_type);
+ LOG_ERR("Invalid test case [%d]\n", test_type);
usage();
goto err_exit;
}
diff --git a/test/api_test/odp_common.c b/test/api_test/odp_common.c
index ed1fc97..329d4d4 100644
--- a/test/api_test/odp_common.c
+++ b/test/api_test/odp_common.c
@@ -16,6 +16,7 @@
#include <odp_common.h>
#include <odp_atomic_test.h>
#include <odp_shm_test.h>
+#include <test_debug.h>
/* Globals */
@@ -57,7 +58,7 @@ int odp_test_global_init(void)
memset(thread_tbl, 0, sizeof(thread_tbl));
if (odp_init_global(NULL, NULL)) {
- ODP_ERR("ODP global init failed.\n");
+ LOG_ERR("ODP global init failed.\n");
return -1;
}
diff --git a/test/api_test/odp_ring_test.c b/test/api_test/odp_ring_test.c
index eb1f301..a55a0cd 100644
--- a/test/api_test/odp_ring_test.c
+++ b/test/api_test/odp_ring_test.c
@@ -48,9 +48,9 @@
#include <stdio.h>
#include <string.h>
#include <odp.h>
-#include <odp_debug.h>
#include <odp_common.h>
#include <odph_ring.h>
+#include <test_debug.h>
#define RING_SIZE 4096
#define MAX_BULK 32
@@ -66,7 +66,7 @@ static int test_ring_basic(odph_ring_t *r)
/* alloc dummy object pointers */
src = malloc(RING_SIZE*2*sizeof(void *));
if (src == NULL) {
- ODP_ERR("failed to allocate test ring src memory\n");
+ LOG_ERR("failed to allocate test ring src memory\n");
goto fail;
}
for (i = 0; i < RING_SIZE*2; i++)
@@ -77,7 +77,7 @@ static int test_ring_basic(odph_ring_t *r)
/* alloc some room for copied objects */
dst = malloc(RING_SIZE*2*sizeof(void *));
if (dst == NULL) {
- ODP_ERR("failed to allocate test ring dst memory\n");
+ LOG_ERR("failed to allocate test ring dst memory\n");
goto fail;
}
@@ -89,7 +89,7 @@ static int test_ring_basic(odph_ring_t *r)
ret = odph_ring_sp_enqueue_burst(r, cur_src, 1);
cur_src += 1;
if ((ret & ODPH_RING_SZ_MASK) != 1) {
- ODP_ERR("sp_enq for 1 obj failed\n");
+ LOG_ERR("sp_enq for 1 obj failed\n");
goto fail;
}
@@ -97,14 +97,14 @@ static int test_ring_basic(odph_ring_t *r)
ret = odph_ring_sp_enqueue_burst(r, cur_src, 2);
cur_src += 2;
if ((ret & ODPH_RING_SZ_MASK) != 2) {
- ODP_ERR("sp_enq for 2 obj failed\n");
+ 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) {
- ODP_ERR("sp_enq for %d obj failed\n", MAX_BULK);
+ LOG_ERR("sp_enq for %d obj failed\n", MAX_BULK);
goto fail;
}
@@ -112,7 +112,7 @@ static int test_ring_basic(odph_ring_t *r)
ret = odph_ring_sc_dequeue_burst(r, cur_dst, 1);
cur_dst += 1;
if ((ret & ODPH_RING_SZ_MASK) != 1) {
- ODP_ERR("sc_deq for 1 obj failed\n");
+ LOG_ERR("sc_deq for 1 obj failed\n");
goto fail;
}
@@ -120,7 +120,7 @@ static int test_ring_basic(odph_ring_t *r)
ret = odph_ring_sc_dequeue_burst(r, cur_dst, 2);
cur_dst += 2;
if ((ret & ODPH_RING_SZ_MASK) != 2) {
- ODP_ERR("sc_deq for 2 obj failed\n");
+ LOG_ERR("sc_deq for 2 obj failed\n");
goto fail;
}
@@ -128,13 +128,13 @@ static int test_ring_basic(odph_ring_t *r)
ret = odph_ring_sc_dequeue_burst(r, cur_dst, MAX_BULK);
cur_dst += MAX_BULK;
if ((ret & ODPH_RING_SZ_MASK) != MAX_BULK) {
- ODP_ERR("sc_deq for %d obj failed\n", MAX_BULK);
+ LOG_ERR("sc_deq for %d obj failed\n", MAX_BULK);
goto fail;
}
/* check data */
if (memcmp(src, dst, cur_dst - dst)) {
- ODP_ERR("data after dequeue is not the same\n");
+ LOG_ERR("data after dequeue is not the same\n");
goto fail;
}
@@ -147,46 +147,46 @@ static int test_ring_basic(odph_ring_t *r)
ret = odph_ring_mp_enqueue_bulk(r, cur_src, 1);
cur_src += 1;
if (ret != 0) {
- ODP_ERR("mp_enq for 1 obj failed\n");
+ 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) {
- ODP_ERR("mp_enq for 2 obj failed\n");
+ 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) {
- ODP_ERR("mp_enq for %d obj failed\n", MAX_BULK);
+ 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) {
- ODP_ERR("mc_deq for 1 obj failed\n");
+ 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) {
- ODP_ERR("mc_deq for 2 obj failed\n");
+ 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) {
- ODP_ERR("mc_deq for %d obj failed\n", MAX_BULK);
+ LOG_ERR("mc_deq for %d obj failed\n", MAX_BULK);
goto fail;
}
/* check data */
if (memcmp(src, dst, cur_dst - dst)) {
- ODP_ERR("data after dequeue is not the same\n");
+ LOG_ERR("data after dequeue is not the same\n");
goto fail;
}
@@ -200,30 +200,30 @@ static int test_ring_basic(odph_ring_t *r)
ret = odph_ring_mp_enqueue_bulk(r, cur_src, num_elems);
cur_src += num_elems;
if (ret != 0) {
- ODP_ERR("Cannot enqueue\n");
+ LOG_ERR("Cannot enqueue\n");
goto fail;
}
ret = odph_ring_mp_enqueue_bulk(r, cur_src, num_elems);
if (ret != -EDQUOT) {
- ODP_ERR("Watermark not exceeded\n");
+ 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) {
- ODP_ERR("Cannot dequeue\n");
+ 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) {
- ODP_ERR("Cannot dequeue2\n");
+ LOG_ERR("Cannot dequeue2\n");
goto fail;
}
/* check data */
if (memcmp(src, dst, cur_dst - dst)) {
- ODP_ERR("data after dequeue is not the same\n");
+ LOG_ERR("data after dequeue is not the same\n");
goto fail;
}
@@ -253,7 +253,7 @@ static int producer_fn(void)
/* alloc dummy object pointers */
src = malloc(MAX_BULK*2*sizeof(void *));
if (src == NULL) {
- ODP_ERR("failed to allocate producer memory.\n");
+ LOG_ERR("failed to allocate producer memory.\n");
return -1;
}
for (i = 0; i < MAX_BULK; i++)
@@ -277,7 +277,7 @@ static int consumer_fn(void)
/* alloc dummy object pointers */
src = malloc(MAX_BULK*2*sizeof(void *));
if (src == NULL) {
- ODP_ERR("failed to allocate consumer memory.\n");
+ LOG_ERR("failed to allocate consumer memory.\n");
return -1;
}
@@ -340,7 +340,7 @@ static void test_ring_stress(stress_type_t type)
case one_deq_rest_enq:
case one_enq_rest_deq:/*TBD*/
default:
- ODP_ERR("Invalid stress type or test case yet not supported\n");
+ LOG_ERR("Invalid stress type or test case yet not supported\n");
}
}
@@ -371,20 +371,20 @@ static void *test_ring(void *arg)
0 /* not used, alignement
taken care inside func : todo */);
if (r == NULL) {
- ODP_ERR("ring create failed\n");
+ LOG_ERR("ring create failed\n");
result = -1;
break;
}
/* lookup ring from its name */
if (odph_ring_lookup(ring_name) != r) {
- ODP_ERR("ring lookup failed\n");
+ LOG_ERR("ring lookup failed\n");
result = -1;
break;
}
/* basic operations */
if (test_ring_basic(r) < 0) {
- ODP_ERR("ring basic enqueue/dequeu ops failed\n");
+ LOG_ERR("ring basic enqueue/dequeu ops failed\n");
result = -1;
}
@@ -401,7 +401,7 @@ static void *test_ring(void *arg)
break;
default:
- ODP_ERR("Invalid test case [%d]\n", parg->thrdarg.testcase);
+ LOG_ERR("Invalid test case [%d]\n", parg->thrdarg.testcase);
result = -1;
break;
}
@@ -447,12 +447,12 @@ int main(int argc ODP_UNUSED, char *argv[] ODP_UNUSED)
0 /* not used, alignement
taken care inside func : todo */);
if (r_stress == NULL) {
- ODP_ERR("ring create failed\n");
+ LOG_ERR("ring create failed\n");
goto fail;
}
/* lookup ring from its name */
if (odph_ring_lookup(ring_name) != r_stress) {
- ODP_ERR("ring lookup failed\n");
+ LOG_ERR("ring lookup failed\n");
goto fail;
}
#endif
diff --git a/test/api_test/odp_shm_test.c b/test/api_test/odp_shm_test.c
index 6208e78..5cfde7d 100644
--- a/test/api_test/odp_shm_test.c
+++ b/test/api_test/odp_shm_test.c
@@ -14,6 +14,7 @@
#include <odp.h>
#include <odp_common.h>
#include <odp_shm_test.h>
+#include <test_debug.h>
static void *run_thread(void *arg)
{
@@ -32,7 +33,7 @@ static void *run_thread(void *arg)
printf(" [%i] shared data at %p\n", thr, test_shared_data);
break;
default:
- ODP_ERR("Invalid test case [%d]\n", parg->testcase);
+ LOG_ERR("Invalid test case [%d]\n", parg->testcase);
}
fflush(stdout);
diff --git a/test/api_test/odp_timer_ping.c b/test/api_test/odp_timer_ping.c
index 65e3834..7704181 100644
--- a/test/api_test/odp_timer_ping.c
+++ b/test/api_test/odp_timer_ping.c
@@ -37,6 +37,7 @@
#include <odp_timer.h>
#include <odph_linux.h>
#include <odph_chksum.h>
+#include <test_debug.h>
#define MSG_POOL_SIZE (4*1024*1024)
#define BUF_SIZE 8
@@ -98,7 +99,7 @@ static int listen_to_pingack(void)
sd = socket(PF_INET, SOCK_RAW, proto->p_proto);
if (sd < 0) {
- ODP_ERR("Listener socket open failed\n");
+ LOG_ERR("Listener socket open failed\n");
err = -1;
goto err;
}
@@ -116,7 +117,7 @@ static int listen_to_pingack(void)
ODP_DBG(" Rx timeout msg cnt [%d]\n", i);
err = -1;
} else if (res == -1) {
- ODP_ERR("recvfrom error");
+ LOG_ERR("recvfrom error");
err = -1;
goto err;
} else {
@@ -130,7 +131,7 @@ static int listen_to_pingack(void)
/* pkt rxvd therefore cancel the timeout */
if (odp_timer_cancel_tmo(test_timer_ping,
test_ping_tmo) != 0) {
- ODP_ERR("cancel_tmo failed ..exiting listner
thread\n");
+ LOG_ERR("cancel_tmo failed ..exiting listner
thread\n");
/* avoid exiting from here even if tmo
* failed for current ping,
* allow subsequent ping_rx request */
@@ -166,17 +167,17 @@ static int send_ping_request(struct sockaddr_in *addr)
sd = socket(PF_INET, SOCK_RAW, proto->p_proto);
if (sd < 0) {
- ODP_ERR("Sender socket open failed\n");
+ LOG_ERR("Sender socket open failed\n");
return -1;
}
if (setsockopt(sd, SOL_IP, IP_TTL, &val, sizeof(val)) != 0) {
- ODP_ERR("Error setting TTL option\n");
+ LOG_ERR("Error setting TTL option\n");
err = -1;
goto err;
}
if (fcntl(sd, F_SETFL, O_NONBLOCK) != 0) {
- ODP_ERR("Request for nonblocking I/O failed\n");
+ LOG_ERR("Request for nonblocking I/O failed\n");
err = -1;
goto err;
}
@@ -201,7 +202,7 @@ static int send_ping_request(struct sockaddr_in *addr)
/* txmit the pkt */
if (sendto(sd, &pckt, sizeof(pckt), 0,
(struct sockaddr *)addr, sizeof(*addr)) <= 0) {
- ODP_ERR("sendto operation failed msg_cnt [%d]..exiting
sender thread\n", i);
+ LOG_ERR("sendto operation failed msg_cnt [%d]..exiting
sender thread\n", i);
err = -1;
goto err;
}
@@ -258,7 +259,7 @@ static void *send_ping(void *arg)
parg->result = -1;
break;
default:
- ODP_ERR("Invalid test case [%d]\n", parg->thrdarg.testcase);
+ LOG_ERR("Invalid test case [%d]\n", parg->thrdarg.testcase);
}
fflush(stdout);
@@ -281,7 +282,7 @@ static void *rx_ping(void *arg)
parg->result = -1;
break;
default:
- ODP_ERR("Invalid test case [%d]\n", parg->thrdarg.testcase);
+ LOG_ERR("Invalid test case [%d]\n", parg->thrdarg.testcase);
}
fflush(stdout);
@@ -294,7 +295,7 @@ static int ping_init(int count, char *name[])
{
struct hostent *hname;
if (count != 2) {
- ODP_ERR("usage: %s <hostaddr>\n", name[0]);
+ LOG_ERR("usage: %s <hostaddr>\n", name[0]);
return -1;
}
@@ -342,7 +343,7 @@ int main(int argc ODP_UNUSED, char *argv[] ODP_UNUSED)
ODP_CACHE_LINE_SIZE,
ODP_BUFFER_TYPE_RAW);
if (pool == ODP_BUFFER_POOL_INVALID) {
- ODP_ERR("Pool create failed.\n");
+ LOG_ERR("Pool create failed.\n");
return -1;
}
@@ -353,7 +354,7 @@ int main(int argc ODP_UNUSED, char *argv[] ODP_UNUSED)
NULL);
if (queue == ODP_QUEUE_INVALID) {
- ODP_ERR("Timer queue create failed.\n");
+ LOG_ERR("Timer queue create failed.\n");
return -1;
}
@@ -363,7 +364,7 @@ int main(int argc ODP_UNUSED, char *argv[] ODP_UNUSED)
MAXUS*ODP_TIME_USEC);
if (test_timer_ping == ODP_TIMER_INVALID) {
- ODP_ERR("Timer create failed.\n");
+ LOG_ERR("Timer create failed.\n");
return -1;
}
diff --git a/test/test_debug.h b/test/test_debug.h
new file mode 100644
index 0000000..35e21d9
--- /dev/null
+++ b/test/test_debug.h
@@ -0,0 +1,88 @@
+/* Copyright (c) 2014, Linaro Limited
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+/**
+ * @file
+ *
+ * example debug
+ */
+
+#ifndef TEST_DEBUG_H_
+#define TEST_DEBUG_H_
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef TEST_DEBUG_PRINT
+#define TEST_DEBUG_PRINT 1
+#endif
+
+/**
+ * log level.
+ */
+typedef enum example_log_level {
+ TEST_LOG_DBG,
+ TEST_LOG_ERR,
+ TEST_LOG_ABORT
+} example_log_level_e;
+
+/**
+ * default LOG macro.
+ */
+#define TEST_LOG(level, fmt, ...) \
+do { \
+ switch (level) { \
+ case TEST_LOG_ERR: \
+ fprintf(stderr, "%s:%d:%s():" fmt, __FILE__, \
+ __LINE__, __func__, ##__VA_ARGS__); \
+ break; \
+ case TEST_LOG_DBG: \
+ if (TEST_DEBUG_PRINT == 1) \
+ fprintf(stderr, "%s:%d:%s():" fmt, __FILE__, \
+ __LINE__, __func__, ##__VA_ARGS__); \
+ break; \
+ case TEST_LOG_ABORT: \
+ fprintf(stderr, "%s:%d:%s(): " fmt, __FILE__, \
+ __LINE__, __func__, ##__VA_ARGS__); \
+ abort(); \
+ break; \
+ default: \
+ fprintf(stderr, "Unknown LOG level"); \
+ break;\
+ } \
+} while (0)
+
+/**
+ * Debug printing macro, which prints output when DEBUG flag is set.
+ */
+#define LOG_DBG(fmt, ...) \
+ TEST_LOG(TEST_LOG_DBG, fmt, ##__VA_ARGS__)
+
+/**
+ * Print output to stderr (file, line and function).
+ */
+#define LOG_ERR(fmt, ...) \
+ TEST_LOG(TEST_LOG_ERR, fmt, ##__VA_ARGS__)
+
+/**
+ * Print output to stderr (file, line and function),
+ * then abort.
+ */
+#define LOG_ABORT(fmt, ...) \
+ TEST_LOG(TEST_LOG_ABORT, fmt, ##__VA_ARGS__)
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
--
2.1.0
_______________________________________________
lng-odp mailing list
[email protected]
http://lists.linaro.org/mailman/listinfo/lng-odp