The 3 init tests (init, abort,log) now links with common/odp_cunit_common,
as other tests. In main, ODP init is now performed via weak functions
which are overloaded (to do nothing) by the 3 init tests.

Signed-off-by: Christophe Milard <christophe.mil...@linaro.org>
---
 test/validation/Makefile.am               |  6 ++---
 test/validation/common/odp_cunit_common.c | 41 +++++++++++++++++++++----------
 test/validation/common/odp_cunit_common.h | 20 ++++++++++++++-
 test/validation/init/odp_init.c           | 34 ++++++++++---------------
 test/validation/init/odp_init_abort.c     | 35 +++++++++++---------------
 test/validation/init/odp_init_log.c       | 35 +++++++++++---------------
 6 files changed, 91 insertions(+), 80 deletions(-)

diff --git a/test/validation/Makefile.am b/test/validation/Makefile.am
index 7ea86c4..ba622c3 100644
--- a/test/validation/Makefile.am
+++ b/test/validation/Makefile.am
@@ -48,9 +48,9 @@ dist_odp_classification_SOURCES = 
classification/odp_classification_tests.c \
 odp_crypto_CFLAGS = $(AM_CFLAGS) -I$(srcdir)/crypto
 dist_odp_crypto_SOURCES = crypto/odp_crypto_test_inp.c \
                          odp_crypto.c $(ODP_CU_COMMON)
-dist_odp_init_SOURCES  = init/odp_init.c
-dist_odp_init_abort_SOURCES = init/odp_init_abort.c
-dist_odp_init_log_SOURCES = init/odp_init_log.c
+dist_odp_init_SOURCES  = init/odp_init.c $(ODP_CU_COMMON)
+dist_odp_init_abort_SOURCES = init/odp_init_abort.c $(ODP_CU_COMMON)
+dist_odp_init_log_SOURCES = init/odp_init_log.c $(ODP_CU_COMMON)
 dist_odp_queue_SOURCES = odp_queue.c $(ODP_CU_COMMON)
 dist_odp_random_SOURCES = odp_random.c $(ODP_CU_COMMON)
 dist_odp_schedule_SOURCES = odp_schedule.c $(ODP_CU_COMMON)
diff --git a/test/validation/common/odp_cunit_common.c 
b/test/validation/common/odp_cunit_common.c
index 2af4410..7eca422 100644
--- a/test/validation/common/odp_cunit_common.c
+++ b/test/validation/common/odp_cunit_common.c
@@ -49,12 +49,8 @@ __attribute__((__weak__)) int tests_global_term(void)
        return 0;
 }
 
-int main(void)
+__attribute__((__weak__)) int tests_odp_init(void)
 {
-       int ret;
-
-       printf("\tODP API version: %s\n", odp_version_api_str());
-       printf("\tODP implementation version: %s\n", odp_version_impl_str());
 
        if (0 != odp_init_global(NULL, NULL)) {
                fprintf(stderr, "error: odp_init_global() failed.\n");
@@ -64,6 +60,32 @@ int main(void)
                fprintf(stderr, "error: odp_init_local() failed.\n");
                return -1;
        }
+       return 0;
+}
+
+__attribute__((__weak__)) int tests_odp_term(void)
+{
+       if (0 != odp_term_local()) {
+               fprintf(stderr, "error: odp_term_local() failed.\n");
+               return -1;
+       }
+
+       if (0 != odp_term_global()) {
+               fprintf(stderr, "error: odp_term_global() failed.\n");
+               return -1;
+       }
+       return 0;
+}
+
+int main(void)
+{
+       int ret;
+
+       printf("\tODP API version: %s\n", odp_version_api_str());
+       printf("\tODP implementation version: %s\n", odp_version_impl_str());
+
+       if (0 != tests_odp_init())
+               return -1;
 
        ret = tests_global_init();
        if (ret)
@@ -83,15 +105,8 @@ int main(void)
        if (0 != tests_global_term())
                return -1;
 
-       if (0 != odp_term_local()) {
-               fprintf(stderr, "error: odp_term_local() failed.\n");
+       if (0 != tests_odp_term())
                return -1;
-       }
-
-       if (0 != odp_term_global()) {
-               fprintf(stderr, "error: odp_term_global() failed.\n");
-               return -1;
-       }
 
        return (ret) ? -1 : 0;
 }
diff --git a/test/validation/common/odp_cunit_common.h 
b/test/validation/common/odp_cunit_common.h
index 127020d..852d9ba 100644
--- a/test/validation/common/odp_cunit_common.h
+++ b/test/validation/common/odp_cunit_common.h
@@ -37,9 +37,27 @@ typedef struct {
        int numthrds; /**< no of pthreads to create */
 } pthrd_arg;
 
-/** create thread fro start_routine function */
+/** create thread for start_routine function */
 extern int odp_cunit_thread_create(void *func_ptr(void *), pthrd_arg *arg);
 extern int odp_cunit_thread_exit(pthrd_arg *);
