add new VerificationReporterIF
This commit is contained in:
@ -60,8 +60,6 @@ void Factory::setStaticFrameworkObjectIds() {
|
||||
CommandingServiceBase::defaultPacketSource = objects::NO_OBJECT;
|
||||
CommandingServiceBase::defaultPacketDestination = objects::NO_OBJECT;
|
||||
|
||||
VerificationReporter::messageReceiver = objects::PUS_SERVICE_1_VERIFICATION;
|
||||
|
||||
DeviceHandlerBase::powerSwitcherId = objects::NO_OBJECT;
|
||||
DeviceHandlerBase::rawDataReceiverId = objects::NO_OBJECT;
|
||||
|
||||
|
30
unittests/mocks/PusServiceBaseMock.cpp
Normal file
30
unittests/mocks/PusServiceBaseMock.cpp
Normal file
@ -0,0 +1,30 @@
|
||||
#include "PusServiceBaseMock.h"
|
||||
|
||||
ReturnValue_t PsbMock::handleRequest(uint8_t subservice) {
|
||||
handleRequestCallCnt++;
|
||||
subserviceQueue.push(subservice);
|
||||
if (handleReqFailPair.first) {
|
||||
handleReqFailPair.first = false;
|
||||
return handleReqFailPair.second;
|
||||
}
|
||||
return HasReturnvaluesIF::RETURN_OK;
|
||||
}
|
||||
|
||||
ReturnValue_t PsbMock::performService() {
|
||||
performServiceCallCnt++;
|
||||
if (performServiceFailPair.first) {
|
||||
performServiceFailPair.first = false;
|
||||
return performServiceFailPair.second;
|
||||
}
|
||||
return HasReturnvaluesIF::RETURN_OK;
|
||||
}
|
||||
|
||||
void PsbMock::reset() {
|
||||
handleRequestCallCnt = 0;
|
||||
performServiceCallCnt = 0;
|
||||
std::queue<uint8_t>().swap(subserviceQueue);
|
||||
}
|
||||
void PsbMock::makeNextHandleReqCallFail(ReturnValue_t retval) {
|
||||
handleReqFailPair.first = true;
|
||||
handleReqFailPair.second = retval;
|
||||
}
|
23
unittests/mocks/PusServiceBaseMock.h
Normal file
23
unittests/mocks/PusServiceBaseMock.h
Normal file
@ -0,0 +1,23 @@
|
||||
#ifndef FSFW_TESTS_PUSSERVICEBASEMOCK_H
|
||||
#define FSFW_TESTS_PUSSERVICEBASEMOCK_H
|
||||
|
||||
#include <queue>
|
||||
|
||||
#include "fsfw/tmtcservices/PusServiceBase.h"
|
||||
|
||||
class PsbMock : public PusServiceBase {
|
||||
public:
|
||||
unsigned int handleRequestCallCnt = 0;
|
||||
std::queue<uint8_t> subserviceQueue;
|
||||
unsigned int performServiceCallCnt = 0;
|
||||
|
||||
std::pair<bool, ReturnValue_t> handleReqFailPair;
|
||||
std::pair<bool, ReturnValue_t> performServiceFailPair;
|
||||
ReturnValue_t handleRequest(uint8_t subservice) override;
|
||||
ReturnValue_t performService() override;
|
||||
|
||||
void makeNextHandleReqCallFail(ReturnValue_t retval);
|
||||
void reset();
|
||||
};
|
||||
|
||||
#endif // FSFW_TESTS_PUSSERVICEBASEMOCK_H
|
@ -1,4 +1,5 @@
|
||||
target_sources(${FSFW_TEST_TGT} PRIVATE
|
||||
testStoreHelper.cpp
|
||||
testSendHelper.cpp
|
||||
testStoreAndSendHelper.cpp
|
||||
)
|
||||
|
5
unittests/tmtcservices/testPsb.cpp
Normal file
5
unittests/tmtcservices/testPsb.cpp
Normal file
@ -0,0 +1,5 @@
|
||||
#include <catch2/catch_test_macros.hpp>
|
||||
|
||||
#include "fsfw/tmtcservices/PusServiceBase.h"
|
||||
|
||||
TEST_CASE("Pus Service Base", "[pus-service-base]") { auto psb = PusServiceBase() }
|
@ -2,8 +2,12 @@
|
||||
|
||||
#include "fsfw/storagemanager/LocalPool.h"
|
||||
#include "fsfw/tmtcservices/TmSendHelper.h"
|
||||
#include "fsfw/tmtcservices/TmStoreAndSendHelper.h"
|
||||
#include "fsfw/tmtcservices/TmStoreHelper.h"
|
||||
#include "mocks/CdsShortTimestamperMock.h"
|
||||
#include "mocks/InternalErrorReporterMock.h"
|
||||
#include "mocks/MessageQueueMock.h"
|
||||
#include "mocks/SimpleSerializable.h"
|
||||
|
||||
TEST_CASE("TM Store And Send Helper", "[tm-store-send-helper]") {
|
||||
auto timeStamper = CdsShortTimestamperMock();
|
||||
@ -16,4 +20,68 @@ TEST_CASE("TM Store And Send Helper", "[tm-store-send-helper]") {
|
||||
auto msgQueue = MessageQueueMock();
|
||||
msgQueue.setDefaultDestination(destId);
|
||||
TmSendHelper sendHelper(msgQueue, errReporter, destId);
|
||||
TmStoreAndSendWrapper tmHelper(17, storeHelper, sendHelper);
|
||||
|
||||
SECTION("State") {
|
||||
CHECK(tmHelper.sendCounter == 0);
|
||||
CHECK(tmHelper.defaultService == 17);
|
||||
CHECK(tmHelper.delOnFailure);
|
||||
CHECK(tmHelper.incrementSendCounter);
|
||||
CHECK(&tmHelper.sendHelper == &sendHelper);
|
||||
CHECK(&tmHelper.storeHelper == &storeHelper);
|
||||
}
|
||||
|
||||
SECTION("Base Test") {
|
||||
tmHelper.prepareTmPacket(2);
|
||||
auto& creator = storeHelper.getCreatorRef();
|
||||
REQUIRE(creator.getSubService() == 2);
|
||||
REQUIRE(creator.getService() == 17);
|
||||
auto& params = creator.getParams();
|
||||
REQUIRE(params.dataWrapper.type == ecss::DataTypes::RAW);
|
||||
REQUIRE(params.dataWrapper.dataUnion.raw.data == nullptr);
|
||||
REQUIRE(params.dataWrapper.dataUnion.raw.len == 0);
|
||||
REQUIRE(tmHelper.sendCounter == 0);
|
||||
REQUIRE(tmHelper.storeAndSendTmPacket() == retval::OK);
|
||||
REQUIRE(tmHelper.sendCounter == 1);
|
||||
auto storeId = storeHelper.getCurrentAddr();
|
||||
REQUIRE(msgQueue.wasMessageSent());
|
||||
REQUIRE(msgQueue.numberOfSentMessagesToDefault() == 1);
|
||||
TmTcMessage msg;
|
||||
REQUIRE(msgQueue.getNextSentMessage(msg) == retval::OK);
|
||||
REQUIRE(msg.getStorageId() == storeId);
|
||||
REQUIRE(pool.hasDataAtId(msg.getStorageId()));
|
||||
storeHelper.deletePacket();
|
||||
}
|
||||
|
||||
SECTION("Raw Data Helper") {
|
||||
std::array<uint8_t, 3> data = {1, 2, 3};
|
||||
REQUIRE(tmHelper.prepareTmPacket(2, data.data(), data.size()) == retval::OK);
|
||||
auto& creator = storeHelper.getCreatorRef();
|
||||
auto& params = creator.getParams();
|
||||
REQUIRE(params.dataWrapper.type == ecss::DataTypes::RAW);
|
||||
REQUIRE(params.dataWrapper.dataUnion.raw.data == data.data());
|
||||
REQUIRE(params.dataWrapper.dataUnion.raw.len == data.size());
|
||||
}
|
||||
|
||||
SECTION("Serializable Helper") {
|
||||
auto simpleSer = SimpleSerializable();
|
||||
REQUIRE(tmHelper.prepareTmPacket(2, simpleSer) == retval::OK);
|
||||
auto& creator = storeHelper.getCreatorRef();
|
||||
auto& params = creator.getParams();
|
||||
REQUIRE(params.dataWrapper.type == ecss::DataTypes::SERIALIZABLE);
|
||||
REQUIRE(params.dataWrapper.dataUnion.serializable == &simpleSer);
|
||||
}
|
||||
|
||||
SECTION("Object ID prefix Helper") {
|
||||
uint32_t objectId = 0x01020304;
|
||||
std::array<uint8_t, 3> data = {1, 2, 3};
|
||||
telemetry::DataWithObjectIdPrefix dataWithObjId(objectId, data.data(), data.size());
|
||||
REQUIRE(tmHelper.prepareTmPacket(2, dataWithObjId) == retval::OK);
|
||||
auto& creator = storeHelper.getCreatorRef();
|
||||
auto& params = creator.getParams();
|
||||
REQUIRE(params.dataWrapper.type == ecss::DataTypes::SERIALIZABLE);
|
||||
REQUIRE(params.dataWrapper.dataUnion.serializable == &dataWithObjId);
|
||||
}
|
||||
|
||||
// TODO: Error handling
|
||||
}
|
||||
|
Reference in New Issue
Block a user