Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cFE Integration candidate: 2021-08-03 #1759

Merged
merged 18 commits into from
Aug 6, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
9e16d16
Fix #1690, Add Time Conversion Functional Test
Jul 25, 2021
941642d
Fix #1730, Explain FS Header offset & add offset functional tests.
zanzaben Jul 29, 2021
a5a9556
Fix #1725 Update UTs to use UtAssert_MIR
pepepr08 Jul 29, 2021
fac4f4a
Fix #1730, Use offsetof as comparison for lseek.
zanzaben Jul 30, 2021
3de494b
Fix #1741, Remove SB get last message sender info requirement
skliper Jul 30, 2021
cf271e1
Fix #1648, Add Functional Test for EVS Send Event API
zanzaben Aug 2, 2021
b1c54e0
Fix #1751, Add null pointer check
nmullane Aug 3, 2021
73c1565
Fix #1678, Add Functional Tests cFE Message ID
arielswalker Aug 2, 2021
a1a3a1c
Merge pull request #1752 from nmullane/fix1751-missing-null-pointer-c…
astrogeco Aug 4, 2021
6cf2e2f
Fix #1757, Handle fail status in GetTypeFromMsgId
zanzaben Aug 4, 2021
bd0f3dd
Merge pull request #1731 from zanzaben/Fix1730_explain_fs_offset
astrogeco Aug 4, 2021
a434d6c
Merge pull request #1758 from zanzaben/fix1757_handle_fail_codes_GetT…
astrogeco Aug 4, 2021
6647347
Merge pull request #1748 from zanzaben/fix1648_EVS_Send_Func_Test
astrogeco Aug 4, 2021
64f68ea
Merge pull request #1742 from skliper/fix1741-rm_get_last_sender_req
astrogeco Aug 4, 2021
e0f0f7a
Merge pull request #1732 from pepepr08/fix1725-use-mir-macro
astrogeco Aug 4, 2021
3011100
Merge pull request #1736 from ArielSAdamsNASA/fix-1678-functional-tes…
astrogeco Aug 4, 2021
47e591a
Merge pull request #1707 from pavll/fix-1690-uts-for-time-conversion-api
astrogeco Aug 4, 2021
36ae395
IC:2021-08-03, Bump to v6.8.0-rc1+dev810
astrogeco Aug 6, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,18 @@ The detailed cFE user's guide can be viewed at <https://github.com/nasa/cFS/blob

## Version History

### Development Build: v6.8.0-rc1+dev810

- Add null pointer check to table GetAddresses and ReleaseAddresses
- Explain FS Header offset & add offset functional tests.
- Handle fail status in GetTypeFromMsgId
- Add Functional Test for EVS Send Event API
- Remove SB get last message sender info requirement
- Update UTs to use UtAssert_MIR
- Add Functional Tests cFE Message ID
- Add Time Conversion Functional Test
- See <https://github.com/nasa/cFE/pull/1759> and <https://github.com/nasa/cFS/pull/328>

### Development Build: v6.8.0-rc1+dev789

