mirror of
https://github.com/FreeRTOS/FreeRTOS.git
synced 2026-08-17 09:02:18 +08:00
Expand tests to account for queue use assertion (#1423)
CI Checks / git-secrets (push) Canceled after 0s
CI Checks / formatting (push) Canceled after 0s
CI Checks / spell-check (push) Canceled after 0s
CI Checks / doxygen (push) Canceled after 0s
CI Checks / verify-manifest (push) Canceled after 0s
CI Checks / memory-statistics (push) Canceled after 0s
CI Checks / proof_ci (push) Canceled after 0s
FreeRTOS Demos / WIN32 MSVC (push) Canceled after 0s
FreeRTOS Demos / WIN32 MingW (push) Canceled after 0s
FreeRTOS Demos / Posix GCC (push) Canceled after 0s
FreeRTOS Demos / GNU MSP430 Toolchain (push) Canceled after 0s
FreeRTOS Demos / GNU ARM Toolchain (push) Canceled after 0s
FreeRTOS MPU Demo / TI-Hercules RM46 and RM57 MPU Demos (push) Canceled after 0s
Build FreeRTOS+ Demos / Windows Simulator Cellular Demos (push) Canceled after 0s
Build FreeRTOS+ Demos / coreHTTP WinSim Demos (push) Canceled after 0s
Build FreeRTOS+ Demos / corePKCS11 WinSim Demos (push) Canceled after 0s
Build FreeRTOS+ Demos / core Library Windows Simulator Demos (push) Canceled after 0s
Build FreeRTOS+ Demos / AWS IoT Windows Simulator Demos (push) Canceled after 0s
Build FreeRTOS+ Demos / FreeRTOS+TCP Posix Simulator Demo (push) Canceled after 0s
Build FreeRTOS+ Demos / FreeRTOS+TCP QEMU ARM MPS2 AN385 (push) Canceled after 0s
Build FreeRTOS+ Demos / FreeRTOS+TCP Windows Simulator Demos (push) Canceled after 0s
Build FreeRTOS+ Demos / FreeRTOS+CLI Windows Simulator Demos (push) Canceled after 0s
Kernel Unit Tests / FreeRTOS/Source Submodule Revision (push) Canceled after 0s
Kernel Unit Tests / FreeRTOS-Kernel Main Branch (push) Canceled after 0s
CI Checks / git-secrets (push) Canceled after 0s
CI Checks / formatting (push) Canceled after 0s
CI Checks / spell-check (push) Canceled after 0s
CI Checks / doxygen (push) Canceled after 0s
CI Checks / verify-manifest (push) Canceled after 0s
CI Checks / memory-statistics (push) Canceled after 0s
CI Checks / proof_ci (push) Canceled after 0s
FreeRTOS Demos / WIN32 MSVC (push) Canceled after 0s
FreeRTOS Demos / WIN32 MingW (push) Canceled after 0s
FreeRTOS Demos / Posix GCC (push) Canceled after 0s
FreeRTOS Demos / GNU MSP430 Toolchain (push) Canceled after 0s
FreeRTOS Demos / GNU ARM Toolchain (push) Canceled after 0s
FreeRTOS MPU Demo / TI-Hercules RM46 and RM57 MPU Demos (push) Canceled after 0s
Build FreeRTOS+ Demos / Windows Simulator Cellular Demos (push) Canceled after 0s
Build FreeRTOS+ Demos / coreHTTP WinSim Demos (push) Canceled after 0s
Build FreeRTOS+ Demos / corePKCS11 WinSim Demos (push) Canceled after 0s
Build FreeRTOS+ Demos / core Library Windows Simulator Demos (push) Canceled after 0s
Build FreeRTOS+ Demos / AWS IoT Windows Simulator Demos (push) Canceled after 0s
Build FreeRTOS+ Demos / FreeRTOS+TCP Posix Simulator Demo (push) Canceled after 0s
Build FreeRTOS+ Demos / FreeRTOS+TCP QEMU ARM MPS2 AN385 (push) Canceled after 0s
Build FreeRTOS+ Demos / FreeRTOS+TCP Windows Simulator Demos (push) Canceled after 0s
Build FreeRTOS+ Demos / FreeRTOS+CLI Windows Simulator Demos (push) Canceled after 0s
Kernel Unit Tests / FreeRTOS/Source Submodule Revision (push) Canceled after 0s
Kernel Unit Tests / FreeRTOS-Kernel Main Branch (push) Canceled after 0s
Unit tests need to update now that the queue asserts if in use during a deletion call. Updated existing mutex test which left a queue with a user during cleanup.
This commit is contained in:
+1
-1
Submodule FreeRTOS/Source updated: fcc665325c...78069a79ea
@@ -129,3 +129,74 @@ void test_vQueueDelete_full( void )
|
||||
vQueueDelete( xQueue );
|
||||
TEST_ASSERT_EQUAL_PTR( ( void * ) xQueue, getLastFreedAddress() );
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Test vQueueDelete asserts when tasks are waiting to send and waiting to receive
|
||||
* @details Verify that vQueueDelete triggers a configASSERT when both the
|
||||
* xTasksWaitingToSend and xTasksWaitingToReceive lists are non-empty.
|
||||
* @coverage vQueueDelete
|
||||
*/
|
||||
void test_vQueueDelete_assert_tasks_waiting_to_send_and_receive( void )
|
||||
{
|
||||
QueueHandle_t xQueue = xQueueCreate( 1, sizeof( uint32_t ) );
|
||||
|
||||
/* Add a fake task to the WaitingToSend list */
|
||||
td_task_addFakeTaskWaitingToSendToQueue( xQueue );
|
||||
|
||||
/* Expect the assert to fire due to non-empty WaitingToSend list */
|
||||
EXPECT_ASSERT_BREAK( vQueueDelete( xQueue ) );
|
||||
|
||||
/* Clean up the fake task from the list */
|
||||
td_task_removeFakeTaskFromList();
|
||||
|
||||
/* Now add a fake task to WaitingToReceive and verify that assert fires too */
|
||||
td_task_addFakeTaskWaitingToReceiveFromQueue( xQueue );
|
||||
|
||||
EXPECT_ASSERT_BREAK( vQueueDelete( xQueue ) );
|
||||
|
||||
/* Clean up and delete */
|
||||
td_task_removeFakeTaskFromList();
|
||||
vQueueDelete( xQueue );
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Test vQueueDelete asserts when tasks are waiting to send only
|
||||
* @details Verify that vQueueDelete triggers a configASSERT when the
|
||||
* xTasksWaitingToSend list is non-empty.
|
||||
* @coverage vQueueDelete
|
||||
*/
|
||||
void test_vQueueDelete_assert_tasks_waiting_to_send( void )
|
||||
{
|
||||
QueueHandle_t xQueue = xQueueCreate( 1, sizeof( uint32_t ) );
|
||||
|
||||
/* Add a fake task to the WaitingToSend list */
|
||||
td_task_addFakeTaskWaitingToSendToQueue( xQueue );
|
||||
|
||||
/* Expect the assert to fire due to non-empty WaitingToSend list */
|
||||
EXPECT_ASSERT_BREAK( vQueueDelete( xQueue ) );
|
||||
|
||||
/* Clean up and delete */
|
||||
td_task_removeFakeTaskFromList();
|
||||
vQueueDelete( xQueue );
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Test vQueueDelete asserts when tasks are waiting to receive only
|
||||
* @details Verify that vQueueDelete triggers a configASSERT when the
|
||||
* xTasksWaitingToReceive list is non-empty.
|
||||
* @coverage vQueueDelete
|
||||
*/
|
||||
void test_vQueueDelete_assert_tasks_waiting_to_receive( void )
|
||||
{
|
||||
QueueHandle_t xQueue = xQueueCreate( 1, sizeof( uint32_t ) );
|
||||
|
||||
/* Add a fake task to the WaitingToReceive list */
|
||||
td_task_addFakeTaskWaitingToReceiveFromQueue( xQueue );
|
||||
|
||||
/* Expect the assert to fire due to non-empty WaitingToReceive list */
|
||||
EXPECT_ASSERT_BREAK( vQueueDelete( xQueue ) );
|
||||
|
||||
/* Clean up and delete */
|
||||
td_task_removeFakeTaskFromList();
|
||||
vQueueDelete( xQueue );
|
||||
}
|
||||
|
||||
@@ -326,6 +326,13 @@ void td_task_addFakeTaskWaitingToSendToQueue( QueueHandle_t xQueue );
|
||||
*/
|
||||
void td_task_addFakeTaskWaitingToReceiveFromQueue( QueueHandle_t xQueue );
|
||||
|
||||
/**
|
||||
* @brief Remove the fake task from whatever waiting list it is currently in.
|
||||
* @details This should be called before deleting a queue that has a fake task
|
||||
* in one of its waiting lists (xTasksWaitingToSend or xTasksWaitingToReceive).
|
||||
*/
|
||||
void td_task_removeFakeTaskFromList( void );
|
||||
|
||||
/**
|
||||
* @brief Test double for xTaskCheckForTimeOut
|
||||
*/
|
||||
|
||||
@@ -540,6 +540,9 @@ void test_macro_xSemaphoreTake_blocking_mutex_inherit_timeout_high_prio_waiting(
|
||||
|
||||
TEST_ASSERT_EQUAL( TICKS_TO_WAIT + 1, td_task_getCount_YieldFromTaskResumeAll() );
|
||||
|
||||
/* Remove the fake task from the waiting list before deleting the semaphore */
|
||||
td_task_removeFakeTaskFromList();
|
||||
|
||||
vSemaphoreDelete( xSemaphore );
|
||||
}
|
||||
|
||||
|
||||
@@ -290,6 +290,14 @@ void td_task_addFakeTaskWaitingToReceiveFromQueue( QueueHandle_t xQueue )
|
||||
vListInsert( pxTasksWaitingToReceive, &fakeTaskListItem );
|
||||
}
|
||||
|
||||
void td_task_removeFakeTaskFromList( void )
|
||||
{
|
||||
if( listLIST_ITEM_CONTAINER( &fakeTaskListItem ) != NULL )
|
||||
{
|
||||
uxListRemove( &fakeTaskListItem );
|
||||
}
|
||||
}
|
||||
|
||||
TickType_t td_task_getFakeTaskPriority( void )
|
||||
{
|
||||
return( configMAX_PRIORITIES - fakeTaskListItem.xItemValue );
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@ license: "MIT"
|
||||
|
||||
dependencies:
|
||||
- name: "FreeRTOS-Kernel"
|
||||
version: "fcc6653"
|
||||
version: "78069a7"
|
||||
repository:
|
||||
type: "git"
|
||||
url: "https://github.com/FreeRTOS/FreeRTOS-Kernel.git"
|
||||
|
||||
Reference in New Issue
Block a user