tests: queue modifying and adding test case

1.Add a new testcase to verify multiple queues can be defined
2.Add some code comments to describe function performance.

Signed-off-by: Ningx Zhao <ningx.zhao@intel.com>
This commit is contained in:
Ningx Zhao 2020-05-12 17:09:48 +08:00 committed by Carles Cufí
parent 8a6b02b5bf
commit d7d2cd5086
4 changed files with 94 additions and 21 deletions

View File

@ -8,25 +8,16 @@
#include "test_queue.h"
#ifndef CONFIG_USERSPACE
static void test_queue_supv_to_user(void)
{
ztest_test_skip();
}
#define dummy_test(_name) \
static void _name(void) \
{ \
ztest_test_skip(); \
}
static void test_auto_free(void)
{
ztest_test_skip();
}
static void test_queue_alloc_prepend_user(void)
{
ztest_test_skip();
}
static void test_queue_alloc_append_user(void)
{
ztest_test_skip();
}
dummy_test(test_queue_supv_to_user);
dummy_test(test_queue_alloc_prepend_user);
dummy_test(test_queue_alloc_append_user);
dummy_test(test_auto_free);
#endif
#ifdef CONFIG_64BIT
@ -53,6 +44,7 @@ void test_main(void)
ztest_1cpu_unit_test(test_queue_get_fail),
ztest_1cpu_unit_test(test_queue_loop),
ztest_unit_test(test_queue_alloc),
ztest_1cpu_unit_test(test_queue_poll_race));
ztest_1cpu_unit_test(test_queue_poll_race),
ztest_unit_test(test_multiple_queues));
ztest_run_test_suite(queue_api);
}

View File

@ -24,6 +24,7 @@ extern void test_queue_alloc_append_user(void);
#endif
extern void test_queue_alloc(void);
extern void test_queue_poll_race(void);
extern void test_multiple_queues(void);
extern struct k_mem_pool test_pool;

View File

@ -136,8 +136,18 @@ static void tqueue_isr_thread(struct k_queue *pqueue)
/*test cases*/
/**
* @brief Verify data passing between threads using queue
*
* @details Static define and Dynamic define queues,
* Then initialize them.
* Create a new thread to wait for reading data.
* Current thread will append item into queue.
* Verify if rx_data is equal insert-data address.
* Verify queue can be define at compile time.
*
* @ingroup kernel_queue_tests
*
* @see k_queue_init(), k_queue_insert(), k_queue_append()
* K_THREAD_STACK_DEFINE()
*/
void test_queue_thread2thread(void)
{
@ -151,7 +161,16 @@ void test_queue_thread2thread(void)
/**
* @brief Verify data passing between thread and ISR
*
* @details Create a new ISR to insert data
* And current thread is used for getting data
* Verify if the rx_data is equal insert-data address.
* If the received data address is the same as
* the created array, prove that the queue data structures
* are stored within the provided data items.
*
* @ingroup kernel_queue_tests
*
* @see k_queue_init(), k_queue_insert(), k_queue_append()
*/
void test_queue_thread2isr(void)
@ -166,9 +185,15 @@ void test_queue_thread2isr(void)
/**
* @brief Verify data passing between ISR and thread
*
* @details Create a new ISR and ready for getting data
* And current thread is used for inserting data
* Verify if the rx_data is equal insert-data address.
*
* @ingroup kernel_queue_tests
*
* @see k_queue_init(), k_queue_insert(), k_queue_get(),
* k_queue_append(), k_queue_remove()
* @ingroup kernel_queue_tests
*/
void test_queue_isr2thread(void)
{
@ -347,3 +372,29 @@ void test_queue_poll_race(void)
k_thread_abort(&tdata);
k_thread_abort(&tdata1);
}
/**
* @brief Verify that multiple queues can be defined
* simultaneously
*
* @details define multiple queues to verify
* they can work.
*
* @ingroup kernel_queue_tests
*
* @see k_queue_init()
*/
#define QUEUE_NUM 10
void test_multiple_queues(void)
{
/*define multiple queues*/
struct k_queue queues[QUEUE_NUM];
for (int i = 0; i < QUEUE_NUM; i++) {
k_queue_init(&queues[i]);
/*Indicating that they are working*/
tqueue_append(&queues[i]);
tqueue_get(&queues[i]);
}
}

View File

@ -58,10 +58,15 @@ void child_thread_get(void *p1, void *p2, void *p3)
}
/**
* @brief Verify queue elements from a user thread
* @brief Verify queue elements and cancel wait from a user thread
*
* @details The test adds elements to queue and then
* verified by the child user thread.
* Get data from a empty queue,and use K_FORVER to wait for available
* And to cancel wait from current thread.
*
* @ingroup kernel_queue_tests
*
* @see k_queue_append(), k_queue_alloc_append(),
* k_queue_init(), k_queue_cancel_wait()
*/
@ -109,6 +114,18 @@ void test_queue_supv_to_user(void)
k_sem_take(sem, K_FOREVER);
}
/**
* @brief verify allocate and feature "Last In, First Out"
*
* @details Create a new queue
* And allocated memory for the queue
* Initialize and insert data item in sequence.
* Verify the feather "Last in,First out"
*
* @ingroup kernel_queue_tests
*
* @see k_queue_alloc_prepend()
*/
void test_queue_alloc_prepend_user(void)
{
struct k_queue *q;
@ -131,6 +148,18 @@ void test_queue_alloc_prepend_user(void)
}
}
/**
* @brief verify feature of queue "First In, First Out"
*
* @details Create a new queue
* And allocated memory for the queue
* Initialize and insert data item in sequence.
* Verify the feather "First in,First out"
*
* @ingroup kernel_queue_tests
*
* @see k_queue_init(), k_queue_alloc_append()
*/
void test_queue_alloc_append_user(void)
{
struct k_queue *q;