- Correct return code check
Expand Down
1 change: 0 additions & 1 deletion docs/cFE_FunctionalRequirements.csv
Original file line number Diff line number Diff line change
Expand Up @@ -350,7 +350,6 @@ SB: Receive Message No Timeout,cSB4306,"Upon receipt of a Request to receive a S
SB: Receive Message With Timeout,cSB4307,"Upon receipt of a Request to receive a SB Message from a Pipe with a pending timeout, the cFE shall suspend execution of the Application until a SB Message is present on the Pipe or the timeout has expired.","A receive Request with a suspension timeout provides a blocking method of retrieving SB messages. This is useful for data driven Applications and has been used on all heritage missions with a SB. The timeout is useful for fault recovery for Applications that always expect data to arrive or to allow periodic processing for Applications that are not purely data driven. If a SB Message is queued on the Pipe then the SB Message will be provided to the Application and the Application’s execution will not be suspended. Tasks that process telemetry packets often receive many types of packets from different sources. There should be a mechanism that allows a task to wait for many different types of messages simultaneously. Heritage implementations of SB do this by directing the messages into one queue (or several queues, to implement priority levels).
"
SB: Receive Message Infinite Timeout,cSB4308,"Upon receipt of a Request to receive a SB Message from a Pipe with an infinite timeout, the cFE shall suspend execution of the Application until a SB Message is present on the Pipe.",This mode of receiving has been the most commonly used mode on the heritage SB.
SB: Last Message Sender Info,cSB4309,"Upon receipt of a Request, the cFE shall provide sender information for the last message received on an Application's Pipe.","Heritage SB did a 'valid senders check' before delivering a packet to a pipe. Since the cFE supports a dynamic environment and the sender of a packet is somewhat unknown, the cFE must provide a means for the application to do the 'valid sender check'."
SB: Get Message ID,cSB4311,"Upon receipt of a Request, the cFE shall provide the message ID of the requested message.",Message management utility.
SB: Set Message ID,cSB4312,"Upon receipt of a Request, the cFE shall set the received message with the received message ID.",Message management utility.
SB: Get Message String,cSB4313,"Upon receipt of a Request, the cFE shall provide the requested string from the requested message.",Message management utility.
Expand Down
3 changes: 3 additions & 0 deletions modules/cfe_testcase/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,14 @@ add_cfe_app(cfe_testcase
src/es_cds_test.c
src/es_misc_test.c
src/es_mempool_test.c
src/evs_send_test.c
src/fs_header_test.c
src/fs_util_test.c
src/message_id_test.c
src/sb_pipe_mang_test.c
src/time_arithmetic_test.c
src/time_current_test.c
src/time_conversion_test.c
)

# register the dependency on cfe_assert
Expand Down
3 changes: 3 additions & 0 deletions modules/cfe_testcase/src/cfe_test.c
Original file line number Diff line number Diff line change
Expand Up @@ -56,11 +56,14 @@ void CFE_TestMain(void)
ESMemPoolTestSetup();
ESMiscTestSetup();
ESTaskTestSetup();
EVSSendTestSetup();
FSHeaderTestSetup();
FSUtilTestSetup();
MessageIdTestSetup();
SBPipeMangSetup();
TimeArithmeticTestSetup();
TimeCurrentTestSetup();
TimeConversionTestSetup();

/*
* Execute the tests
Expand Down
5 changes: 5 additions & 0 deletions modules/cfe_testcase/src/cfe_test.h
Original file line number Diff line number Diff line change
Expand Up @@ -77,16 +77,21 @@ typedef struct
/* Log calls to void functions */
#define cFE_FTAssert_VOIDCALL(func) (func, UtAssert(true, #func, __FILE__, __LINE__))

bool TimeInRange(CFE_TIME_SysTime_t Time, CFE_TIME_SysTime_t Target, OS_time_t difference);

void CFE_TestMain(void);
void ESCDSTestSetup(void);
void ESInfoTestSetup(void);
void ESMemPoolTestSetup(void);
void ESMiscTestSetup(void);
void ESTaskTestSetup(void);
void EVSSendTestSetup(void);
void FSHeaderTestSetup(void);
void FSUtilTestSetup(void);
void MessageIdTestSetup(void);
void SBPipeMangSetup(void);
void TimeArithmeticTestSetup(void);
void TimeCurrentTestSetup(void);
void TimeConversionTestSetup(void);

#endif /* CFE_TEST_H */
3 changes: 1 addition & 2 deletions modules/cfe_testcase/src/es_misc_test.c
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,7 @@ void TestWriteToSysLog(void)
CFE_ES_WriteToSysLog(NULL);
CFE_ES_WriteToSysLog("%s", TestString);

UtAssertEx(false, UTASSERT_CASETYPE_MIR, __FILE__, __LINE__, "%s",
"MIR (Manual Inspection Required) for CFE_ES_WriteToSysLog");
UtAssert_MIR("MIR (Manual Inspection Required) for CFE_ES_WriteToSysLog");
}

void ESMiscTestSetup(void)
Expand Down
74 changes: 74 additions & 0 deletions modules/cfe_testcase/src/evs_send_test.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
/*************************************************************************
**
** GSC-18128-1, "Core Flight Executive Version 6.7"
**
** Copyright (c) 2006-2019 United States Government as represented by
** the Administrator of the National Aeronautics and Space Administration.
** All Rights Reserved.
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
** http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
**
** File: evs_send_test.c
**
** Purpose:
** Functional test of basic EVS Send Event APIs
**
** Demonstration of how to register and use the UT assert functions.
**
*************************************************************************/

