On Mon, May 23, 2022 at 03:46:13AM -0700, Tyler Retzlaff wrote: > 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..d369418 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 get set mistmatches priority get");
mistmatches -> mismatches will fix this when addressing more substantial feedback > +#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