adapt PSB so it can be unittested properly
This commit is contained in:
@ -54,7 +54,6 @@ void Factory::produceFrameworkObjects(void* args) {
|
||||
// like this. Instead, this should be more like a general struct containing all important
|
||||
// object IDs which are then explicitely passed in the object constructor
|
||||
void Factory::setStaticFrameworkObjectIds() {
|
||||
PusServiceBase::packetSource = objects::NO_OBJECT;
|
||||
PusServiceBase::packetDestination = objects::NO_OBJECT;
|
||||
|
||||
CommandingServiceBase::defaultPacketSource = objects::NO_OBJECT;
|
||||
|
@ -10,7 +10,8 @@
|
||||
|
||||
TEST_CASE("Action Helper", "[ActionHelper]") {
|
||||
ActionHelperOwnerMockBase testDhMock;
|
||||
MessageQueueMock testMqMock;
|
||||
// TODO: Setting another number here breaks the test. Find out why
|
||||
MessageQueueMock testMqMock(MessageQueueIF::NO_QUEUE);
|
||||
ActionHelper actionHelper = ActionHelper(&testDhMock, dynamic_cast<MessageQueueIF*>(&testMqMock));
|
||||
CommandMessage actionMessage;
|
||||
ActionId_t testActionId = 777;
|
||||
|
@ -14,7 +14,7 @@
|
||||
#include "tests/TestsConfig.h"
|
||||
|
||||
TEST_CASE("DataSetTest", "[DataSetTest]") {
|
||||
auto queue = MessageQueueMock();
|
||||
auto queue = MessageQueueMock(1);
|
||||
LocalPoolOwnerBase poolOwner(queue, objects::TEST_LOCAL_POOL_OWNER_BASE);
|
||||
REQUIRE(poolOwner.initializeHkManager() == retval::CATCH_OK);
|
||||
REQUIRE(poolOwner.initializeHkManagerAfterTaskCreation() == retval::CATCH_OK);
|
||||
|
@ -20,7 +20,7 @@ TEST_CASE("Local Pool Manager Tests", "[LocManTest]") {
|
||||
const MessageQueueId_t hkDest = defaultDestId;
|
||||
const MessageQueueId_t subscriberId = 2;
|
||||
auto hkReceiver = HkReceiverMock(hkDest);
|
||||
auto queue = MessageQueueMock();
|
||||
auto queue = MessageQueueMock(3);
|
||||
LocalPoolOwnerBase poolOwner(queue, objects::TEST_LOCAL_POOL_OWNER_BASE);
|
||||
REQUIRE(poolOwner.initializeHkManager() == retval::CATCH_OK);
|
||||
REQUIRE(poolOwner.initializeHkManagerAfterTaskCreation() == retval::CATCH_OK);
|
||||
|
@ -8,7 +8,7 @@
|
||||
#include "tests/TestsConfig.h"
|
||||
|
||||
TEST_CASE("LocalPoolVariable", "[LocPoolVarTest]") {
|
||||
auto queue = MessageQueueMock();
|
||||
auto queue = MessageQueueMock(1);
|
||||
LocalPoolOwnerBase poolOwner(queue, objects::TEST_LOCAL_POOL_OWNER_BASE);
|
||||
REQUIRE(poolOwner.initializeHkManager() == retval::CATCH_OK);
|
||||
REQUIRE(poolOwner.initializeHkManagerAfterTaskCreation() == retval::CATCH_OK);
|
||||
|
@ -8,7 +8,7 @@
|
||||
#include "tests/TestsConfig.h"
|
||||
|
||||
TEST_CASE("LocalPoolVector", "[LocPoolVecTest]") {
|
||||
auto queue = MessageQueueMock();
|
||||
auto queue = MessageQueueMock(1);
|
||||
LocalPoolOwnerBase poolOwner(queue, objects::TEST_LOCAL_POOL_OWNER_BASE);
|
||||
REQUIRE(poolOwner.initializeHkManager() == retval::CATCH_OK);
|
||||
REQUIRE(poolOwner.initializeHkManagerAfterTaskCreation() == retval::CATCH_OK);
|
||||
|
7
unittests/mocks/AcceptsTmMock.cpp
Normal file
7
unittests/mocks/AcceptsTmMock.cpp
Normal file
@ -0,0 +1,7 @@
|
||||
#include "AcceptsTmMock.h"
|
||||
|
||||
AcceptsTmMock::AcceptsTmMock(MessageQueueId_t queueToReturn) : returnedQueue(queueToReturn) {}
|
||||
|
||||
MessageQueueId_t AcceptsTmMock::getReportReceptionQueue(uint8_t virtualChannel) {
|
||||
return returnedQueue;
|
||||
}
|
14
unittests/mocks/AcceptsTmMock.h
Normal file
14
unittests/mocks/AcceptsTmMock.h
Normal file
@ -0,0 +1,14 @@
|
||||
#ifndef FSFW_TESTS_ACCEPTSTMMOCK_H
|
||||
#define FSFW_TESTS_ACCEPTSTMMOCK_H
|
||||
|
||||
#include "fsfw/tmtcservices/AcceptsTelemetryIF.h"
|
||||
|
||||
class AcceptsTmMock : public AcceptsTelemetryIF {
|
||||
public:
|
||||
explicit AcceptsTmMock(MessageQueueId_t queueToReturn);
|
||||
|
||||
MessageQueueId_t getReportReceptionQueue(uint8_t virtualChannel) override;
|
||||
|
||||
MessageQueueId_t returnedQueue;
|
||||
};
|
||||
#endif // FSFW_TESTS_ACCEPTSTMMOCK_H
|
@ -9,4 +9,5 @@ target_sources(${FSFW_TEST_TGT} PRIVATE
|
||||
LocalPoolOwnerBase.cpp
|
||||
PusVerificationReporterMock.cpp
|
||||
PusServiceBaseMock.cpp
|
||||
AcceptsTmMock.cpp
|
||||
)
|
||||
|
@ -3,9 +3,6 @@
|
||||
#include <algorithm>
|
||||
#include <stdexcept>
|
||||
|
||||
MessageQueueMock::MessageQueueMock()
|
||||
: MessageQueueBase(MessageQueueIF::NO_QUEUE, MessageQueueIF::NO_QUEUE, nullptr) {}
|
||||
|
||||
MessageQueueMock::MessageQueueMock(MessageQueueId_t queueId)
|
||||
: MessageQueueBase(queueId, MessageQueueIF::NO_QUEUE, nullptr) {}
|
||||
|
||||
|
@ -22,8 +22,6 @@ struct SendInfo {
|
||||
|
||||
class MessageQueueMock : public MessageQueueBase {
|
||||
public:
|
||||
MessageQueueMock();
|
||||
|
||||
void addReceivedMessage(MessageQueueMessageIF& msg);
|
||||
explicit MessageQueueMock(MessageQueueId_t queueId);
|
||||
|
||||
|
@ -1,7 +1,6 @@
|
||||
#include "PusServiceBaseMock.h"
|
||||
|
||||
PsbMock::PsbMock(uint8_t service, uint16_t apid, VerificationReporterIF& verifyReporter)
|
||||
: PusServiceBase(0, service, apid, &verifyReporter) {}
|
||||
PsbMock::PsbMock(PsbParams params) : PusServiceBase(params) {}
|
||||
|
||||
ReturnValue_t PsbMock::handleRequest(uint8_t subservice) {
|
||||
handleRequestCallCnt++;
|
||||
@ -27,6 +26,7 @@ void PsbMock::reset() {
|
||||
performServiceCallCnt = 0;
|
||||
std::queue<uint8_t>().swap(subserviceQueue);
|
||||
}
|
||||
|
||||
void PsbMock::makeNextHandleReqCallFail(ReturnValue_t retval) {
|
||||
handleReqFailPair.first = true;
|
||||
handleReqFailPair.second = retval;
|
||||
|
@ -7,7 +7,7 @@
|
||||
|
||||
class PsbMock : public PusServiceBase {
|
||||
public:
|
||||
PsbMock(uint8_t service, uint16_t apid, VerificationReporterIF& verifyReporter);
|
||||
explicit PsbMock(PsbParams params);
|
||||
unsigned int handleRequestCallCnt = 0;
|
||||
std::queue<uint8_t> subserviceQueue;
|
||||
unsigned int performServiceCallCnt = 0;
|
||||
|
@ -1,9 +1,32 @@
|
||||
#include <catch2/catch_test_macros.hpp>
|
||||
|
||||
#include "fsfw/ipc/QueueFactory.h"
|
||||
#include "mocks/AcceptsTmMock.h"
|
||||
#include "mocks/MessageQueueMock.h"
|
||||
#include "mocks/PusServiceBaseMock.h"
|
||||
#include "mocks/PusVerificationReporterMock.h"
|
||||
|
||||
TEST_CASE("Pus Service Base", "[pus-service-base]") {
|
||||
auto verificationReporter = PusVerificationReporterMock();
|
||||
auto psb = PsbMock(17, 0x02, verificationReporter);
|
||||
auto msgQueue = MessageQueueMock(1);
|
||||
auto tmReceiver = AcceptsTmMock(2);
|
||||
auto psbParams = PsbParams(0, 0x02, 17);
|
||||
psbParams.verifReporter = &verificationReporter;
|
||||
psbParams.reqQueue = &msgQueue;
|
||||
psbParams.tmReceiver = &tmReceiver;
|
||||
auto psb = PsbMock(psbParams);
|
||||
store_address_t dummyId(1);
|
||||
auto reqQueue = psb.getRequestQueue();
|
||||
TmTcMessage tmtcMsg(dummyId);
|
||||
REQUIRE(psb.initialize() == HasReturnvaluesIF::RETURN_OK);
|
||||
|
||||
SECTION("State") {
|
||||
REQUIRE(psb.getIdentifier() == 17);
|
||||
REQUIRE(psb.getObjectId() == 0);
|
||||
}
|
||||
|
||||
SECTION("Send Request") {
|
||||
msgQueue.addReceivedMessage(tmtcMsg);
|
||||
REQUIRE(psb.performOperation(0) == retval::OK);
|
||||
}
|
||||
}
|
@ -8,9 +8,9 @@
|
||||
#include "mocks/MessageQueueMock.h"
|
||||
|
||||
TEST_CASE("TM Send Helper", "[tm-send-helper]") {
|
||||
MessageQueueId_t destId = 1;
|
||||
MessageQueueId_t destId = 2;
|
||||
auto errReporter = InternalErrorReporterMock();
|
||||
auto msgQueue = MessageQueueMock();
|
||||
auto msgQueue = MessageQueueMock(1);
|
||||
msgQueue.setDefaultDestination(destId);
|
||||
TmSendHelper sendHelper(msgQueue, errReporter, destId);
|
||||
auto timeStamper = CdsShortTimestamperMock();
|
||||
|
@ -17,7 +17,7 @@ TEST_CASE("TM Store And Send Helper", "[tm-store-send-helper]") {
|
||||
|
||||
MessageQueueId_t destId = 1;
|
||||
auto errReporter = InternalErrorReporterMock();
|
||||
auto msgQueue = MessageQueueMock();
|
||||
auto msgQueue = MessageQueueMock(2);
|
||||
msgQueue.setDefaultDestination(destId);
|
||||
TmSendHelper sendHelper(msgQueue, errReporter, destId);
|
||||
TmStoreAndSendWrapper tmHelper(17, storeHelper, sendHelper);
|
||||
|
Reference in New Issue
Block a user