test: object_tracing: account for pre-existing threads

Count existing threads before the test has started to deal with
platforms that have some existing services.

Remove hard-coded accounting for IPM, this is now counted before the
test starts.

Fixes #21756

Signed-off-by: Anas Nashif <anas.nashif@intel.com>
This commit is contained in:
Anas Nashif 2020-02-18 19:04:00 -05:00
commit 28298fa06a

View file

@ -15,7 +15,7 @@ extern void test_obj_tracing(void);
#define TOTAL_TEST_NUMBER 2 #define TOTAL_TEST_NUMBER 2
#define ZTEST_THREADS_CREATED 1 #define ZTEST_THREADS_CREATED 1
#define TOTAL_THREADS (N_PHILOSOPHERS + 3 + IPM_THREAD + ZTEST_THREADS_CREATED) #define TOTAL_THREADS (N_PHILOSOPHERS + ZTEST_THREADS_CREATED)
#define TOTAL_OBJECTS (N_PHILOSOPHERS) #define TOTAL_OBJECTS (N_PHILOSOPHERS)
#define OBJ_LIST_NAME k_sem #define OBJ_LIST_NAME k_sem
@ -27,19 +27,13 @@ extern void test_obj_tracing(void);
#define RANDDELAY(x) k_sleep(10 * (x) + 1) #define RANDDELAY(x) k_sleep(10 * (x) + 1)
/* 1 IPM console thread if enabled */ static int initial_count;
#if defined(CONFIG_IPM_CONSOLE_RECEIVER) && defined(CONFIG_PRINTK)
#define IPM_THREAD 1
#else
#define IPM_THREAD 0
#endif /* CONFIG_IPM_CONSOLE_RECEIVER && CONFIG_PRINTK*/
/* Must account for: /* Must account for:
* N Philosopher threads * N Philosopher threads
* 1 Object monitor thread * 1 Object monitor thread
* 1 System idle thread * 1 System idle thread
* 1 System workqueue thread * 1 System workqueue thread
* 1 IPM console thread
*/ */
void *force_sys_work_q_in = (void *)&k_sys_work_q; void *force_sys_work_q_in = (void *)&k_sys_work_q;
@ -60,7 +54,7 @@ K_SEM_DEFINE(f3, -5, 1);
* @} * @}
*/ */
static inline int test_thread_monitor(void) static inline int thread_monitor(void)
{ {
int obj_counter = 0; int obj_counter = 0;
struct k_thread *thread_list = NULL; struct k_thread *thread_list = NULL;
@ -114,9 +108,9 @@ static void object_monitor(void)
} }
TC_PRINT("SEMAPHORE QUANTITY: %d\n", obj_counter); TC_PRINT("SEMAPHORE QUANTITY: %d\n", obj_counter);
thread_counter += test_thread_monitor(); thread_counter += thread_monitor();
zassert_true(((thread_counter == TOTAL_THREADS) && zassert_true(((thread_counter == (TOTAL_THREADS + initial_count)) &&
(obj_counter == TOTAL_OBJECTS)), "test failed"); (obj_counter == TOTAL_OBJECTS)), "test failed");
} }
@ -186,6 +180,9 @@ void test_philosophers_tracing(void)
void test_main(void) void test_main(void)
{ {
initial_count = thread_monitor();
ztest_test_suite(obj_tracing, ztest_test_suite(obj_tracing,
ztest_unit_test(test_philosophers_tracing), ztest_unit_test(test_philosophers_tracing),
ztest_unit_test(test_obj_tracing)); ztest_unit_test(test_obj_tracing));