From 186b4148af7d41dd51858c04927b7534caa39dc5 Mon Sep 17 00:00:00 2001 From: Alex Campbell Date: Thu, 22 Apr 2021 14:25:04 -0400 Subject: [PATCH] Fix #1297, Add Header Functional tests. --- modules/cfe_testcase/CMakeLists.txt | 1 + modules/cfe_testcase/src/cfe_test.c | 1 + modules/cfe_testcase/src/cfe_test.h | 1 + modules/cfe_testcase/src/fs_header_test.c | 111 ++++++++++++++++++++++ 4 files changed, 114 insertions(+) create mode 100644 modules/cfe_testcase/src/fs_header_test.c diff --git a/modules/cfe_testcase/CMakeLists.txt b/modules/cfe_testcase/CMakeLists.txt index 64f4180cf..b04c7ab03 100644 --- a/modules/cfe_testcase/CMakeLists.txt +++ b/modules/cfe_testcase/CMakeLists.txt @@ -3,6 +3,7 @@ add_cfe_app(cfe_testcase src/cfe_test.c src/es_info_test.c + src/fs_header_test.c ) # register the dependency on cfe_assert diff --git a/modules/cfe_testcase/src/cfe_test.c b/modules/cfe_testcase/src/cfe_test.c index f4015320c..0d4956ed1 100644 --- a/modules/cfe_testcase/src/cfe_test.c +++ b/modules/cfe_testcase/src/cfe_test.c @@ -51,6 +51,7 @@ void CFE_TestMain(void) * Register test cases in UtAssert */ ESInfoTestSetup(); + FSHeaderTestSetup(); /* * Execute the tests diff --git a/modules/cfe_testcase/src/cfe_test.h b/modules/cfe_testcase/src/cfe_test.h index 87223e978..606cc4450 100644 --- a/modules/cfe_testcase/src/cfe_test.h +++ b/modules/cfe_testcase/src/cfe_test.h @@ -54,5 +54,6 @@ void CFE_TestMain(void); void ESInfoTestSetup(void); +void FSHeaderTestSetup(void); #endif /* CFE_TEST_H */ diff --git a/modules/cfe_testcase/src/fs_header_test.c b/modules/cfe_testcase/src/fs_header_test.c new file mode 100644 index 000000000..72404440b --- /dev/null +++ b/modules/cfe_testcase/src/fs_header_test.c @@ -0,0 +1,111 @@ +/************************************************************************* +** +** 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: es_info_test.c +** +** Purpose: +** Functional test of basic FS Header APIs +** +** Demonstration of how to register and use the UT assert functions. +** +*************************************************************************/ + +/* + * Includes + */ + +#include "cfe_test.h" + +#define OS_TEST_HEADER_FILENAME "/drive0/header_test.txt" +char *fsAddrPtr = NULL; + +static osal_id_t setup_file(void) +{ + osal_id_t id; + OS_mkfs(fsAddrPtr, "/ramdev1", "RAM", 512, 20); + OS_mount("/ramdev1", "/drive0"); + UtAssert_INT32_EQ(OS_OpenCreate(&id, OS_TEST_HEADER_FILENAME, OS_FILE_FLAG_CREATE, OS_READ_WRITE), OS_SUCCESS); + return id; +} + +void TestCreateHeader(void) +{ + CFE_FS_Header_t Header; + const char * TestDescription = "TEST_HEADER"; + osal_id_t fd = setup_file(); + + UtPrintf("Testing: CFE_FS_InitHeader, CFE_FS_WriteHeader"); + + CFE_FS_InitHeader(&Header, TestDescription, CFE_FS_SubType_ES_ERLOG); + UtAssert_INT32_EQ(CFE_FS_WriteHeader(fd, &Header), sizeof(CFE_FS_Header_t)); + + OS_close(fd); + OS_remove(OS_TEST_HEADER_FILENAME); +} + +void TestReadHeader(void) +{ + CFE_FS_Header_t Header; + CFE_FS_Header_t ReadHeader; + const char * TestDescription = "TEST_HEADER"; + osal_id_t fd = setup_file(); + + UtPrintf("Testing: CFE_FS_ReadHeader"); + + 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(Header.ContentType, ReadHeader.ContentType); + UtAssert_INT32_EQ(Header.SubType, ReadHeader.SubType); + UtAssert_StrCmp(TestDescription, ReadHeader.Description, "ReadHeader.Description = %s", ReadHeader.Description); + + OS_close(fd); + OS_remove(OS_TEST_HEADER_FILENAME); +} + +void TestTimeStamp(void) +{ + CFE_FS_Header_t Header; + CFE_FS_Header_t ReadHeader; + const char * TestDescription = "TEST_HEADER"; + CFE_TIME_SysTime_t NewTimestamp = {10, 10}; + osal_id_t fd = setup_file(); + + UtPrintf("Testing: CFE_FS_SetTimestamp"); + + 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), OS_SUCCESS); + UtAssert_INT32_EQ(CFE_FS_ReadHeader(&ReadHeader, fd), sizeof(CFE_FS_Header_t)); + + UtAssert_INT32_EQ(10, ReadHeader.TimeSeconds); + UtAssert_INT32_EQ(10, ReadHeader.TimeSubSeconds); + + OS_close(fd); + OS_remove(OS_TEST_HEADER_FILENAME); +} + +void FSHeaderTestSetup(void) +{ + UtTest_Add(TestCreateHeader, NULL, NULL, "Test Create Header"); + UtTest_Add(TestReadHeader, NULL, NULL, "Test Read Header"); + UtTest_Add(TestTimeStamp, NULL, NULL, "Test Time Stamp"); +}