Add unit test for FreeRTOS SMP (#1047)

* Add unit test for FreeRTOS SMP to verify SMP scheduler logic in tasks.c which is enclosed by `configNUMBER_OF_CORES > 1`.

---------

Co-authored-by: Joshua Zarr <joshzarr@amazon.com>
Co-authored-by: Anubhav Rawal <rawalexe@amazon.com>
Co-authored-by: Alfred Gedeon <alfred2g@hotmail.com>
Co-authored-by: Adam Scislowicz <adamds@amazon.com>
Co-authored-by: jannusi <121577776+jannusi@users.noreply.github.com>
Co-authored-by: Krishna Vamsi Tallapaneni <124737189+vamsitas@users.noreply.github.com>
Co-authored-by: Kody Stribrny <kstribrn@amazon.com>
Co-authored-by: kar-rahul-aws <118818625+kar-rahul-aws@users.noreply.github.com>
This commit is contained in:
chinglee-iot 2023-10-31 08:34:59 +08:00 committed by GitHub
parent 1114e8f39b
commit e7d39763db
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
64 changed files with 25145 additions and 71 deletions

View file

@ -74,6 +74,18 @@ int suiteTearDown( int numFailures )
/* ========================== Helper functions =========================== */
/**
* @brief Callback for vTaskYieldTaskWithinAPI used by tests for yield counts
*
* NumCalls is checked in the test assert.
*/
static void vTaskYieldWithinAPI_Callback( int NumCalls )
{
( void ) NumCalls;
portYIELD_WITHIN_API();
}
/* ============================= Test Cases ============================== */
/**
@ -287,6 +299,8 @@ void test_xQueuePeek_noop_waiting_higher_priority( void )
/* peek from the queue */
uint32_t checkVal = INVALID_UINT32;
vTaskYieldWithinAPI_Stub( vTaskYieldWithinAPI_Callback );
TEST_ASSERT_EQUAL( 1, uxQueueMessagesWaiting( xQueue ) );
TEST_ASSERT_EQUAL( pdTRUE, xQueuePeek( xQueue, &checkVal, 0 ) );
@ -325,6 +339,7 @@ void test_xQueuePeek_xQueuePeek_waiting_higher_priority( void )
td_task_addFakeTaskWaitingToReceiveFromQueue( xQueue );
vFakePortYieldWithinAPI_Stub( &vPortYieldWithinAPI_xQueuePeek_Stub );
vTaskYieldWithinAPI_Stub( vTaskYieldWithinAPI_Callback );
xStubExpectedReturnValue = pdTRUE;
@ -369,6 +384,7 @@ void test_xQueuePeek_xQueueReceive_waiting_higher_priority( void )
td_task_addFakeTaskWaitingToReceiveFromQueue( xQueue );
vFakePortYieldWithinAPI_Stub( &vPortYieldWithinAPI_xQueueReceive_Stub );
vTaskYieldWithinAPI_Stub( vTaskYieldWithinAPI_Callback );
xStubExpectedReturnValue = pdTRUE;
@ -805,6 +821,8 @@ void test_xQueueReceive_noop_waiting_higher_priority( void )
uint32_t checkVal = INVALID_UINT32;
vTaskYieldWithinAPI_Stub( vTaskYieldWithinAPI_Callback );
TEST_ASSERT_EQUAL( 1, uxQueueMessagesWaiting( xQueue ) );
/* receive from the queue */