From 7340a72dee2e7e3e0386b22b2e88696721080431 Mon Sep 17 00:00:00 2001 From: Gaurav Aggarwal Date: Fri, 12 Nov 2021 21:21:21 +0000 Subject: [PATCH] Revert "UT: Add streambuffer test to make PR #391 pass (#690)" This reverts commit a32ab34192d45ac4ac63114a5f6466aa9c6c0e49. --- FreeRTOS/Test/CMock/message_buffer/Makefile | 46 +++- .../message_buffer/message_buffer/Makefile | 45 ---- .../message_buffer_utest.c | 0 .../size_mismatch/FreeRTOSConfig.h | 142 ----------- .../message_buffer/size_mismatch/Makefile | 45 ---- .../size_mismatch/message_buffer_utest.c | 223 ------------------ 6 files changed, 37 insertions(+), 464 deletions(-) delete mode 100644 FreeRTOS/Test/CMock/message_buffer/message_buffer/Makefile rename FreeRTOS/Test/CMock/message_buffer/{message_buffer => }/message_buffer_utest.c (100%) delete mode 100644 FreeRTOS/Test/CMock/message_buffer/size_mismatch/FreeRTOSConfig.h delete mode 100644 FreeRTOS/Test/CMock/message_buffer/size_mismatch/Makefile delete mode 100644 FreeRTOS/Test/CMock/message_buffer/size_mismatch/message_buffer_utest.c diff --git a/FreeRTOS/Test/CMock/message_buffer/Makefile b/FreeRTOS/Test/CMock/message_buffer/Makefile index ff0c83ee3c..a8dd6cccd0 100644 --- a/FreeRTOS/Test/CMock/message_buffer/Makefile +++ b/FreeRTOS/Test/CMock/message_buffer/Makefile @@ -1,15 +1,43 @@ -# Indent with spaces +# indent with spaces .RECIPEPREFIX := $(.RECIPEPREFIX) $(.RECIPEPREFIX) + # Do not move this line below the include -MAKEFILE_ABSPATH := $(abspath $(lastword $(MAKEFILE_LIST))) +MAKEFILE_ABSPATH := $(abspath $(lastword $(MAKEFILE_LIST))) include ../makefile.in -# SUITES lists the suites contained in subdirectories of this directory -SUITES += size_mismatch -SUITES += message_buffer +# PROJECT_SRC lists the .c files under test +PROJECT_SRC := stream_buffer.c + +# PROJECT_DEPS_SRC list the .c file that are dependencies of PROJECT_SRC files +# Files in PROJECT_DEPS_SRC are excluded from coverage measurements +PROJECT_DEPS_SRC := + +# PROJECT_HEADER_DEPS: headers that should be excluded from coverage measurements. +PROJECT_HEADER_DEPS := FreeRTOS.h + +# SUITE_UT_SRC: .c files that contain test cases (must end in _utest.c) +SUITE_UT_SRC := message_buffer_utest.c + +# SUITE_SUPPORT_SRC: .c files used for testing that do not contain test cases. +# Paths are relative to PROJECT_DIR +SUITE_SUPPORT_SRC := + +# List the headers used by PROJECT_SRC that you would like to mock +MOCK_FILES_FP := $(KERNEL_DIR)/include/task.h +MOCK_FILES_FP += $(UT_ROOT_DIR)/config/fake_assert.h +MOCK_FILES_FP += $(UT_ROOT_DIR)/config/fake_port.h + +# List any addiitonal flags needed by the preprocessor +CPPFLAGS += -DportUSING_MPU_WRAPPERS=0 + +# List any addiitonal flags needed by the compiler +CFLAGS += + +# Try not to edit beyond this line unless necessary. + +# Project is determined based on path: $(UT_ROOT_DIR)/$(PROJECT) +PROJECT := $(lastword $(subst /, ,$(dir $(abspath $(MAKEFILE_ABSPATH))))) -# PROJECT and SUITE variables are determined based on path like so: -# $(UT_ROOT_DIR)/$(PROJECT)/$(SUITE) -PROJECT := $(lastword $(subst /, ,$(dir $(abspath $(MAKEFILE_ABSPATH))))) +export -include ../subdir.mk +include ../testdir.mk diff --git a/FreeRTOS/Test/CMock/message_buffer/message_buffer/Makefile b/FreeRTOS/Test/CMock/message_buffer/message_buffer/Makefile deleted file mode 100644 index 44f03aa94c..0000000000 --- a/FreeRTOS/Test/CMock/message_buffer/message_buffer/Makefile +++ /dev/null @@ -1,45 +0,0 @@ -# Indent with spaces -.RECIPEPREFIX := $(.RECIPEPREFIX) $(.RECIPEPREFIX) - -# Do not move this line below the include -MAKEFILE_ABSPATH := $(abspath $(lastword $(MAKEFILE_LIST))) -include ../../makefile.in - -# PROJECT_SRC lists the .c files under test -PROJECT_SRC += stream_buffer.c - -# PROJECT_DEPS_SRC list the .c file that are dependencies of PROJECT_SRC files -# Files in PROJECT_DEPS_SRC are excluded from coverage measurements -PROJECT_DEPS_SRC += list.c - -# PROJECT_HEADER_DEPS: headers that should be excluded from coverage measurements. -PROJECT_HEADER_DEPS += FreeRTOS.h - -# SUITE_UT_SRC: .c files that contain test cases (must end in _utest.c) -SUITE_UT_SRC += message_buffer_utest.c - -# SUITE_SUPPORT_SRC: .c files used for testing that do not contain test cases. -# Paths are relative to PROJECT_DIR -SUITE_SUPPORT_SRC += - -# List the headers used by PROJECT_SRC that you would like to mock -MOCK_FILES_FP += $(KERNEL_DIR)/include/task.h -MOCK_FILES_FP += $(UT_ROOT_DIR)/config/fake_assert.h -MOCK_FILES_FP += $(UT_ROOT_DIR)/config/fake_port.h - -# List any addiitonal flags needed by the preprocessor -CPPFLAGS += -DportUSING_MPU_WRAPPERS=0 - -# List any addiitonal flags needed by the compiler -CFLAGS += - -# Try not to edit beyond this line unless necessary. - -# Project / Suite are determined based on path: $(UT_ROOT_DIR)/$(PROJECT)/$(SUITE) -PROJECT := $(lastword $(subst /, ,$(dir $(abspath $(MAKEFILE_ABSPATH)/../)))) -SUITE := $(lastword $(subst /, ,$(dir $(MAKEFILE_ABSPATH)))) - -# Make variables available to included makefile -export - -include ../../testdir.mk diff --git a/FreeRTOS/Test/CMock/message_buffer/message_buffer/message_buffer_utest.c b/FreeRTOS/Test/CMock/message_buffer/message_buffer_utest.c similarity index 100% rename from FreeRTOS/Test/CMock/message_buffer/message_buffer/message_buffer_utest.c rename to FreeRTOS/Test/CMock/message_buffer/message_buffer_utest.c diff --git a/FreeRTOS/Test/CMock/message_buffer/size_mismatch/FreeRTOSConfig.h b/FreeRTOS/Test/CMock/message_buffer/size_mismatch/FreeRTOSConfig.h deleted file mode 100644 index 15f74679ef..0000000000 --- a/FreeRTOS/Test/CMock/message_buffer/size_mismatch/FreeRTOSConfig.h +++ /dev/null @@ -1,142 +0,0 @@ -/* - * FreeRTOS V202107.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * https://www.FreeRTOS.org - * https://github.com/FreeRTOS - * - */ - - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -#include "fake_assert.h" - -/*----------------------------------------------------------- -* Application specific definitions. -* -* These definitions should be adjusted for your particular hardware and -* application requirements. -* -* THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE -* FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. See -* http://www.freertos.org/a00110.html -*----------------------------------------------------------*/ - -#define configUSE_PREEMPTION 1 -#define configUSE_PORT_OPTIMISED_TASK_SELECTION 1 -#define configUSE_IDLE_HOOK 1 -#define configUSE_TICK_HOOK 1 -#define configUSE_DAEMON_TASK_STARTUP_HOOK 1 -#define configTICK_RATE_HZ ( 1000 ) /* In this non-real time simulated environment the tick frequency has to be at least a multiple of the Win32 tick frequency, and therefore very slow. */ -#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 70 ) /* In this simulated case, the stack only has to hold one small structure as the real stack is part of the win32 thread. */ -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 52 * 1024 ) ) -#define configMAX_TASK_NAME_LEN ( 12 ) -#define configUSE_TRACE_FACILITY 0 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 1 -#define configUSE_MUTEXES 1 -#define configCHECK_FOR_STACK_OVERFLOW 0 -#define configUSE_RECURSIVE_MUTEXES 1 -#define configQUEUE_REGISTRY_SIZE 0 -#define configUSE_MALLOC_FAILED_HOOK 1 -#define configUSE_APPLICATION_TASK_TAG 1 -#define configUSE_COUNTING_SEMAPHORES 1 -#define configUSE_ALTERNATIVE_API 0 -#define configUSE_QUEUE_SETS 0 -#define configUSE_TASK_NOTIFICATIONS 1 -#define configTASK_NOTIFICATION_ARRAY_ENTRIES 5 -#define configSUPPORT_STATIC_ALLOCATION 1 -#define configSUPPORT_DYNAMIC_ALLOCATION 1 -#define configINITIAL_TICK_COUNT ( ( TickType_t ) 0 ) /* For test. */ -#define configSTREAM_BUFFER_TRIGGER_LEVEL_TEST_MARGIN 1 /* As there are a lot of tasks running. */ -#define configMESSAGE_BUFFER_LENGTH_TYPE uint8_t - -/* Software timer related configuration options. */ -#define configUSE_TIMERS 1 -#define configTIMER_TASK_PRIORITY ( configMAX_PRIORITIES - 1 ) -#define configTIMER_QUEUE_LENGTH 20 -#define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE * 2 ) - -#define configMAX_PRIORITIES ( 7 ) - -/* Run time stats gathering configuration options. */ -unsigned long ulGetRunTimeCounterValue( void ); /* Prototype of function that returns run time counter. */ -void vConfigureTimerForRunTimeStats( void ); /* Prototype of function that initialises the run time counter. */ -#define configGENERATE_RUN_TIME_STATS 1 -#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() vConfigureTimerForRunTimeStats() -#define portGET_RUN_TIME_COUNTER_VALUE() ulGetRunTimeCounterValue() - -/* Co-routine related configuration options. */ -#define configUSE_CO_ROUTINES 0 -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) - -/* This demo makes use of one or more example stats formatting functions. These - * format the raw data provided by the uxTaskGetSystemState() function in to human - * readable ASCII form. See the notes in the implementation of vTaskList() within - * FreeRTOS/Source/tasks.c for limitations. */ -#define configUSE_STATS_FORMATTING_FUNCTIONS 1 - -/* Set the following definitions to 1 to include the API function, or zero - * to exclude the API function. In most cases the linker will remove unused - * functions anyway. */ -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 0 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 -#define INCLUDE_uxTaskGetStackHighWaterMark 1 -#define INCLUDE_xTaskGetSchedulerState 1 -#define INCLUDE_xTimerGetTimerDaemonTaskHandle 1 -#define INCLUDE_xTaskGetIdleTaskHandle 1 -#define INCLUDE_xTaskGetHandle 1 -#define INCLUDE_eTaskGetState 1 -#define INCLUDE_xSemaphoreGetMutexHolder 1 -#define INCLUDE_xTimerPendFunctionCall 1 -#define INCLUDE_xTaskAbortDelay 1 - -/* It is a good idea to define configASSERT() while developing. configASSERT() - * uses the same semantics as the standard C assert() macro. */ -#define configASSERT( x ) \ - do \ - { \ - if( x ) \ - { \ - vFakeAssert( true, __FILE__, __LINE__ ); \ - } \ - else \ - { \ - vFakeAssert( false, __FILE__, __LINE__ ); \ - } \ - } while( 0 ) - - -#define mtCOVERAGE_TEST_MARKER() __asm volatile ( "NOP" ) - -#define configINCLUDE_MESSAGE_BUFFER_AMP_DEMO 0 -#if ( configINCLUDE_MESSAGE_BUFFER_AMP_DEMO == 1 ) - extern void vGenerateCoreBInterrupt( void * xUpdatedMessageBuffer ); - #define sbSEND_COMPLETED( pxStreamBuffer ) vGenerateCoreBInterrupt( pxStreamBuffer ) -#endif /* configINCLUDE_MESSAGE_BUFFER_AMP_DEMO */ - -#endif /* FREERTOS_CONFIG_H */ diff --git a/FreeRTOS/Test/CMock/message_buffer/size_mismatch/Makefile b/FreeRTOS/Test/CMock/message_buffer/size_mismatch/Makefile deleted file mode 100644 index 289f8f975e..0000000000 --- a/FreeRTOS/Test/CMock/message_buffer/size_mismatch/Makefile +++ /dev/null @@ -1,45 +0,0 @@ -# Indent with spaces -.RECIPEPREFIX := $(.RECIPEPREFIX) $(.RECIPEPREFIX) - -# Do not move this line below the include -MAKEFILE_ABSPATH := $(abspath $(lastword $(MAKEFILE_LIST))) -include ../../makefile.in - -# PROJECT_SRC lists the .c files under test -PROJECT_SRC += stream_buffer.c - -# PROJECT_DEPS_SRC list the .c file that are dependencies of PROJECT_SRC files -# Files in PROJECT_DEPS_SRC are excluded from coverage measurements -PROJECT_DEPS_SRC += list.c - -# PROJECT_HEADER_DEPS: headers that should be excluded from coverage measurements. -PROJECT_HEADER_DEPS += FreeRTOS.h - -# SUITE_UT_SRC: .c files that contain test cases (must end in _utest.c) -SUITE_UT_SRC += message_buffer_utest.c - -# SUITE_SUPPORT_SRC: .c files used for testing that do not contain test cases. -# Paths are relative to PROJECT_DIR -SUITE_SUPPORT_SRC += - -# List the headers used by PROJECT_SRC that you would like to mock -MOCK_FILES_FP += $(KERNEL_DIR)/include/task.h -MOCK_FILES_FP += $(UT_ROOT_DIR)/config/fake_assert.h -MOCK_FILES_FP += $(UT_ROOT_DIR)/config/fake_port.h - -# List any addiitonal flags needed by the preprocessor -CPPFLAGS += -DportUSING_MPU_WRAPPERS=0 -I . - -# List any addiitonal flags needed by the compiler -CFLAGS += - -# Try not to edit beyond this line unless necessary. - -# Project / Suite are determined based on path: $(UT_ROOT_DIR)/$(PROJECT)/$(SUITE) -PROJECT := $(lastword $(subst /, ,$(dir $(abspath $(MAKEFILE_ABSPATH)/../)))) -SUITE := $(lastword $(subst /, ,$(dir $(MAKEFILE_ABSPATH)))) - -# Make variables available to included makefile -export - -include ../../testdir.mk diff --git a/FreeRTOS/Test/CMock/message_buffer/size_mismatch/message_buffer_utest.c b/FreeRTOS/Test/CMock/message_buffer/size_mismatch/message_buffer_utest.c deleted file mode 100644 index 7e7386df86..0000000000 --- a/FreeRTOS/Test/CMock/message_buffer/size_mismatch/message_buffer_utest.c +++ /dev/null @@ -1,223 +0,0 @@ -/* - * FreeRTOS V202107.00 - * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * https://www.FreeRTOS.org - * https://github.com/FreeRTOS - * - */ -/*! @file message_buffer_utest.c */ - -/* C runtime includes. */ -#include -#include - -/* Message Buffer includes */ -#include "FreeRTOS.h" -#include "FreeRTOSConfig.h" -#include "message_buffer.h" - -/* Test includes. */ -#include "unity.h" -#include "unity_memory.h" -#include "CException.h" - -/* Mock includes. */ -#include "mock_task.h" -#include "mock_fake_assert.h" -#include "mock_fake_port.h" - -/** - * @brief CException code for when a configASSERT should be intercepted. - */ -#define configASSERT_E 0xAA101 - -/** - * @brief Expect a configASSERT from the function called. - * Break out of the called function when this occurs. - * @details Use this macro when the call passed in as a parameter is expected - * to cause invalid memory access. - */ -#define EXPECT_ASSERT_BREAK( call ) \ - do \ - { \ - shouldAbortOnAssertion = true; \ - CEXCEPTION_T e = CEXCEPTION_NONE; \ - Try \ - { \ - call; \ - TEST_FAIL(); \ - } \ - Catch( e ) \ - { \ - TEST_ASSERT_EQUAL( configASSERT_E, e ); \ - } \ - } while( 0 ) - -/* ============================ GLOBAL VARIABLES =========================== */ - -/** - * @brief Global counter for the number of assertions in code. - */ -static int assertionFailed = 0; - -/** - * @brief Global counter to keep track of how many times a sender task was woken up by a task receiving from the stream buffer. - */ -static int senderTaskWoken = 0; - -/** - * @brief Global counter to keep track of how many times a receiver task was woken up by a task sending to the buffer. - */ -static int receiverTaskWoken = 0; - -/** - * @brief Dummy sender task handle to which the stream buffer receive APIs will send notification. - */ -/*static TaskHandle_t senderTask = ( TaskHandle_t ) ( 0xAABBCCDD ); */ - -/** - * @brief Dummy receiver task handle to which the stream buffer send APIs will send notifications. - */ -/*static TaskHandle_t receiverTask = ( TaskHandle_t ) ( 0xABCDEEFF ); */ - -/** - * @brief Global message buffer handle used for tests. - */ -static MessageBufferHandle_t xMessageBuffer; - -/** - * @brief Flag which denotes if test need to abort on assertion. - */ -static BaseType_t shouldAbortOnAssertion; - -/* ========================== CALLBACK FUNCTIONS =========================== */ - -void * pvPortMalloc( size_t xSize ) -{ - return unity_malloc( xSize ); -} -void vPortFree( void * pv ) -{ - return unity_free( pv ); -} - -static void vFakeAssertStub( bool x, - char * file, - int line, - int cmock_num_calls ) -{ - if( !x ) - { - assertionFailed++; - - if( shouldAbortOnAssertion == pdTRUE ) - { - Throw( configASSERT_E ); - } - } -} - -/******************************************************************************* - * Unity fixtures - ******************************************************************************/ -void setUp( void ) -{ - assertionFailed = 0; - xMessageBuffer = NULL; - senderTaskWoken = 0; - receiverTaskWoken = 0; - shouldAbortOnAssertion = pdTRUE; - - mock_task_Init(); - mock_fake_assert_Init(); - mock_fake_port_Init(); - - vFakePortEnterCriticalSection_Ignore(); - vFakePortExitCriticalSection_Ignore(); - ulFakePortSetInterruptMaskFromISR_IgnoreAndReturn( 0U ); - vFakePortClearInterruptMaskFromISR_Ignore(); - vFakeAssert_StubWithCallback( vFakeAssertStub ); - /* Track calls to malloc / free */ - UnityMalloc_StartTest(); -} - -/*! called before each test case */ -void tearDown( void ) -{ - TEST_ASSERT_EQUAL_MESSAGE( 0, assertionFailed, "Assertion check failed in code." ); - UnityMalloc_EndTest(); - - mock_task_Verify(); - mock_task_Destroy(); - - mock_fake_assert_Verify(); - mock_fake_assert_Destroy(); - - mock_fake_port_Verify(); - mock_fake_port_Destroy(); -} - -/*! called at the beginning of the whole suite */ -void suiteSetUp() -{ -} - -/*! called at the end of the whole suite */ -int suiteTearDown( int numFailures ) -{ - return numFailures; -} - - -static void validate_and_clear_assertions( void ) -{ - TEST_ASSERT_EQUAL( 1, assertionFailed ); - assertionFailed = 0; -} - -/* ============================== Test Cases ============================== */ - - -/** - * @brief assert if xDataLengthBytes does not fit in - * configMESSAGE_BUFFER_LENGTH_TYPE. - * - */ -void test_xMessageBufferSend_size_mismatch( void ) -{ - uint8_t message[ UINT8_MAX + 5 + 1 ] = { 0 }; - - vTaskSetTimeOutState_Ignore(); - vTaskSuspendAll_Ignore(); - xTaskResumeAll_IgnoreAndReturn( pdTRUE ); - - xMessageBuffer = xMessageBufferCreate( UINT8_MAX + 5 ); - /* Create a message buffer of sample size. */ - TEST_ASSERT_NOT_NULL( xMessageBuffer ); - - EXPECT_ASSERT_BREAK( ( void ) xMessageBufferSend( xMessageBuffer, - message, - UINT8_MAX + 5, - 0 ) ); - vStreamBufferDelete( xMessageBuffer ); - - validate_and_clear_assertions(); -}