/*
* Includes
*/

#include "cfe_test.h"

void TestSendEvent(void)
{
UtPrintf("Testing: CFE_EVS_SendEvent");

UtAssert_INT32_EQ(CFE_EVS_SendEvent(0, CFE_EVS_EventType_INFORMATION, "OK Send"), CFE_SUCCESS);
UtAssert_INT32_EQ(CFE_EVS_SendEvent(0, CFE_EVS_EventType_INFORMATION, NULL), CFE_EVS_INVALID_PARAMETER);
}

void TestSendEventAppID(void)
{
CFE_ES_AppId_t AppId;

UtPrintf("Testing: CFE_EVS_SendEventWithAppID");

CFE_ES_GetAppID(&AppId);

UtAssert_INT32_EQ(CFE_EVS_SendEventWithAppID(0, CFE_EVS_EventType_INFORMATION, AppId, "OK App ID"), CFE_SUCCESS);

UtAssert_INT32_EQ(CFE_EVS_SendEventWithAppID(0, CFE_EVS_EventType_INFORMATION, AppId, NULL),
CFE_EVS_INVALID_PARAMETER);
UtAssert_INT32_EQ(CFE_EVS_SendEventWithAppID(0, CFE_EVS_EventType_INFORMATION, CFE_ES_APPID_UNDEFINED, "OK"),
CFE_EVS_APP_ILLEGAL_APP_ID);
}

void TestSendTimedEvent(void)
{
CFE_TIME_SysTime_t Time = {1000, 1000};
UtPrintf("Testing: CFE_EVS_SendTimedEvent");

UtAssert_INT32_EQ(CFE_EVS_SendTimedEvent(Time, 0, CFE_EVS_EventType_INFORMATION, "OK Time"), CFE_SUCCESS);
UtAssert_INT32_EQ(CFE_EVS_SendTimedEvent(Time, 0, CFE_EVS_EventType_INFORMATION, NULL), CFE_EVS_INVALID_PARAMETER);
}

void EVSSendTestSetup(void)
{
UtTest_Add(TestSendEvent, NULL, NULL, "Test Send Event");
UtTest_Add(TestSendEventAppID, NULL, NULL, "Test Send Event with App ID");
UtTest_Add(TestSendTimedEvent, NULL, NULL, "Test Send Timed Event");
}
4 changes: 4 additions & 0 deletions modules/cfe_testcase/src/fs_header_test.c
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ void TestCreateHeader(void)

cFE_FTAssert_VOIDCALL(CFE_FS_InitHeader(&Header, TestDescription, CFE_FS_SubType_ES_ERLOG));
UtAssert_INT32_EQ(CFE_FS_WriteHeader(fd, &Header), sizeof(CFE_FS_Header_t));
UtAssert_INT32_EQ(OS_lseek(fd, 0, OS_SEEK_CUR), sizeof(CFE_FS_Header_t));

UtAssert_INT32_EQ(CFE_FS_WriteHeader(fd, NULL), CFE_FS_BAD_ARGUMENT);
cFE_FTAssert_NOT_CFE_SUCCESS(CFE_FS_WriteHeader(OS_OBJECT_ID_UNDEFINED, &Header));
Expand All @@ -80,6 +81,7 @@ void TestReadHeader(void)
cFE_FTAssert_VOIDCALL(CFE_FS_InitHeader(&Header, TestDescription, CFE_FS_SubType_ES_ERLOG));
UtAssert_INT32_EQ(CFE_FS_WriteHeader(fd, &Header), sizeof(CFE_FS_Header_t));
UtAssert_INT32_EQ(CFE_FS_ReadHeader(&ReadHeader, fd), sizeof(CFE_FS_Header_t));
UtAssert_INT32_EQ(OS_lseek(fd, 0, OS_SEEK_CUR), sizeof(CFE_FS_Header_t));

