From: Martin Willi Date: Mon, 21 Oct 2013 09:45:10 +0000 (+0200) Subject: unit-tests: Add a simple thread join() test X-Git-Tag: 5.1.2dr1~33^2~32 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5d4a882f4573cb83eb8f7d504f6afe6b10a36c8b;p=thirdparty%2Fstrongswan.git unit-tests: Add a simple thread join() test --- diff --git a/src/libstrongswan/tests/suites/test_threading.c b/src/libstrongswan/tests/suites/test_threading.c index c75d6de21f..23c2b93119 100644 --- a/src/libstrongswan/tests/suites/test_threading.c +++ b/src/libstrongswan/tests/suites/test_threading.c @@ -166,6 +166,29 @@ START_TEST(test_mutex) } END_TEST +static void *join_run(void *data) +{ + /* force some context switches */ + sched_yield(); + return (void*)((uintptr_t)data + THREADS); +} + +START_TEST(test_join) +{ + thread_t *threads[THREADS]; + int i; + + for (i = 0; i < THREADS; i++) + { + threads[i] = thread_create(join_run, (void*)(uintptr_t)i); + } + for (i = 0; i < THREADS; i++) + { + ck_assert_int_eq((uintptr_t)threads[i]->join(threads[i]), i + THREADS); + } +} +END_TEST + Suite *threading_suite_create() { Suite *s; @@ -177,5 +200,9 @@ Suite *threading_suite_create() tcase_add_test(tc, test_mutex); suite_add_tcase(s, tc); + tc = tcase_create("thread joining"); + tcase_add_test(tc, test_join); + suite_add_tcase(s, tc); + return s; }