On 20 November 2014 17:21, Maxim Uvarov <maxim.uva...@linaro.org> wrote:
> Now I think it's good. > > Reviewed-by: Maxim Uvarov <maxim.uva...@linaro.org> Reviewed-by: Mike Holmes <mike.hol...@linaro.org> > > > Maxim. > > > On 11/20/2014 09:18 PM, Madhusudan Venugopal wrote: > >> Signed-off-by: Madhusudan Venugopal <madhusudan.venugo...@linaro.org> >> --- >> Merged odp_init and odp_init_local tests >> test/validation/odp_init.c | 144 ++++++++++++++++++++++++++++++ >> +++++++++------ >> 1 file changed, 126 insertions(+), 18 deletions(-) >> >> diff --git a/test/validation/odp_init.c b/test/validation/odp_init.c >> index 88e6235..b4db1e1 100644 >> --- a/test/validation/odp_init.c >> +++ b/test/validation/odp_init.c >> @@ -6,49 +6,157 @@ >> #include "odp.h" >> #include "CUnit/Basic.h" >> +#include <odph_linux.h> >> -#define DEFAULT_MSG_POOL_SIZE (4*1024*1024) >> -#define DEFAULT_MSG_SIZE (8) >> +void *odp_init_test(void *arg); >> +static void odp_init_local_singlethread_sunnyday(void); >> +static void odp_init_local_thread_per_core_sunnyday(void); >> +static int init(void); >> +static void test_odp_init_global(void); >> -static void test_odp_init_global(void) >> +#define MAX_WORKERS 32 >> +#define FIRST_CORE 0 >> +#define SINGLE_THREAD 1 >> + >> +/* Test to check if the thread is able to initialize using >> + * odp_init_local() and can terminate using odp_term_local(). >> + * odp_init_local() will return 0 if successful intialization. >> + * odp_term_local() will return 0 if successful termination. >> + */ >> + >> +void *odp_init_test(void *arg) >> +{ >> + int status; >> + >> + status = odp_init_local(); >> + CU_ASSERT(!status); >> + >> + status = odp_term_local(); >> + CU_ASSERT(!status); >> + >> + return arg; >> +} >> + >> +int init(void) >> +{ >> + printf("\t ODP version: %s\n", odp_version_api_str()); >> + return 0; >> +} >> + >> +/* Test for initialization and termination of single odp thread */ >> + >> + >> +void odp_init_local_singlethread_sunnyday(void) >> { >> int status; >> + odph_linux_pthread_t thread; >> + >> status = odp_init_global(NULL, NULL); >> - CU_ASSERT(status == 0); >> + CU_ASSERT(!status); >> + >> + status = odp_init_local(); >> + CU_ASSERT(!status); >> + >> + odph_linux_pthread_create(&thread, SINGLE_THREAD, FIRST_CORE, >> + odp_init_test, NULL); >> + odph_linux_pthread_join(&thread, 1); >> + >> + status = odp_term_local(); >> + CU_ASSERT(!status); >> status = odp_term_global(); >> - CU_ASSERT(status == 0); >> + CU_ASSERT(!status); >> } >> -static int init(void) >> +/* Test for initialization and termination of multiple odp threads >> + * One odp thread per core. >> + */ >> + >> +void odp_init_local_thread_per_core_sunnyday(void) >> { >> - printf("\tODP version: %s\n", odp_version_api_str()); >> - return 0; >> + odph_linux_pthread_t thread_tbl[MAX_WORKERS]; >> + int num_workers; >> + int status, first_core; >> + first_core = 1; >> + >> + status = odp_init_global(NULL, NULL); >> + CU_ASSERT(!status); >> + status = odp_init_local(); >> + CU_ASSERT(!status); >> + >> + num_workers = odp_sys_core_count(); >> + if (1 == num_workers) >> + first_core = 0; >> + >> + if (MAX_WORKERS < num_workers) >> + num_workers = MAX_WORKERS; >> + >> + odph_linux_pthread_create(thread_tbl, num_workers, first_core, >> + odp_init_test, NULL); >> + >> + /* if the number of cores in the system is 1, we have to use >> core 0. >> + * However if the number of cores is more than 1, we can leave >> core 0 >> + * for linux system and this how we expect odp systems to be used. >> + */ >> + >> + odph_linux_pthread_join(thread_tbl, num_workers); >> + >> + status = odp_term_local(); >> + CU_ASSERT(!status); >> + >> + status = odp_term_global(); >> + CU_ASSERT(!status); >> } >> -static int finalise(void) >> +/* Test to check if ODP is able to initialize globally using >> odp_init_global() >> + * and terminate globally using odp_term_global() successfully. >> + * odp_init_global() returns 0 if successful >> + * odp_term_global() returns 0 if successful >> + */ >> + >> +static void test_odp_init_global(void) >> { >> - return 0; >> + int status; >> + >> + status = odp_init_global(NULL, NULL); >> + CU_ASSERT(!status); >> + >> + status = odp_term_global(); >> + CU_ASSERT(!status); >> } >> int main(void) >> { >> - CU_pSuite ptr_suite = NULL; >> - /* initialize the CUnit test registry */ >> + CU_pSuite p_suite; >> + CU_pTest ret; >> + >> if (CUE_SUCCESS != CU_initialize_registry()) >> return CU_get_error(); >> - /* add a suite to the registry */ >> - ptr_suite = CU_add_suite(__FILE__, init, finalise); >> - if (NULL == ptr_suite) { >> + >> + p_suite = CU_add_suite(__FILE__, init, NULL); >> + if (!p_suite) { >> CU_cleanup_registry(); >> return CU_get_error(); >> } >> - /* add the tests to the suite */ >> - if (NULL == CU_ADD_TEST(ptr_suite, test_odp_init_global)) { >> + >> + ret = CU_ADD_TEST(p_suite, test_odp_init_global); >> + if (!ret) { >> CU_cleanup_registry(); >> return CU_get_error(); >> } >> - /* Run all tests using the CUnit Basic interface */ >> + >> + ret = CU_ADD_TEST(p_suite, odp_init_local_singlethread_sunnyday); >> + if (!ret) { >> + CU_cleanup_registry(); >> + return CU_get_error(); >> + } >> + >> + ret = CU_ADD_TEST(p_suite, odp_init_local_thread_per_ >> core_sunnyday); >> + if (!ret) { >> + CU_cleanup_registry(); >> + return CU_get_error(); >> + } >> + >> CU_basic_set_mode(CU_BRM_VERBOSE); >> CU_basic_run_tests(); >> CU_cleanup_registry(); >> > > > _______________________________________________ > lng-odp mailing list > lng-odp@lists.linaro.org > http://lists.linaro.org/mailman/listinfo/lng-odp > -- *Mike Holmes* Linaro Sr Technical Manager LNG - ODP
_______________________________________________ lng-odp mailing list lng-odp@lists.linaro.org http://lists.linaro.org/mailman/listinfo/lng-odp