device handler unittest wip
This commit is contained in:
parent
7afe30ea88
commit
1611a4e1f0
@ -48,6 +48,20 @@ def main():
|
|||||||
action="store_true",
|
action="store_true",
|
||||||
help="Run valgrind on generated test binary",
|
help="Run valgrind on generated test binary",
|
||||||
)
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"-g",
|
||||||
|
"--generators",
|
||||||
|
default = "Ninja",
|
||||||
|
action="store",
|
||||||
|
help="CMake generators",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"-w",
|
||||||
|
"--windows",
|
||||||
|
default=False,
|
||||||
|
action="store_true",
|
||||||
|
help="Run on windows",
|
||||||
|
)
|
||||||
|
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
if args.all:
|
if args.all:
|
||||||
@ -115,14 +129,14 @@ def handle_tests_type(args, build_dir_list: list):
|
|||||||
if args.create:
|
if args.create:
|
||||||
if os.path.exists(UNITTEST_FOLDER_NAME):
|
if os.path.exists(UNITTEST_FOLDER_NAME):
|
||||||
shutil.rmtree(UNITTEST_FOLDER_NAME)
|
shutil.rmtree(UNITTEST_FOLDER_NAME)
|
||||||
create_tests_build_cfg()
|
create_tests_build_cfg(args)
|
||||||
build_directory = UNITTEST_FOLDER_NAME
|
build_directory = UNITTEST_FOLDER_NAME
|
||||||
elif len(build_dir_list) == 0:
|
elif len(build_dir_list) == 0:
|
||||||
print(
|
print(
|
||||||
"No valid CMake tests build directory found. "
|
"No valid CMake tests build directory found. "
|
||||||
"Trying to set up test build system"
|
"Trying to set up test build system"
|
||||||
)
|
)
|
||||||
create_tests_build_cfg()
|
create_tests_build_cfg(args)
|
||||||
build_directory = UNITTEST_FOLDER_NAME
|
build_directory = UNITTEST_FOLDER_NAME
|
||||||
elif len(build_dir_list) == 1:
|
elif len(build_dir_list) == 1:
|
||||||
build_directory = build_dir_list[0]
|
build_directory = build_dir_list[0]
|
||||||
@ -147,10 +161,15 @@ def handle_tests_type(args, build_dir_list: list):
|
|||||||
os.chdir("..")
|
os.chdir("..")
|
||||||
|
|
||||||
|
|
||||||
def create_tests_build_cfg():
|
def create_tests_build_cfg(args):
|
||||||
os.mkdir(UNITTEST_FOLDER_NAME)
|
os.mkdir(UNITTEST_FOLDER_NAME)
|
||||||
os.chdir(UNITTEST_FOLDER_NAME)
|
os.chdir(UNITTEST_FOLDER_NAME)
|
||||||
cmd_runner("cmake -DFSFW_OSAL=host -DFSFW_BUILD_UNITTESTS=ON ..")
|
if args.windows:
|
||||||
|
cmake_cmd = 'cmake -G "' + args.generators + '" -DFSFW_OSAL=host -DFSFW_BUILD_UNITTESTS=ON \
|
||||||
|
-DGCOVR_PATH="py -m gcovr" ..'
|
||||||
|
else:
|
||||||
|
cmake_cmd = 'cmake -G "' + args.generators + '" -DFSFW_OSAL=host -DFSFW_BUILD_UNITTESTS=ON ..'
|
||||||
|
cmd_runner(cmake_cmd)
|
||||||
os.chdir("..")
|
os.chdir("..")
|
||||||
|
|
||||||
|
|
||||||
|
24
tests/src/fsfw_tests/unit/devicehandler/ComIFMock.cpp
Normal file
24
tests/src/fsfw_tests/unit/devicehandler/ComIFMock.cpp
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
#include "ComIFMock.h"
|
||||||
|
|
||||||
|
ComIFMock::ComIFMock(obejct_id_t objectId) {}
|
||||||
|
|
||||||
|
ComIFMock::~ComIFMock() {}
|
||||||
|
|
||||||
|
ReturnValue_t ComIFMock::initializeInterface(CookieIF *cookie) { return RETURN_OK; }
|
||||||
|
|
||||||
|
ReturnValue_t ComIFMock::sendMessage(CookieIF *cookie, const uint8_t *sendData, size_t sendLen) {
|
||||||
|
rememberSentByte = *sendData;
|
||||||
|
return RETURN_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t ComIFMock::getSendSuccess(CookieIF *cookie) { return RETURN_OK; }
|
||||||
|
|
||||||
|
ReturnValue_t ComIFMock::requestReceiveMessage(CookieIF *cookie, size_t requestLen) {
|
||||||
|
return RETURN_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t ComIFMock::readReceivedMessage(CookieIF *cookie, uint8_t **buffer, size_t *size) {
|
||||||
|
*size = sizeof(rememberSentByte);
|
||||||
|
*buffer = &rememberSentByte;
|
||||||
|
return RETURN_OK;
|
||||||
|
}
|
27
tests/src/fsfw_tests/unit/devicehandler/ComIFMock.h
Normal file
27
tests/src/fsfw_tests/unit/devicehandler/ComIFMock.h
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
#ifndef TESTS_SRC_FSFW_TESTS_UNIT_DEVICEHANDLER_COMIFMOCK_H_
|
||||||
|
#define TESTS_SRC_FSFW_TESTS_UNIT_DEVICEHANDLER_COMIFMOCK_H_
|
||||||
|
|
||||||
|
#include <fsfw/devicehandlers/DeviceCommunicationIF.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief The ComIFMock supports the simulation of various device communication error cases
|
||||||
|
* like incomplete or wrong replies and can be used to test the DeviceHandlerBase.
|
||||||
|
*/
|
||||||
|
class ComIFMock : public DeviceCommunicationIF, public SystemObject {
|
||||||
|
public:
|
||||||
|
ComIFMock(obejct_id_t objectId);
|
||||||
|
virtual ~ComIFMock();
|
||||||
|
|
||||||
|
virtual ReturnValue_t initializeInterface(CookieIF *cookie) override;
|
||||||
|
virtual ReturnValue_t sendMessage(CookieIF *cookie, const uint8_t *sendData,
|
||||||
|
size_t sendLen) override;
|
||||||
|
virtual ReturnValue_t getSendSuccess(CookieIF *cookie) override;
|
||||||
|
virtual ReturnValue_t requestReceiveMessage(CookieIF *cookie, size_t requestLen) override;
|
||||||
|
virtual ReturnValue_t readReceivedMessage(CookieIF *cookie, uint8_t **buffer,
|
||||||
|
size_t *size) override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
uint8_t rememberSentByte = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* TESTS_SRC_FSFW_TESTS_UNIT_DEVICEHANDLER_COMIFMOCK_H_ */
|
7
tests/src/fsfw_tests/unit/devicehandler/CookieIFMock.cpp
Normal file
7
tests/src/fsfw_tests/unit/devicehandler/CookieIFMock.cpp
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
#include "CookieIFMock.h"
|
||||||
|
|
||||||
|
CookieIFMock::CookieIFMock() {
|
||||||
|
}
|
||||||
|
|
||||||
|
CookieIFMock::~CookieIFMock() {
|
||||||
|
}
|
12
tests/src/fsfw_tests/unit/devicehandler/CookieIFMock.h
Normal file
12
tests/src/fsfw_tests/unit/devicehandler/CookieIFMock.h
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#ifndef TESTS_SRC_FSFW_TESTS_UNIT_DEVICEHANDLER_COOKIEIFMOCK_H_
|
||||||
|
#define TESTS_SRC_FSFW_TESTS_UNIT_DEVICEHANDLER_COOKIEIFMOCK_H_
|
||||||
|
|
||||||
|
#include "fsfw/devicehandlers/CookieIF.h"
|
||||||
|
|
||||||
|
class CookieIFMock {
|
||||||
|
public:
|
||||||
|
CookieIFMock();
|
||||||
|
virtual ~CookieIFMock();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* TESTS_SRC_FSFW_TESTS_UNIT_DEVICEHANDLER_COOKIEIFMOCK_H_ */
|
@ -0,0 +1,70 @@
|
|||||||
|
#include "DeviceHandlerCommander.h"
|
||||||
|
|
||||||
|
DeviceHandlerCommander::DeviceHandlerCommander(object_id_t objectId)
|
||||||
|
: SystemObject(objectId), commandActionHelper(this) {
|
||||||
|
auto mqArgs = MqArgs(this->getObjectId());
|
||||||
|
commandQueue = QueueFactory::instance()->createMessageQueue(
|
||||||
|
QUEUE_SIZE, MessageQueueMessage::MAX_MESSAGE_SIZE, &mqArgs);
|
||||||
|
}
|
||||||
|
|
||||||
|
DeviceHandlerCommander::~DeviceHandlerCommander() {}
|
||||||
|
|
||||||
|
ReturnValue_t DeviceHandlerCommander::performOperation(uint8_t operationCode) {
|
||||||
|
readCommandQueue();
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t DeviceHandlerCommander::initialize() {
|
||||||
|
ReturnValue_t result = commandActionHelper.initialize();
|
||||||
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
result = actionHelper.initialize(commandQueue);
|
||||||
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
return HasReturnvaluesIF::RETURN_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
MessageQueueIF* DeviceHandlerCommander::getCommandQueuePtr() { return commandQueue; }
|
||||||
|
|
||||||
|
void DeviceHandlerCommander::stepSuccessfulReceived(ActionId_t actionId, uint8_t step) {}
|
||||||
|
|
||||||
|
void DeviceHandlerCommander::stepFailedReceived(ActionId_t actionId, uint8_t step,
|
||||||
|
ReturnValue_t returnCode) {}
|
||||||
|
|
||||||
|
void DeviceHandlerCommander::dataReceived(ActionId_t actionId, const uint8_t* data, uint32_t size) {
|
||||||
|
}
|
||||||
|
|
||||||
|
void DeviceHandlerCommander::completionSuccessfulReceived(ActionId_t actionId) {
|
||||||
|
lastReplyReturnCode = RETURN_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
void DeviceHandlerCommander::completionFailedReceived(ActionId_t actionId,
|
||||||
|
ReturnValue_t returnCode) {
|
||||||
|
lastReplyReturnCode = returnCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
void DeviceHandlerCommander::readCommandQueue() {
|
||||||
|
CommandMessage message;
|
||||||
|
ReturnValue_t result = HasReturnvaluesIF::RETURN_OK;
|
||||||
|
for (result = commandQueue->receiveMessage(&message); result == HasReturnvaluesIF::RETURN_OK;
|
||||||
|
result = commandQueue->receiveMessage(&message)) {
|
||||||
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
result = commandActionHelper.handleReply(&message);
|
||||||
|
if (result == HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t DeviceHandlerCommander::sendCommand(object_id_t target, ActionId_t actionId) {
|
||||||
|
return commandActionHelper.commandAction(target, actionId, nullptr, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t DeviceHandlerCommander::getReplyReturnCode() { return lastReplyReturnCode; }
|
||||||
|
|
||||||
|
void DeviceHandlerCommander::resetReplyReturnCode() {
|
||||||
|
lastReplyReturnCode = RETURN_FAILED;
|
||||||
|
}
|
@ -0,0 +1,49 @@
|
|||||||
|
#ifndef TESTS_SRC_FSFW_TESTS_UNIT_DEVICEHANDLER_DEVICEHANDLERCOMMANDER_H_
|
||||||
|
#define TESTS_SRC_FSFW_TESTS_UNIT_DEVICEHANDLER_DEVICEHANDLERCOMMANDER_H_
|
||||||
|
|
||||||
|
#include "fsfw/objectmanager/SystemObject.h"
|
||||||
|
#include "fsfw/action/CommandActionHelper.h"
|
||||||
|
#include "fsfw/action/CommandsActionsIF.h"
|
||||||
|
#include "fsfw/tasks/ExecutableObjectIF.h"
|
||||||
|
#include "fsfw/returnvalues/HasReturnvaluesIF.h"
|
||||||
|
|
||||||
|
class DeviceHandlerCommander : public ExecutableObjectIF,
|
||||||
|
public SystemObject,
|
||||||
|
public CommandsActionsIF,
|
||||||
|
public HasReturnvaluesIF {
|
||||||
|
public:
|
||||||
|
DeviceHandlerCommander(object_id_t objectId);
|
||||||
|
virtual ~DeviceHandlerCommander();
|
||||||
|
|
||||||
|
ReturnValue_t performOperation(uint8_t operationCode = 0);
|
||||||
|
ReturnValue_t initialize() override;
|
||||||
|
MessageQueueIF* getCommandQueuePtr() override;
|
||||||
|
void stepSuccessfulReceived(ActionId_t actionId, uint8_t step) override;
|
||||||
|
void stepFailedReceived(ActionId_t actionId, uint8_t step, ReturnValue_t returnCode) override;
|
||||||
|
void dataReceived(ActionId_t actionId, const uint8_t* data, uint32_t size) override;
|
||||||
|
void completionSuccessfulReceived(ActionId_t actionId) override;
|
||||||
|
void completionFailedReceived(ActionId_t actionId, ReturnValue_t returnCode) override;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Calling this function will send the command to the device handler object.
|
||||||
|
*
|
||||||
|
* @param target Object ID of the device handler
|
||||||
|
* @param actionId Action ID of the command to send
|
||||||
|
*/
|
||||||
|
ReturnValue_t sendCommand(object_id_t target, ActionId_t actionId);
|
||||||
|
|
||||||
|
ReturnValue_t getReplyReturnCode();
|
||||||
|
void resetReplyReturnCode();
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
MessageQueueIF* commandQueue = nullptr;
|
||||||
|
|
||||||
|
CommandActionHelper commandActionHelper;
|
||||||
|
|
||||||
|
ReturnValue_t lastReplyReturnCode = RETURN_FAILED;
|
||||||
|
|
||||||
|
void readCommandQueue();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* TESTS_SRC_FSFW_TESTS_UNIT_DEVICEHANDLER_DEVICEHANDLERCOMMANDER_H_ */
|
@ -0,0 +1,70 @@
|
|||||||
|
#include "DeviceHandlerMock.h"
|
||||||
|
|
||||||
|
DeviceHandlerMock::DeviceHandlerMock(object_id_t objectId, object_id_t deviceCommunication)
|
||||||
|
: DeviceHandlerBase(objetcId, deviceCommunication, nullptr) {}
|
||||||
|
|
||||||
|
DeviceHandlerMock::~DeviceHandlerMock() {
|
||||||
|
}
|
||||||
|
|
||||||
|
void DeviceHandlerMock::doStartup() {
|
||||||
|
setMode(_MODE_TO_ON);
|
||||||
|
}
|
||||||
|
|
||||||
|
void DeviceHandlerMock::doShutdown() {
|
||||||
|
setMode(_MODE_POWER_DOWN);
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t DeviceHandlerMock::buildNormalDeviceCommand(DeviceCommandId_t *id) {
|
||||||
|
return NOTHING_TO_SEND;
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t DeviceHandlerMock::buildTransitionDeviceCommand(DeviceCommandId_t *id) {
|
||||||
|
return NOTHING_TO_SEND;
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t DeviceHandlerMock::buildCommandFromCommand(DeviceCommandId_t deviceCommand,
|
||||||
|
const uint8_t *commandData,
|
||||||
|
size_t commandDataLen) {
|
||||||
|
switch(deviceCommand) {
|
||||||
|
case PERIODIC_REPLY_TEST_COMMAND: {
|
||||||
|
commandBuffer[0] = periodicReplyTestData;
|
||||||
|
rawPacket = commandBuffer;
|
||||||
|
rawPacketLen = sizeof(periodicReplyTestData);
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
WARN("DeviceHandlerMock::buildCommandFromCommand: Invalid device command");
|
||||||
|
}
|
||||||
|
return RETURN_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t DeviceHandlerMock::scanForReply(const uint8_t *start, size_t len, DeviceCommandId_t *foundId,
|
||||||
|
size_t *foundLen) {
|
||||||
|
switch(*start) {
|
||||||
|
case periodicReplyTestData: {
|
||||||
|
return RETURN_OK;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return RETURN_FAILED;
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t DeviceHandlerMock::interpretDeviceReply(DeviceCommandId_t id, const uint8_t *packet) {
|
||||||
|
switch(id){
|
||||||
|
case PERIODIC_REPLY_TEST_COMMAND:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void DeviceHandlerMock::fillCommandAndReplyMap() {
|
||||||
|
insertInCommandAndReplyMap(PERIODIC_REPLY_TEST_COMMAND, 2, nullptr, 0, true, false, 0,
|
||||||
|
periodicReplyCountdown);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t DeviceHandlerMock::getTransitionDelayMs(Mode_t modeFrom, Mode_t modeTo) {
|
||||||
|
return 500;
|
||||||
|
}
|
||||||
|
|
36
tests/src/fsfw_tests/unit/devicehandler/DeviceHandlerMock.h
Normal file
36
tests/src/fsfw_tests/unit/devicehandler/DeviceHandlerMock.h
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
#ifndef TESTS_SRC_FSFW_TESTS_UNIT_DEVICEHANDLER_DEVICEHANDLERMOCK_H_
|
||||||
|
#define TESTS_SRC_FSFW_TESTS_UNIT_DEVICEHANDLER_DEVICEHANDLERMOCK_H_
|
||||||
|
|
||||||
|
#include <fsfw/devicehandlers/DeviceHandlerBase.h>
|
||||||
|
|
||||||
|
class DeviceHandlerMock : public DeviceHandlerBase {
|
||||||
|
public:
|
||||||
|
|
||||||
|
static const DeviceCommandId_t PERIODIC_REPLY_TEST_COMMAND = 1;
|
||||||
|
|
||||||
|
DeviceHandlerMock(object_id_t objectId, object_id_t deviceCommunication);
|
||||||
|
virtual ~DeviceHandlerMock();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void doStartUp() override;
|
||||||
|
void doStartShutdown() override;
|
||||||
|
ReturnValue_t buildNormalDeviceCommand(DeviceCommandId_t *id) override;
|
||||||
|
ReturnValue_t buildTransitionDeviceCommand(DeviceCommandId_t *id) override;
|
||||||
|
ReturnValue_t buildCommandFromCommand(DeviceCommandId_t deviceCommand, const uint8_t *commandData,
|
||||||
|
size_t commandDataLen) override;
|
||||||
|
ReturnValue_t scanForReply(const uint8_t *start, size_t len, DeviceCommandId_t *foundId,
|
||||||
|
size_t *foundLen) override;
|
||||||
|
ReturnValue_t interpretDeviceReply(DeviceCommandId_t id, const uint8_t *packet) override;
|
||||||
|
void fillCommandAndReplyMap() override;
|
||||||
|
uint32_t getTransitionDelayMs(Mode_t modeFrom, Mode_t modeTo) override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
uint8_t periodicReplyTestData = 1;
|
||||||
|
|
||||||
|
Countdown periodicReplyCountdown = Countdown(10);
|
||||||
|
|
||||||
|
uint8_t commandBuffer[1];
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* TESTS_SRC_FSFW_TESTS_UNIT_DEVICEHANDLER_DEVICEHANDLERMOCK_H_ */
|
@ -0,0 +1,36 @@
|
|||||||
|
#include "TestDeviceHandlerBase.h"
|
||||||
|
|
||||||
|
#include <catch2/catch_test_macros.hpp>
|
||||||
|
#include "ComIFMock.h"
|
||||||
|
|
||||||
|
#include "fsfw_tests/unit/devicehandler/DeviceHandlerMock.h"
|
||||||
|
#include "fsfw_tests/unit/devicehandler/DeviceHandlerCommander.h"
|
||||||
|
#include "fsfw_tests/unit/devicehandler/CookieIFMock.h"
|
||||||
|
#include "fsfw_tests/unit/testcfg/objects/systemObjectList.h"
|
||||||
|
|
||||||
|
TEST_CASE("Device Handler Base", "[DeviceHandlerBase]") {
|
||||||
|
|
||||||
|
SECTION("Periodic reply with countdown based timeout success") {
|
||||||
|
CookieIFMock cookieIFMock;
|
||||||
|
ComIFperiodicMock comIFperiodic(objects::COM_IF_MOCK);
|
||||||
|
DeviceHandlerMock deviceHandlerMock(objects::DEVICE_HANDLER_MOCK, objects::COM_IF_MOCK,
|
||||||
|
&cookieIFMock);
|
||||||
|
ReturnValue_t result = deviceHandlerMock.initialize();
|
||||||
|
REQUIRE(result == RETURN_OK);
|
||||||
|
DeviceHandlerCommander deviceHandlerCommander(objects::DEVICE_HANDLER_COMMANDER);
|
||||||
|
result = deviceHandlerCommander.initialize();
|
||||||
|
REQUIRE(result == RETURN_OK);
|
||||||
|
result = deviceHandlerCommander.sendCommand(objects::DEVICE_HANDLER_MOCK,
|
||||||
|
DeviceHandlerMock::PERIODIC_REPLY_TEST_COMMAND);
|
||||||
|
deviceHandlerMock.performOperation(DeviceHandlerIF::PERFORM_OPERATION);
|
||||||
|
deviceHandlerMock.performOperation(DeviceHandlerIF::SEND_WRITE);
|
||||||
|
deviceHandlerMock.performOperation(DeviceHandlerIF::GET_WRITE);
|
||||||
|
deviceHandlerMock.performOperation(DeviceHandlerIF::SEND_READ);
|
||||||
|
deviceHandlerMock.performOperation(DeviceHandlerIF::GET_READ);
|
||||||
|
result = deviceHandlerCommander.getReplyReturnCode();
|
||||||
|
REQUIRE(result == RETURN_OK);
|
||||||
|
}
|
||||||
|
// SECTION("Periodic reply with countdown based timeout failed") {
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
}
|
@ -0,0 +1,49 @@
|
|||||||
|
#ifndef UNITTEST_HOSTED_TESTACTIONHELPER_H_
|
||||||
|
#define UNITTEST_HOSTED_TESTACTIONHELPER_H_
|
||||||
|
|
||||||
|
#include <fsfw/action/HasActionsIF.h>
|
||||||
|
#include <fsfw/ipc/MessageQueueIF.h>
|
||||||
|
|
||||||
|
#include <cstring>
|
||||||
|
|
||||||
|
#include "fsfw_tests/unit/CatchDefinitions.h"
|
||||||
|
|
||||||
|
class ActionHelperOwnerMockBase : public HasActionsIF {
|
||||||
|
public:
|
||||||
|
bool getCommandQueueCalled = false;
|
||||||
|
bool executeActionCalled = false;
|
||||||
|
static const size_t MAX_SIZE = 3;
|
||||||
|
uint8_t buffer[MAX_SIZE] = {0, 0, 0};
|
||||||
|
size_t size = 0;
|
||||||
|
|
||||||
|
MessageQueueId_t getCommandQueue() const override { return tconst::testQueueId; }
|
||||||
|
|
||||||
|
ReturnValue_t executeAction(ActionId_t actionId, MessageQueueId_t commandedBy,
|
||||||
|
const uint8_t* data, size_t size) override {
|
||||||
|
executeActionCalled = true;
|
||||||
|
if (size > MAX_SIZE) {
|
||||||
|
return 0xAFFE;
|
||||||
|
}
|
||||||
|
this->size = size;
|
||||||
|
memcpy(buffer, data, size);
|
||||||
|
return HasReturnvaluesIF::RETURN_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
void clearBuffer() {
|
||||||
|
this->size = 0;
|
||||||
|
for (size_t i = 0; i < MAX_SIZE; i++) {
|
||||||
|
buffer[i] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void getBuffer(const uint8_t** ptr, size_t* size) {
|
||||||
|
if (size != nullptr) {
|
||||||
|
*size = this->size;
|
||||||
|
}
|
||||||
|
if (ptr != nullptr) {
|
||||||
|
*ptr = buffer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* UNITTEST_TESTFW_NEWTESTS_TESTACTIONHELPER_H_ */
|
@ -21,8 +21,11 @@ enum sourceObjects : uint32_t {
|
|||||||
HK_RECEIVER_MOCK = 22,
|
HK_RECEIVER_MOCK = 22,
|
||||||
TEST_LOCAL_POOL_OWNER_BASE = 25,
|
TEST_LOCAL_POOL_OWNER_BASE = 25,
|
||||||
|
|
||||||
SHARED_SET_ID = 26
|
SHARED_SET_ID = 26,
|
||||||
|
|
||||||
|
DEVICE_HANDLER_MOCK = 27,
|
||||||
|
COM_IF_MOCK = 28,
|
||||||
|
DEVICE_HANDLER_COMMANDER = 29,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user