From f156312229eab4bc6876899dc4657cc4fee1cf8c Mon Sep 17 00:00:00 2001 From: Dan Date: Thu, 25 May 2023 11:25:24 -0400 Subject: [PATCH 1/8] Fix #2353, Update README_Functionaltest.md --- docs/README_functionaltest.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/docs/README_functionaltest.md b/docs/README_functionaltest.md index dddb45484..0c9b7d5fd 100644 --- a/docs/README_functionaltest.md +++ b/docs/README_functionaltest.md @@ -29,10 +29,14 @@ cases. It also must be loaded after `cfe_assert`. To execute tests at startup, the following lines can be added to `cfe_es_startup.scr` on the designated test target: - CFE_LIB, cfe_assert, CFE_Assert_LibInit, ASSERT_LIB, 0, 0, 0x0, 0; - CFE_APP, cfe_testcase, CFE_TestMain, CFE_TEST_APP, 100, 16384, 0x0, 0; + CFE_LIB, cfe_assert, CFE_Assert_LibInit, ASSERT_LIB, 0, 0, 0x0, 0; + CFE_APP, cfe_testcase, CFE_TestMain, CFE_TEST_APP, 100, 16384, 0x0, 0; + CFE_LIB, sample_lib, SAMPLE_LIB_Init, SAMPLE_LIB, 0, 0, 0x0, 0; + CFE_APP, sample_app, SAMPLE_APP_Main, SAMPLE_APP, 50, 16384, 0x0, 0; It is important that `cfe_assert` is loaded first, as all other test applications depend on symbols provided in this library. The order of loading other test cases should not matter with respect to symbol resolution, but note that test apps may be executed in -a different order than they are listed in the startup script. +a different order than they are listed in the startup script. It is also worth noting +that sample_app is included in the startup script by default because the cFE functional +tests are dependent on it for requirements verification. From ddd01d5699fd0e6a9da5af1da20022250cb6e3eb Mon Sep 17 00:00:00 2001 From: Dan Date: Wed, 24 May 2023 15:24:45 -0400 Subject: [PATCH 2/8] Fix #2349, Format update for additional counters in summary --- modules/cfe_assert/src/cfe_assert_io.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/modules/cfe_assert/src/cfe_assert_io.c b/modules/cfe_assert/src/cfe_assert_io.c index 255c6122f..5cfe4f341 100644 --- a/modules/cfe_assert/src/cfe_assert_io.c +++ b/modules/cfe_assert/src/cfe_assert_io.c @@ -126,6 +126,10 @@ void UT_BSP_DoText(uint8 MessageType, const char *OutputMessage) void UT_BSP_EndTest(const UtAssert_TestCounter_t *TestCounters) { + + CFE_ES_WriteToSysLog("TEST COMPLETE: %u tests Segment(s) executed\n\n", + (unsigned int)TestCounters->TestSegmentCount); + /* * Only output a "summary" if there is more than one test Segment. * Otherwise it is a duplicate of the report already given. @@ -134,7 +138,4 @@ void UT_BSP_EndTest(const UtAssert_TestCounter_t *TestCounters) { UtAssert_DoTestSegmentReport("SUMMARY", TestCounters); } - - CFE_ES_WriteToSysLog("TEST COMPLETE: %u tests Segment(s) executed\n\n", - (unsigned int)TestCounters->TestSegmentCount); } From aa9da9a2325747a6960a0204c9ff1cfb65bd9f10 Mon Sep 17 00:00:00 2001 From: Dan Date: Thu, 25 May 2023 14:41:33 -0400 Subject: [PATCH 3/8] Fix #2352, make shared tbl configurable --- modules/cfe_testcase/src/cfe_test.h | 8 ++++++++ modules/cfe_testcase/src/tbl_content_access_test.c | 2 +- modules/cfe_testcase/src/tbl_information_test.c | 2 +- modules/cfe_testcase/src/tbl_registration_test.c | 2 +- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/modules/cfe_testcase/src/cfe_test.h b/modules/cfe_testcase/src/cfe_test.h index afe5325a8..1bd1c4e65 100644 --- a/modules/cfe_testcase/src/cfe_test.h +++ b/modules/cfe_testcase/src/cfe_test.h @@ -60,6 +60,14 @@ extern CFE_FT_Global_t CFE_FT_Global; */ #define CFE_ASSERT_LOG_FILE_NAME "/cf/cfe_test.log" +/** + * Name of the shared table used by CFE_TEST_APP for requirements verification + * + * This filename was made configurable such that projects can replace the + * sample app table with a project specific table for the purpose of CI/CD. + */ +#define CFE_ASSERT_SHARED_TBL_NAME "SAMPLE_APP.SampleAppTable" + void TimeInRange(CFE_TIME_SysTime_t Start, CFE_TIME_SysTime_t Time, CFE_TIME_SysTime_t Range, const char *Str); void CFE_TestMain(void); diff --git a/modules/cfe_testcase/src/tbl_content_access_test.c b/modules/cfe_testcase/src/tbl_content_access_test.c index 9492eee49..c36223616 100644 --- a/modules/cfe_testcase/src/tbl_content_access_test.c +++ b/modules/cfe_testcase/src/tbl_content_access_test.c @@ -45,7 +45,7 @@ void TestGetAddress(void) TBL_TEST_Table_t TestTable = {1, 2}; CFE_TBL_Handle_t SharedTblHandle = CFE_TBL_BAD_TABLE_HANDLE; - const char * SharedTblName = "SAMPLE_APP.SampleAppTable"; + const char * SharedTblName = CFE_ASSERT_SHARED_TBL_NAME; UtPrintf("Testing: CFE_TBL_GetAddress"); diff --git a/modules/cfe_testcase/src/tbl_information_test.c b/modules/cfe_testcase/src/tbl_information_test.c index 1a85f2bca..1d530688e 100644 --- a/modules/cfe_testcase/src/tbl_information_test.c +++ b/modules/cfe_testcase/src/tbl_information_test.c @@ -77,7 +77,7 @@ void TestGetInfo(void) void TestNotifyByMessage(void) { CFE_TBL_Handle_t SharedTblHandle = CFE_TBL_BAD_TABLE_HANDLE; - const char * SharedTblName = "SAMPLE_APP.SampleAppTable"; + const char * SharedTblName = CFE_ASSERT_SHARED_TBL_NAME; CFE_SB_MsgId_t TestMsgId = CFE_SB_ValueToMsgId(CFE_TEST_CMD_MID); CFE_MSG_FcnCode_t TestCmdCode = 0; uint32 TestParameter = 0; diff --git a/modules/cfe_testcase/src/tbl_registration_test.c b/modules/cfe_testcase/src/tbl_registration_test.c index d14c6c897..c4f237d4e 100644 --- a/modules/cfe_testcase/src/tbl_registration_test.c +++ b/modules/cfe_testcase/src/tbl_registration_test.c @@ -190,7 +190,7 @@ void TestTableShare(void) { UtPrintf("Testing: CFE_TBL_Share"); CFE_TBL_Handle_t SharedTblHandle; - const char * SharedTblName = "SAMPLE_APP.SampleAppTable"; + const char * SharedTblName = CFE_ASSERT_SHARED_TBL_NAME; const char * BadTblName = "SampleAppTable"; UtAssert_INT32_EQ(CFE_TBL_Share(NULL, SharedTblName), CFE_TBL_BAD_ARGUMENT); From ba01055f1d9edd83f6e467807e04e7204fc5a878 Mon Sep 17 00:00:00 2001 From: Chris Knight Date: Fri, 26 May 2023 09:45:13 -0700 Subject: [PATCH 4/8] Fix #2316, CFE_TIME_Print() calls strftime() --- modules/core_api/fsw/inc/cfe_time.h | 8 +- .../core_api/ut-stubs/src/cfe_time_handlers.c | 3 +- .../core_api/ut-stubs/src/cfe_time_stubs.c | 6 +- .../config/default_cfe_time_interface_cfg.h | 15 +- modules/time/fsw/src/cfe_time_api.c | 158 +++--------------- modules/time/ut-coverage/time_UT.c | 26 ++- 6 files changed, 49 insertions(+), 167 deletions(-) diff --git a/modules/core_api/fsw/inc/cfe_time.h b/modules/core_api/fsw/inc/cfe_time.h index ac2cf98ce..d4dfbc943 100644 --- a/modules/core_api/fsw/inc/cfe_time.h +++ b/modules/core_api/fsw/inc/cfe_time.h @@ -691,6 +691,8 @@ CFE_Status_t CFE_TIME_UnregisterSynchCallback(CFE_TIME_SynchCallbackPtr_t Callba ** - \c \\0 = trailing null ** ** \par Assumptions, External Events, and Notes: +** - This function calls strftime to format the output. Systems without this +** C99-standard function will have to write their own implementation. ** - The value of the time argument is simply added to the configuration ** definitions for the ground epoch and converted into a fixed length ** string in the buffer provided by the caller. @@ -706,8 +708,12 @@ CFE_Status_t CFE_TIME_UnregisterSynchCallback(CFE_TIME_SynchCallbackPtr_t Callba ** ** \param[in] TimeToPrint The time to print into the character array. ** +** \return Execution status, see \ref CFEReturnCodes +** \retval #CFE_SUCCESS \copybrief CFE_SUCCESS +** \retval #CFE_TIME_BAD_ARGUMENT \copybrief CFE_TIME_BAD_ARGUMENT +** ******************************************************************************/ -void CFE_TIME_Print(char *PrintBuffer, CFE_TIME_SysTime_t TimeToPrint); +CFE_Status_t CFE_TIME_Print(char *PrintBuffer, CFE_TIME_SysTime_t TimeToPrint); /*****************************************************************************/ /** diff --git a/modules/core_api/ut-stubs/src/cfe_time_handlers.c b/modules/core_api/ut-stubs/src/cfe_time_handlers.c index ec9f8b5e9..c277bb721 100644 --- a/modules/core_api/ut-stubs/src/cfe_time_handlers.c +++ b/modules/core_api/ut-stubs/src/cfe_time_handlers.c @@ -45,13 +45,14 @@ * Default handler for CFE_TIME_Print coverage stub function * *------------------------------------------------------------*/ -void UT_DefaultHandler_CFE_TIME_Print(void *UserObj, UT_EntryKey_t FuncKey, const UT_StubContext_t *Context) +CFE_Status_t UT_DefaultHandler_CFE_TIME_Print(void *UserObj, UT_EntryKey_t FuncKey, const UT_StubContext_t *Context) { char * PrintBuffer = UT_Hook_GetArgValueByName(Context, "PrintBuffer", char *); CFE_TIME_SysTime_t TimeToPrint = UT_Hook_GetArgValueByName(Context, "TimeToPrint", CFE_TIME_SysTime_t); snprintf(PrintBuffer, CFE_TIME_PRINTED_STRING_SIZE, "UT %u.%u -", (unsigned int)TimeToPrint.Seconds, (unsigned int)TimeToPrint.Subseconds); + return CFE_SUCCESS; } /*------------------------------------------------------------ diff --git a/modules/core_api/ut-stubs/src/cfe_time_stubs.c b/modules/core_api/ut-stubs/src/cfe_time_stubs.c index 999f06008..ca99702db 100644 --- a/modules/core_api/ut-stubs/src/cfe_time_stubs.c +++ b/modules/core_api/ut-stubs/src/cfe_time_stubs.c @@ -305,12 +305,16 @@ uint32 CFE_TIME_Micro2SubSecs(uint32 MicroSeconds) * Generated stub function for CFE_TIME_Print() * ---------------------------------------------------- */ -void CFE_TIME_Print(char *PrintBuffer, CFE_TIME_SysTime_t TimeToPrint) +CFE_Status_t CFE_TIME_Print(char *PrintBuffer, CFE_TIME_SysTime_t TimeToPrint) { + UT_GenStub_SetupReturnBuffer(CFE_TIME_Print, CFE_Status_t); + UT_GenStub_AddParam(CFE_TIME_Print, char *, PrintBuffer); UT_GenStub_AddParam(CFE_TIME_Print, CFE_TIME_SysTime_t, TimeToPrint); UT_GenStub_Execute(CFE_TIME_Print, Basic, UT_DefaultHandler_CFE_TIME_Print); + + return UT_GenStub_GetReturnValue(CFE_TIME_Print, CFE_Status_t); } /* diff --git a/modules/time/config/default_cfe_time_interface_cfg.h b/modules/time/config/default_cfe_time_interface_cfg.h index 3e614f154..151d38c09 100644 --- a/modules/time/config/default_cfe_time_interface_cfg.h +++ b/modules/time/config/default_cfe_time_interface_cfg.h @@ -151,23 +151,14 @@ ** \cfetimecfg Default EPOCH Values ** ** \par Description: -** Default ground time epoch values +** Default ground time epoch values (from Jan. 1, 1970 00:00:00) ** Note: these values are used only by the CFE_TIME_Print() API function ** ** \par Limits -** Year - must be within 136 years -** Day - Jan 1 = 1, Feb 1 = 32, etc. -** Hour - 0 to 23 -** Minute - 0 to 59 -** Second - 0 to 59 ** Micros - 0 to 999999 */ -#define CFE_MISSION_TIME_EPOCH_YEAR 1980 -#define CFE_MISSION_TIME_EPOCH_DAY 1 -#define CFE_MISSION_TIME_EPOCH_HOUR 0 -#define CFE_MISSION_TIME_EPOCH_MINUTE 0 -#define CFE_MISSION_TIME_EPOCH_SECOND 0 -#define CFE_MISSION_TIME_EPOCH_MICROS 0 +#define CFE_MISSION_TIME_EPOCH_SECONDS 315532800 /* Jan. 1, 1980 00:00:00 */ +#define CFE_MISSION_TIME_EPOCH_MICROS 0 /** ** \cfetimecfg Time File System Factor diff --git a/modules/time/fsw/src/cfe_time_api.c b/modules/time/fsw/src/cfe_time_api.c index 1cd7e99d7..f8e8b35b6 100644 --- a/modules/time/fsw/src/cfe_time_api.c +++ b/modules/time/fsw/src/cfe_time_api.c @@ -34,6 +34,8 @@ #include +#include + /*---------------------------------------------------------------- * * Implemented per public API @@ -563,150 +565,30 @@ uint32 CFE_TIME_Micro2SubSecs(uint32 MicroSeconds) * See description in header file for argument/return detail * *-----------------------------------------------------------------*/ -void CFE_TIME_Print(char *PrintBuffer, CFE_TIME_SysTime_t TimeToPrint) +CFE_Status_t CFE_TIME_Print(char *PrintBuffer, CFE_TIME_SysTime_t TimeToPrint) { - uint32 NumberOfYears; - uint32 NumberOfDays; - uint32 NumberOfHours; - uint32 NumberOfMinutes; - uint32 NumberOfSeconds; - uint32 NumberOfMicros; - uint32 DaysInThisYear; - - bool StillCountingYears = true; + size_t FmtLen = 0; + uint32 Micros = (CFE_TIME_Sub2MicroSecs(TimeToPrint.Subseconds) + CFE_MISSION_TIME_EPOCH_MICROS) / 10; + struct tm tm; if (PrintBuffer == NULL) { - CFE_ES_WriteToSysLog("%s: Failed invalid arguments\n", __func__); - return; - } - - /* - ** Convert the cFE time (offset from epoch) into calendar time... - */ - NumberOfMicros = CFE_TIME_Sub2MicroSecs(TimeToPrint.Subseconds) + CFE_MISSION_TIME_EPOCH_MICROS; - - NumberOfMinutes = (NumberOfMicros / 60000000) + (TimeToPrint.Seconds / 60) + CFE_MISSION_TIME_EPOCH_MINUTE; - NumberOfMicros = NumberOfMicros % 60000000; - - NumberOfSeconds = (NumberOfMicros / 1000000) + (TimeToPrint.Seconds % 60) + CFE_MISSION_TIME_EPOCH_SECOND; - NumberOfMicros = NumberOfMicros % 1000000; - /* - ** Adding the epoch "seconds" after computing the minutes avoids - ** overflow problems when the input time value (seconds) is - ** at, or near, 0xFFFFFFFF... - */ - while (NumberOfSeconds >= 60) - { - NumberOfMinutes++; - NumberOfSeconds -= 60; - } - - /* - ** Compute the years/days/hours/minutes... - */ - NumberOfHours = (NumberOfMinutes / 60) + CFE_MISSION_TIME_EPOCH_HOUR; - NumberOfMinutes = (NumberOfMinutes % 60); - - /* - ** Unlike hours and minutes, epoch days are counted as Jan 1 = day 1... - */ - NumberOfDays = (NumberOfHours / 24) + (CFE_MISSION_TIME_EPOCH_DAY - 1); - NumberOfHours = (NumberOfHours % 24); - - NumberOfYears = CFE_MISSION_TIME_EPOCH_YEAR; - - /* - ** Convert total number of days into years and remainder days... - */ - while (StillCountingYears) - { - /* - ** Set number of days in this year (leap year?)... - */ - DaysInThisYear = 365; - - if ((NumberOfYears % 4) == 0) - { - if ((NumberOfYears % 100) != 0) - { - DaysInThisYear = 366; - } - else if ((NumberOfYears % 400) == 0) - { - DaysInThisYear = 366; - } - else - { - /* Do Nothing. Non-leap year. */ - } - } - - /* - ** When we have less than a years worth of days, we're done... - */ - if (NumberOfDays < DaysInThisYear) - { - StillCountingYears = false; - } - else - { - /* - ** Add a year and remove the number of days in that year... - */ - NumberOfYears++; - NumberOfDays -= DaysInThisYear; - } + return CFE_TIME_BAD_ARGUMENT; } - /* - ** Unlike hours and minutes, days are displayed as Jan 1 = day 1... - */ - NumberOfDays++; - - /* - ** After computing microseconds, convert to 5 digits from 6 digits... - */ - NumberOfMicros = NumberOfMicros / 10; - - /* - ** Build formatted output string (yyyy-ddd-hh:mm:ss.xxxxx)... - */ - *PrintBuffer++ = '0' + (char)(NumberOfYears / 1000); - NumberOfYears = NumberOfYears % 1000; - *PrintBuffer++ = '0' + (char)(NumberOfYears / 100); - NumberOfYears = NumberOfYears % 100; - *PrintBuffer++ = '0' + (char)(NumberOfYears / 10); - *PrintBuffer++ = '0' + (char)(NumberOfYears % 10); - *PrintBuffer++ = '-'; - - *PrintBuffer++ = '0' + (char)(NumberOfDays / 100); - NumberOfDays = NumberOfDays % 100; - *PrintBuffer++ = '0' + (char)(NumberOfDays / 10); - *PrintBuffer++ = '0' + (char)(NumberOfDays % 10); - *PrintBuffer++ = '-'; - - *PrintBuffer++ = '0' + (char)(NumberOfHours / 10); - *PrintBuffer++ = '0' + (char)(NumberOfHours % 10); - *PrintBuffer++ = ':'; - - *PrintBuffer++ = '0' + (char)(NumberOfMinutes / 10); - *PrintBuffer++ = '0' + (char)(NumberOfMinutes % 10); - *PrintBuffer++ = ':'; - - *PrintBuffer++ = '0' + (char)(NumberOfSeconds / 10); - *PrintBuffer++ = '0' + (char)(NumberOfSeconds % 10); - *PrintBuffer++ = '.'; - - *PrintBuffer++ = '0' + (char)(NumberOfMicros / 10000); - NumberOfMicros = NumberOfMicros % 10000; - *PrintBuffer++ = '0' + (char)(NumberOfMicros / 1000); - NumberOfMicros = NumberOfMicros % 1000; - *PrintBuffer++ = '0' + (char)(NumberOfMicros / 100); - NumberOfMicros = NumberOfMicros % 100; - *PrintBuffer++ = '0' + (char)(NumberOfMicros / 10); - *PrintBuffer++ = '0' + (char)(NumberOfMicros % 10); - *PrintBuffer++ = '\0'; + time_t sec = TimeToPrint.Seconds + CFE_MISSION_TIME_EPOCH_SECONDS; // epoch is Jan 1, 1980 + gmtime_r(&sec, &tm); + FmtLen = strftime(PrintBuffer, CFE_TIME_PRINTED_STRING_SIZE - 6, "%Y-%j-%H:%M:%S", &tm); + PrintBuffer += FmtLen; + *(PrintBuffer++) = '.'; + + *(PrintBuffer++) = '0' + (char)((Micros % 100000) / 10000); + *(PrintBuffer++) = '0' + (char)((Micros % 10000) / 1000); + *(PrintBuffer++) = '0' + (char)((Micros % 1000) / 100); + *(PrintBuffer++) = '0' + (char)((Micros % 100) / 10); + *(PrintBuffer++) = '0' + (char)(Micros % 10); + *PrintBuffer = '\0'; + return CFE_SUCCESS; } /*---------------------------------------------------------------- diff --git a/modules/time/ut-coverage/time_UT.c b/modules/time/ut-coverage/time_UT.c index 3a4961ac1..20161b427 100644 --- a/modules/time/ut-coverage/time_UT.c +++ b/modules/time/ut-coverage/time_UT.c @@ -821,7 +821,7 @@ void Test_ConvertTime(void) ** ** NOTE: Test results depend on the epoch values in cfe_mission_cfg.h (the ** tests below assume an epoch of 1980-001-00:00:00.00000). Full -** coverage is possible only when CFE_MISSION_TIME_EPOCH_SECOND > 0 +** coverage is possible only when CFE_MISSION_TIME_EPOCH_SECONDS > 0 */ void Test_Print(void) { @@ -834,8 +834,7 @@ void Test_Print(void) UtPrintf("Begin Test Print"); - if (CFE_MISSION_TIME_EPOCH_YEAR != 1980 || CFE_MISSION_TIME_EPOCH_DAY != 1 || CFE_MISSION_TIME_EPOCH_HOUR != 0 || - CFE_MISSION_TIME_EPOCH_MINUTE != 0 || CFE_MISSION_TIME_EPOCH_SECOND != 0 || CFE_MISSION_TIME_EPOCH_MICROS != 0) + if (CFE_MISSION_TIME_EPOCH_SECONDS != 0 || CFE_MISSION_TIME_EPOCH_MICROS != 0) { UtPrintf("Custom epoch time requires manual inspection for CFE_TIME_Print"); usingDefaultEpoch = false; @@ -843,11 +842,10 @@ void Test_Print(void) /* Test print with null print buffer argument */ UT_InitData(); - UtAssert_VOIDCALL(CFE_TIME_Print(NULL, time)); - CFE_UtAssert_SYSLOG(TIME_SYSLOG_MSGS[6]); + UtAssert_INT32_EQ(CFE_TIME_Print(NULL, time), CFE_TIME_BAD_ARGUMENT); /* Test with zero time value */ - CFE_TIME_Print(timeBuf, time); + CFE_UtAssert_SUCCESS(CFE_TIME_Print(timeBuf, time)); if (usingDefaultEpoch) { strcpy(expectedBuf, "1980-001-00:00:00.00000"); @@ -860,12 +858,12 @@ void Test_Print(void) } /* Test with a time value that causes seconds >= 60 when - * CFE_MISSION_TIME_EPOCH_SECOND > 0 + * CFE_MISSION_TIME_EPOCH_SECONDS > 0 */ time.Subseconds = 0; time.Seconds = 59; - CFE_TIME_Print(timeBuf, time); + CFE_UtAssert_SUCCESS(CFE_TIME_Print(timeBuf, time)); if (usingDefaultEpoch) { strcpy(expectedBuf, "1980-001-00:00:59.00000"); @@ -881,7 +879,7 @@ void Test_Print(void) time.Subseconds = 215000; time.Seconds = 1041472984; - CFE_TIME_Print(timeBuf, time); + CFE_UtAssert_SUCCESS(CFE_TIME_Print(timeBuf, time)); if (usingDefaultEpoch) { strcpy(expectedBuf, "2013-001-02:03:04.00005"); @@ -893,14 +891,14 @@ void Test_Print(void) (unsigned int)time.Seconds, (unsigned int)time.Subseconds, timeBuf); } - /* Test with maximum seconds and subseconds values */ - time.Subseconds = 0xffffffff; - time.Seconds = 0xffffffff; + /* Test with sufficiently-large seconds and subseconds values */ + time.Subseconds = 0x7fffffff; + time.Seconds = 0x7fffffff; - CFE_TIME_Print(timeBuf, time); + CFE_UtAssert_SUCCESS(CFE_TIME_Print(timeBuf, time)); if (usingDefaultEpoch) { - strcpy(expectedBuf, "2116-038-06:28:15.99999"); + strcpy(expectedBuf, "2048-019-03:14:07.49999"); UtAssert_STRINGBUF_EQ(timeBuf, sizeof(timeBuf), expectedBuf, sizeof(expectedBuf)); } else From 317840d9bf59c03323b8d0a6cbb8a0858986d3cf Mon Sep 17 00:00:00 2001 From: Justin Figueroa Date: Tue, 30 May 2023 18:29:30 -0400 Subject: [PATCH 5/8] Fix #2360, Adds utassert message descriptions to README_Functionaltest.md --- docs/README_functionaltest.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/docs/README_functionaltest.md b/docs/README_functionaltest.md index dddb45484..83c82fbe2 100644 --- a/docs/README_functionaltest.md +++ b/docs/README_functionaltest.md @@ -36,3 +36,21 @@ It is important that `cfe_assert` is loaded first, as all other test application symbols provided in this library. The order of loading other test cases should not matter with respect to symbol resolution, but note that test apps may be executed in a different order than they are listed in the startup script. + +## Utassert messages + +Below are various types of messages that can be generated by a test. + + "ABORT", /**< Test sequence abort (major failure, cannot continue) */ + "FAIL", /**< Test case failure status messages */ + "TSF", /**< Test Setup Failure (TSF) status messages */ + "TTF", /**< Test Teardown Failure (TTF) status messages */ + "MIR", /**< Manual Inspection Required (MIR) status messages */ + "WARN", /**< Test was unable to run (WARN) status messages (e.g. initial condition wrong) */ + "N/A", /**< Test Not Applicable (NA) status messages */ + "BEGIN", /**< Beginning of test status messages */ + "END", /**< End of test status messages */ + "INFO", /**< All other informational status messages */ + "PASS", /**< Test case passed (normal) status messages */ + "FLOW", /**< Other condition checks/messages that record test flow, but are not assertions */ + "DEBUG", /**< Debugging messages */ \ No newline at end of file From d455c7a900f561d18dedfb86ca30c636a1eaf216 Mon Sep 17 00:00:00 2001 From: Dan Date: Thu, 1 Jun 2023 09:32:26 -0400 Subject: [PATCH 6/8] Fix #2363, Increase slp time in funct test workflow --- .github/workflows/functional-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/functional-tests.yml b/.github/workflows/functional-tests.yml index 121c088dc..a985edef3 100644 --- a/.github/workflows/functional-tests.yml +++ b/.github/workflows/functional-tests.yml @@ -89,7 +89,7 @@ jobs: counter=$(grep -c "BEGIN" cf/cfe_test.tmp) echo "Waiting for CFE Tests" - sleep 60 + sleep 120 done ../host/cmdUtil --endian=LE --pktid=0x1806 --cmdcode=2 --half=0x0002 From e22abc6f92d29d1e698588a5ec33aee800080a61 Mon Sep 17 00:00:00 2001 From: Dan Date: Thu, 1 Jun 2023 09:50:08 -0400 Subject: [PATCH 7/8] Fix #2365, Increase CFE_PLATFORM_EVS_APP_EVENTS_PER_SEC to 15 --- modules/evs/config/default_cfe_evs_internal_cfg.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/evs/config/default_cfe_evs_internal_cfg.h b/modules/evs/config/default_cfe_evs_internal_cfg.h index 728b7d07d..d4fc64b0c 100644 --- a/modules/evs/config/default_cfe_evs_internal_cfg.h +++ b/modules/evs/config/default_cfe_evs_internal_cfg.h @@ -93,7 +93,7 @@ ** This number must be less than or equal to #CFE_PLATFORM_EVS_MAX_APP_EVENT_BURST. ** Values lower than 8 may cause functional and unit test failures. */ -#define CFE_PLATFORM_EVS_APP_EVENTS_PER_SEC 8 +#define CFE_PLATFORM_EVS_APP_EVENTS_PER_SEC 15 /** ** \cfeevscfg Default Event Log Filename From e3f52c3083dc82d1772f44059fabf02c95642dd4 Mon Sep 17 00:00:00 2001 From: Dylan Date: Thu, 1 Jun 2023 15:22:14 -0400 Subject: [PATCH 8/8] Bump to v7.0.0-rc4+dev334 --- CHANGELOG.md | 10 ++++++++++ modules/core_api/fsw/inc/cfe_version.h | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 39367249b..66f6ffee6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## Development Build: v7.0.0-rc4+dev334 +- Format update for additional counters in summary +- make shared tbl configurable +- Update README_Functionaltest.md +- Increase CFE_PLATFORM_EVS_APP_EVENTS_PER_SEC to 15 +- Increase slp time in funct test workflow +- CFE_TIME_Print() calls strftime() +- Adds utassert message descriptions to README_Functionaltest.md +- See , , , , , , and + ## Development Build: v7.0.0-rc4+dev318 - generalize update header parameter - add msg verify capability diff --git a/modules/core_api/fsw/inc/cfe_version.h b/modules/core_api/fsw/inc/cfe_version.h index da6fa34a5..3f88f13e1 100644 --- a/modules/core_api/fsw/inc/cfe_version.h +++ b/modules/core_api/fsw/inc/cfe_version.h @@ -26,7 +26,7 @@ #define CFE_VERSION_H /* Development Build Macro Definitions */ -#define CFE_BUILD_NUMBER 318 /**< @brief Development: Number of development git commits since CFE_BUILD_BASELINE */ +#define CFE_BUILD_NUMBER 334 /**< @brief Development: Number of development git commits since CFE_BUILD_BASELINE */ #define CFE_BUILD_BASELINE "v7.0.0-rc4" /**< @brief Development: Reference git tag for build number */ /* See \ref cfsversions for definitions */