+
+/**
+ * Global tests ODP initialization.
+ *
+ * ODP initialization/terminaison functions used by this main program.
+ * Default weak definition does both global and local ODP init/terminaison,
+ * (which is what most of the test cases want). Override it by defining
+ * a strong version.
+ *
+ * @note: This function is a workaround for Init tests and other applications
+ *        should try not to use it, because it will complicate migration to a
+ *        single test application in future. Normally each testsuite have to
+ *        prepare its environment in its own init function.
+ */
+extern int tests_odp_init(void);
+
+extern int tests_odp_term(void);
+
 /**
  * Global tests initialization.
  *
diff --git a/test/validation/init/odp_init.c b/test/validation/init/odp_init.c
index 82f8849..e0d7b2e 100644
--- a/test/validation/init/odp_init.c
+++ b/test/validation/init/odp_init.c
@@ -7,10 +7,23 @@
 #include <stdarg.h>
 #include <odp.h>
 #include <CUnit/Basic.h>
+#include "odp_cunit_common.h"
 
 #define DEFAULT_MSG_POOL_SIZE  (4*1024*1024)
 #define DEFAULT_MSG_SIZE       (8)
 
+/* overwrite common default so as not to perform odp init in main */
+int tests_odp_init(void)
+{
+       return 0;
+}
+
+/* overwrite common default so as not to perform odp term in main */
+int tests_odp_term(void)
+{
+       return 0;
+}
+
 static void test_odp_init_global(void)
 {
        int status;
@@ -30,24 +43,3 @@ CU_SuiteInfo odp_testsuites[] = {
        {"Init", NULL, NULL, NULL, NULL, test_odp_init},
        CU_SUITE_INFO_NULL,
 };
-
-int main(void)
-{
-       int ret;
-
-       printf("\tODP API version: %s\n", odp_version_api_str());
-       printf("\tODP implementation version: %s\n", odp_version_impl_str());
-
-       CU_set_error_action(CUEA_ABORT);
-
-       CU_initialize_registry();
-       CU_register_suites(odp_testsuites);
-       CU_basic_set_mode(CU_BRM_VERBOSE);
-       CU_basic_run_tests();
-
-       ret = CU_get_number_of_failure_records();
-
-       CU_cleanup_registry();
-
-       return ret;
-}
diff --git a/test/validation/init/odp_init_abort.c 
b/test/validation/init/odp_init_abort.c
index ceb82b5..2e5efb4 100644
--- a/test/validation/init/odp_init_abort.c
+++ b/test/validation/init/odp_init_abort.c
@@ -8,6 +8,20 @@
 #include <stdlib.h>
 #include <odp.h>
 #include <CUnit/Basic.h>
+#include "odp_cunit_common.h"
+
+/* overwrite common default so as not to perform odp init in main */
+int tests_odp_init(void)
+{
+       return 0;
+}
+
+/* overwrite common default so as not to perform odp term in main */
+int tests_odp_term(void)
+{
+       return 0;
+}
+
 
 static void odp_init_abort(void) ODP_NORETURN;
 
@@ -36,27 +50,6 @@ CU_SuiteInfo odp_testsuites[] = {
        CU_SUITE_INFO_NULL,
 };
 
-int main(void)
-{
-       int ret;
-
-       printf("\tODP API version: %s\n", odp_version_api_str());
-       printf("\tODP implementation version: %s\n", odp_version_impl_str());
-
-       CU_set_error_action(CUEA_ABORT);
-
-       CU_initialize_registry();
-       CU_register_suites(odp_testsuites);
-       CU_basic_set_mode(CU_BRM_VERBOSE);
-       CU_basic_run_tests();
-
-       ret = CU_get_number_of_failure_records();
-
-       CU_cleanup_registry();
-
-       return ret;
-}
-
 void odp_init_abort(void)
 {
        abort();
diff --git a/test/validation/init/odp_init_log.c 
b/test/validation/init/odp_init_log.c
index 275d343..c313252 100644
--- a/test/validation/init/odp_init_log.c
+++ b/test/validation/init/odp_init_log.c
@@ -7,9 +7,23 @@
 #include <stdarg.h>
 #include <odp.h>
 #include <CUnit/Basic.h>
+#include "odp_cunit_common.h"
 
 int replacement_logging_used;
 
+/* overwrite common default so as not to perform odp init in main */
+int tests_odp_init(void)
+{
+       return 0;
+}
+
+/* overwrite common default so as not to perform odp term in main */
+int tests_odp_term(void)
+{
+       return 0;
+}
+
+
 ODP_PRINTF_FORMAT(2, 3)
 static int odp_init_log(odp_log_level_e level , const char *fmt, ...);
 
@@ -42,27 +56,6 @@ CU_SuiteInfo odp_testsuites[] = {
        CU_SUITE_INFO_NULL,
 };
 
-int main(void)
-{
-       int ret;
-
-       printf("\tODP API version: %s\n", odp_version_api_str());
-       printf("\tODP implementation version: %s\n", odp_version_impl_str());
-
-       CU_set_error_action(CUEA_ABORT);
-
-       CU_initialize_registry();
-       CU_register_suites(odp_testsuites);
-       CU_basic_set_mode(CU_BRM_VERBOSE);
-       CU_basic_run_tests();
-
-       ret = CU_get_number_of_failure_records();
-
-       CU_cleanup_registry();
-
-       return ret;
-}
-
 int odp_init_log(odp_log_level_e level __attribute__((unused)),
                 const char *fmt, ...)
 {
-- 
1.9.1

_______________________________________________
lng-odp mailing list
lng-odp@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to