Skip to content

Commit

Permalink
Merge pull request #98 from nasa/integration-candidate
Browse files Browse the repository at this point in the history
Integration Candidate: 2020-09-16
  • Loading branch information
yammajamma committed Sep 22, 2020
2 parents 9ff605e + 80e044b commit 427cae8
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 23 deletions.
7 changes: 7 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,13 @@ sample_app is an example for how to build and link an application in cFS. See al

## Version History

### Development Build: 1.2.0-rc1+dev13

- Unit test MID string format now 32bit
- Installs unit test to target directory
- Checks only format string in UT event test
- See <https://github.com/nasa/sample_app/pull/98>

### Development Build: 1.2.0-rc1+dev5

- Applies standard coding style.
Expand Down
2 changes: 1 addition & 1 deletion fsw/src/sample_app_version.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@

/* Development Build Macro Definitions */

#define SAMPLE_APP_BUILD_NUMBER 5 /*!< Development Build: Number of commits since baseline */
#define SAMPLE_APP_BUILD_NUMBER 13 /*!< Development Build: Number of commits since baseline */
#define SAMPLE_APP_BUILD_BASELINE \
"v1.2.0-rc1" /*!< Development Build: git tag that is the base for the current development */

Expand Down
4 changes: 3 additions & 1 deletion unit-test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,9 @@ foreach(SRCFILE sample_app.c)

# Add it to the set of tests to run as part of "make test"
add_test(${TESTNAME} ${TESTNAME}-testrunner)
install(TARGETS ${TESTNAME}-testrunner DESTINATION ${TGTNAME}/${UT_INSTALL_SUBDIR})
foreach(TGT ${INSTALL_TARGET_LIST})
install(TARGETS ${TESTNAME}-testrunner DESTINATION ${TGT}/${UT_INSTALL_SUBDIR})
endforeach()

endforeach()

51 changes: 30 additions & 21 deletions unit-test/coveragetest/coveragetest_sample_app.c
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ typedef struct
{
uint16 ExpectedEvent;
uint32 MatchCount;
const char *ExpectedText;
const char *ExpectedFormat;
} UT_CheckEvent_t;

/*
Expand All @@ -58,7 +58,6 @@ static int32 UT_CheckEvent_Hook(void *UserObj, int32 StubRetcode, uint32 CallCou
va_list va)
{
UT_CheckEvent_t *State = UserObj;
char TestText[CFE_MISSION_EVS_MAX_MESSAGE_LENGTH];
uint16 EventId;
const char * Spec;

Expand All @@ -71,24 +70,34 @@ static int32 UT_CheckEvent_Hook(void *UserObj, int32 StubRetcode, uint32 CallCou
EventId = UT_Hook_GetArgValueByName(Context, "EventID", uint16);
if (EventId == State->ExpectedEvent)
{
/*
* Example of how to validate the full argument set.
* If reference text was supplied, also check against this.
*
* NOTE: While this can be done, use with discretion - This isn't really
* verifying that the FSW code unit generated the correct event text,
* rather it is validating what the system snprintf() library function
* produces when passed the format string and args.
*
* __This derived string is not an actual output of the unit under test__
*/
if (State->ExpectedText != NULL)
if (State->ExpectedFormat != NULL)
{
Spec = UT_Hook_GetArgValueByName(Context, "Spec", const char *);
if (Spec != NULL)
{
vsnprintf(TestText, sizeof(TestText), Spec, va);
if (strcmp(TestText, State->ExpectedText) == 0)
/*
* Example of how to validate the full argument set.
* ------------------------------------------------
*
* If really desired one can call something like:
*
* char TestText[CFE_MISSION_EVS_MAX_MESSAGE_LENGTH];
* vsnprintf(TestText, sizeof(TestText), Spec, va);
*
* And then compare the output (TestText) to the expected fully-rendered string.
*
* NOTE: While this can be done, use with discretion - This isn't really
* verifying that the FSW code unit generated the correct event text,
* rather it is validating what the system snprintf() library function
* produces when passed the format string and args.
*
* This type of check has been demonstrated to make tests very fragile,
* because it is influenced by many factors outside the control of the
* test case.
*
* __This derived string is not an actual output of the unit under test__
*/
if (strcmp(Spec, State->ExpectedFormat) == 0)
{
++State->MatchCount;
}
Expand All @@ -108,11 +117,11 @@ static int32 UT_CheckEvent_Hook(void *UserObj, int32 StubRetcode, uint32 CallCou
* Helper function to set up for event checking
* This attaches the hook function to CFE_EVS_SendEvent
*/
static void UT_CheckEvent_Setup(UT_CheckEvent_t *Evt, uint16 ExpectedEvent, const char *ExpectedText)
static void UT_CheckEvent_Setup(UT_CheckEvent_t *Evt, uint16 ExpectedEvent, const char *ExpectedFormat)
{
memset(Evt, 0, sizeof(*Evt));
Evt->ExpectedEvent = ExpectedEvent;
Evt->ExpectedText = ExpectedText;
Evt->ExpectedFormat = ExpectedFormat;
UT_SetVaHookFunction(UT_KEY(CFE_EVS_SendEvent), UT_CheckEvent_Hook, Evt);
}

Expand Down Expand Up @@ -272,7 +281,7 @@ void Test_SAMPLE_ProcessCommandPacket(void)
UT_CheckEvent_t EventTest;

memset(&TestMsg, 0, sizeof(TestMsg));
UT_CheckEvent_Setup(&EventTest, SAMPLE_INVALID_MSGID_ERR_EID, "SAMPLE: invalid command packet,MID = 0xffff");
UT_CheckEvent_Setup(&EventTest, SAMPLE_INVALID_MSGID_ERR_EID, "SAMPLE: invalid command packet,MID = 0x%x");

/*
* The CFE_SB_GetMsgId() stub uses a data buffer to hold the
Expand Down Expand Up @@ -351,7 +360,7 @@ void Test_SAMPLE_ProcessGroundCommand(void)
SAMPLE_ProcessGroundCommand(&TestMsg.Base);

/* test an invalid CC */
UT_CheckEvent_Setup(&EventTest, SAMPLE_COMMAND_ERR_EID, "Invalid ground command code: CC = 1000");
UT_CheckEvent_Setup(&EventTest, SAMPLE_COMMAND_ERR_EID, "Invalid ground command code: CC = %d");
UT_SetDeferredRetcode(UT_KEY(CFE_SB_GetCmdCode), 1, 1000);
SAMPLE_ProcessGroundCommand(&TestMsg.Base);

Expand Down Expand Up @@ -497,7 +506,7 @@ void Test_SAMPLE_VerifyCmdLength(void)
*/
UT_SetDeferredRetcode(UT_KEY(CFE_SB_GetTotalMsgLength), 1, sizeof(TestMsg));
UT_CheckEvent_Setup(&EventTest, SAMPLE_LEN_ERR_EID,
"Invalid Msg length: ID = 0xFFFF, CC = 0, Len = 18, Expected = 8");
"Invalid Msg length: ID = 0x%X, CC = %d, Len = %d, Expected = %d");

SAMPLE_VerifyCmdLength(&TestMsg, sizeof(TestMsg));

Expand Down

0 comments on commit 427cae8

Please sign in to comment.