UtAssert_INT32_EQ(Header.ContentType, ReadHeader.ContentType);
UtAssert_INT32_EQ(Header.SubType, ReadHeader.SubType);
Expand All @@ -105,6 +107,8 @@ void TestTimeStamp(void)
cFE_FTAssert_VOIDCALL(CFE_FS_InitHeader(&Header, TestDescription, CFE_FS_SubType_ES_ERLOG));
UtAssert_INT32_EQ(CFE_FS_WriteHeader(fd, &Header), sizeof(CFE_FS_Header_t));
UtAssert_INT32_EQ(CFE_FS_SetTimestamp(fd, NewTimestamp), CFE_SUCCESS);
UtAssert_INT32_EQ(OS_lseek(fd, 0, OS_SEEK_CUR), (offsetof(CFE_FS_Header_t, TimeSeconds) + sizeof(NewTimestamp)));

UtAssert_INT32_EQ(CFE_FS_ReadHeader(&ReadHeader, fd), sizeof(CFE_FS_Header_t));

UtAssert_UINT32_EQ(0xFFFFFFFF, ReadHeader.TimeSeconds);
Expand Down
83 changes: 83 additions & 0 deletions modules/cfe_testcase/src/message_id_test.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
/*************************************************************************
**
** GSC-18128-1, "Core Flight Executive Version 6.7"
**
** Copyright (c) 2006-2019 United States Government as represented by
** the Administrator of the National Aeronautics and Space Administration.
** All Rights Reserved.
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
** http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
**
** File: message_id_test.c
**
** Purpose:
** Functional test of Message ID APIs
**
** Demonstration....
**
*************************************************************************/

/*
* Includes
*/

#include "cfe_test.h"

void TestMsgId(void)
{
UtPrintf("Testing: CFE_MSG_SetMsgId, CFE_MSG_GetMsgId");
CFE_MSG_Message_t msg;
CFE_SB_MsgId_t msgid;
CFE_SB_MsgId_t expectedmsgid = CFE_SB_ValueToMsgId(1);

UtAssert_INT32_EQ(CFE_MSG_SetMsgId(&msg, expectedmsgid), CFE_SUCCESS);
UtAssert_INT32_EQ(CFE_MSG_GetMsgId(&msg, &msgid), CFE_SUCCESS);
UtAssert_UINT32_EQ(msgid, expectedmsgid);

UtAssert_INT32_EQ(CFE_MSG_SetMsgId(NULL, msgid), CFE_MSG_BAD_ARGUMENT);
UtAssert_INT32_EQ(CFE_MSG_SetMsgId(&msg, CFE_SB_INVALID_MSG_ID), CFE_MSG_BAD_ARGUMENT);

UtAssert_INT32_EQ(CFE_MSG_GetMsgId(NULL, &msgid), CFE_MSG_BAD_ARGUMENT);
UtAssert_INT32_EQ(CFE_MSG_GetMsgId(&msg, NULL), CFE_MSG_BAD_ARGUMENT);
}

void TestGetTypeFromMsgId(void)
{
UtPrintf("Testing: CFE_MSG_GetTypeFromMsgId");
CFE_SB_MsgId_t msgid = CFE_SB_ValueToMsgId(0);
CFE_MSG_Type_t msgtype;
int32 status;

/*
* Response not verified because msgid 0 could be out of range based on implementation and
* the msg to type relationship is also implementation defined, black box test just calls the routine
* to confirm things don't "break" with full range values and the implementation exists.
*/

status = CFE_MSG_GetTypeFromMsgId(msgid, &msgtype);
UtAssert_True(status == CFE_SUCCESS || status == CFE_MSG_BAD_ARGUMENT, "CFE_MSG_GetTypeFromMsgId() == (%ld)",
(long)status);

memset(&msgid, 0xFF, sizeof(msgid));
status = CFE_MSG_GetTypeFromMsgId(msgid, &msgtype);
UtAssert_True(status == CFE_SUCCESS || status == CFE_MSG_BAD_ARGUMENT, "CFE_MSG_GetTypeFromMsgId() == (%ld)",
(long)status);

UtAssert_INT32_EQ(CFE_MSG_GetTypeFromMsgId(msgid, NULL), CFE_MSG_BAD_ARGUMENT);
}

void MessageIdTestSetup(void)
{
UtTest_Add(TestMsgId, NULL, NULL, "Test Set/Get Message ID");
UtTest_Add(TestGetTypeFromMsgId, NULL, NULL, "Test Get Type From Message ID");
}
Loading