aboutsummaryrefslogtreecommitdiff
path: root/test/validation/api
diff options
context:
space:
mode:
authorJere Leppänen <jere.leppanen@nokia.com>2021-04-20 16:55:03 +0300
committerMatias Elo <matias.elo@nokia.com>2021-05-05 11:10:39 +0300
commitab29119cb6b71bb07afdc8022e6a561fcea20098 (patch)
tree5b051cd4cb87e09878c80216a07927df2ea55959 /test/validation/api
parentc054a02ccb9a6c3db8e320b13477526e82326713 (diff)
validation: init: test thread specific log function
Test that a thread specific log function is called if and only if it is set. Signed-off-by: Jere Leppänen <jere.leppanen@nokia.com> Reviewed-by: Petri Savolainen <petri.savolainen@nokia.com>
Diffstat (limited to 'test/validation/api')
-rw-r--r--test/validation/api/Makefile.am1
-rw-r--r--test/validation/api/init/.gitignore1
-rw-r--r--test/validation/api/init/Makefile.am4
-rw-r--r--test/validation/api/init/init_main.c51
4 files changed, 55 insertions, 2 deletions
diff --git a/test/validation/api/Makefile.am b/test/validation/api/Makefile.am
index 9fb77bcf7..ce29781d6 100644
--- a/test/validation/api/Makefile.am
+++ b/test/validation/api/Makefile.am
@@ -47,6 +47,7 @@ TESTS = \
init/init_defaults$(EXEEXT) \
init/init_abort$(EXEEXT) \
init/init_log$(EXEEXT) \
+ init/init_log_thread$(EXEEXT) \
init/init_num_thr$(EXEEXT) \
init/init_feature_enabled$(EXEEXT) \
init/init_feature_disabled$(EXEEXT) \
diff --git a/test/validation/api/init/.gitignore b/test/validation/api/init/.gitignore
index 05301baac..5001771bf 100644
--- a/test/validation/api/init/.gitignore
+++ b/test/validation/api/init/.gitignore
@@ -1,6 +1,7 @@
init_defaults
init_abort
init_log
+init_log_thread
init_num_thr
init_feature_enabled
init_feature_disabled
diff --git a/test/validation/api/init/Makefile.am b/test/validation/api/init/Makefile.am
index 297f33dc4..479e3a71b 100644
--- a/test/validation/api/init/Makefile.am
+++ b/test/validation/api/init/Makefile.am
@@ -3,7 +3,7 @@ include ../Makefile.inc
# Keep init test cases in separate binaries. Some implementations may not allow
# the same application process to call odp_init_global() multiple times.
test_PROGRAMS = init_defaults init_abort init_log init_num_thr \
- init_feature_enabled init_feature_disabled
+ init_feature_enabled init_feature_disabled init_log_thread
init_defaults_CPPFLAGS = -DINIT_TEST=0 $(AM_CPPFLAGS)
init_abort_CPPFLAGS = -DINIT_TEST=1 $(AM_CPPFLAGS)
@@ -11,6 +11,7 @@ init_log_CPPFLAGS = -DINIT_TEST=2 $(AM_CPPFLAGS)
init_num_thr_CPPFLAGS = -DINIT_TEST=3 $(AM_CPPFLAGS)
init_feature_enabled_CPPFLAGS = -DINIT_TEST=4 $(AM_CPPFLAGS)
init_feature_disabled_CPPFLAGS = -DINIT_TEST=5 $(AM_CPPFLAGS)
+init_log_thread_CPPFLAGS = -DINIT_TEST=6 $(AM_CPPFLAGS)
init_defaults_SOURCES = init_main.c
init_abort_SOURCES = init_main.c
@@ -18,3 +19,4 @@ init_log_SOURCES = init_main.c
init_num_thr_SOURCES = init_main.c
init_feature_enabled_SOURCES = init_main.c
init_feature_disabled_SOURCES = init_main.c
+init_log_thread_SOURCES = init_main.c
diff --git a/test/validation/api/init/init_main.c b/test/validation/api/init/init_main.c
index baf6a5458..c335e10a3 100644
--- a/test/validation/api/init/init_main.c
+++ b/test/validation/api/init/init_main.c
@@ -10,6 +10,7 @@
#include <stdarg.h>
#include <stdlib.h>
+#include <stdio.h>
/* Replacement abort function */
static void ODP_NORETURN my_abort_func(void)
@@ -32,6 +33,20 @@ static int my_log_func(odp_log_level_t level __attribute__((unused)),
return r;
}
+static uint32_t my_log_thread_func_count;
+
+/* Thread specific log function */
+ODP_PRINTF_FORMAT(2, 3)
+static int my_log_thread_func(odp_log_level_t level, const char *fmt, ...)
+{
+ (void)level;
+ (void)fmt;
+
+ my_log_thread_func_count++;
+
+ return 0;
+}
+
static void init_test_defaults(void)
{
int ret;
@@ -97,6 +112,39 @@ static void init_test_log(void)
CU_ASSERT(ret == 0);
}
+static void init_test_log_thread(void)
+{
+ int ret;
+ odp_instance_t instance;
+ odp_init_t param;
+
+ odp_init_param_init(&param);
+
+ ret = odp_init_global(&instance, &param, NULL);
+ CU_ASSERT_FATAL(ret == 0);
+
+ ret = odp_init_local(instance, ODP_THREAD_WORKER);
+ CU_ASSERT_FATAL(ret == 0);
+
+ /* Test that our print function is called when set. */
+ odp_log_thread_fn_set(my_log_thread_func);
+ my_log_thread_func_count = 0;
+ odp_sys_info_print();
+ CU_ASSERT(my_log_thread_func_count != 0);
+
+ /* Test that our print function is not called when not set. */
+ odp_log_thread_fn_set(NULL);
+ my_log_thread_func_count = 0;
+ odp_sys_info_print();
+ CU_ASSERT(my_log_thread_func_count == 0);
+
+ ret = odp_term_local();
+ CU_ASSERT_FATAL(ret == 0);
+
+ ret = odp_term_global(instance);
+ CU_ASSERT(ret == 0);
+}
+
static void init_test_num_thr(void)
{
int ret;
@@ -178,7 +226,8 @@ odp_testinfo_t testinfo[] = {
ODP_TEST_INFO(init_test_log),
ODP_TEST_INFO(init_test_num_thr),
ODP_TEST_INFO(init_test_feature_enabled),
- ODP_TEST_INFO(init_test_feature_disabled)
+ ODP_TEST_INFO(init_test_feature_disabled),
+ ODP_TEST_INFO(init_test_log_thread),
};
odp_testinfo_t init_suite[] = {