Add unit tests to exercise and demonstrate rte_thread_{get,set}_priority().
Signed-off-by: Tyler Retzlaff <roret...@linux.microsoft.com> --- app/test/test_threads.c | 52 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/app/test/test_threads.c b/app/test/test_threads.c index e1a2ea5..dbc20e6 100644 --- a/app/test/test_threads.c +++ b/app/test/test_threads.c @@ -24,6 +24,56 @@ } static int +test_thread_priority(void) +{ + pthread_t id; + rte_thread_t thread_id; + enum rte_thread_priority priority; + + thread_id_ready = 0; + RTE_TEST_ASSERT(pthread_create(&id, NULL, thread_main, &thread_id) == 0, + "Failed to create thread"); + + while (__atomic_load_n(&thread_id_ready, __ATOMIC_ACQUIRE) == 0) + ; + + priority = RTE_THREAD_PRIORITY_NORMAL; + RTE_TEST_ASSERT(rte_thread_set_priority(thread_id, priority) == 0, + "Failed to set thread priority"); + RTE_TEST_ASSERT(rte_thread_get_priority(thread_id, &priority) == 0, + "Failed to get thread priority"); + RTE_TEST_ASSERT(priority == RTE_THREAD_PRIORITY_NORMAL, + "Priority set mismatches priority get"); + + priority = RTE_THREAD_PRIORITY_REALTIME_CRITICAL; +#ifndef RTE_EXEC_ENV_WINDOWS + RTE_TEST_ASSERT(rte_thread_set_priority(thread_id, priority) == -ENOTSUP, + "Priority set to critical should fail"); + RTE_TEST_ASSERT(rte_thread_get_priority(thread_id, &priority) == 0, + "Failed to get thread priority"); + RTE_TEST_ASSERT(priority == RTE_THREAD_PRIORITY_NORMAL, + "Failed set to critical should have retained normal"); +#else + RTE_TEST_ASSERT(rte_thread_set_priority(thread_id, priority) == 0, + "Priority set to critical should succeed"); + RTE_TEST_ASSERT(rte_thread_get_priority(thread_id, &priority) == 0, + "Failed to get thread priority"); + RTE_TEST_ASSERT(priority == RTE_THREAD_PRIORITY_REALTIME_CRITICAL, + "Priority set mismatches priority get"); +#endif + + priority = RTE_THREAD_PRIORITY_NORMAL; + RTE_TEST_ASSERT(rte_thread_set_priority(thread_id, priority) == 0, + "Failed to set thread priority"); + RTE_TEST_ASSERT(rte_thread_get_priority(thread_id, &priority) == 0, + "Failed to get thread priority"); + RTE_TEST_ASSERT(priority == RTE_THREAD_PRIORITY_NORMAL, + "Priority set mismatches priority get"); + + return 0; +} + +static int test_thread_affinity(void) { pthread_t id; @@ -31,6 +81,7 @@ rte_cpuset_t cpuset0; rte_cpuset_t cpuset1; + thread_id_ready = 0; RTE_TEST_ASSERT(pthread_create(&id, NULL, thread_main, &thread_id) == 0, "Failed to create thread"); @@ -68,6 +119,7 @@ .teardown = NULL, .unit_test_cases = { TEST_CASE(test_thread_affinity), + TEST_CASE(test_thread_priority), TEST_CASES_END() } }; -- 1.8.3.1