continue fixing tests
This commit is contained in:
@ -18,19 +18,18 @@ TEST_CASE("DataSetTest", "[DataSetTest]") {
|
||||
auto queue = MessageQueueMock(1);
|
||||
TestPoolOwner poolOwner(queue, objects::TEST_LOCAL_POOL_OWNER_BASE);
|
||||
poolOwner.initialize();
|
||||
StaticTestDataSet localSet;
|
||||
StaticTestDataset localSet;
|
||||
|
||||
SECTION("BasicTest") {
|
||||
/* Test some basic functions */
|
||||
CHECK(localSet.getReportingEnabled() == false);
|
||||
CHECK(localSet.getLocalPoolIdsSerializedSize(false) == 3 * sizeof(dp::id_t));
|
||||
CHECK(localSet.getLocalPoolIdsSerializedSize(true) == 3 * sizeof(dp::id_t) + sizeof(uint8_t));
|
||||
CHECK(localSet.getSid() == lpool::testSid0);
|
||||
CHECK(localSet.getLocalPoolIdsSerializedSize() == 3 * sizeof(dp::id_t));
|
||||
CHECK(localSet.getStructureId() == lpool::testSid1);
|
||||
CHECK(localSet.getCreatorObjectId() == objects::TEST_LOCAL_POOL_OWNER_BASE);
|
||||
size_t maxSize = localSet.getLocalPoolIdsSerializedSize(true);
|
||||
size_t maxSize = localSet.getLocalPoolIdsSerializedSize();
|
||||
uint8_t localPoolIdBuff[maxSize];
|
||||
// Skip size field
|
||||
auto* lpIds = reinterpret_cast<id_t*>(localPoolIdBuff + 1);
|
||||
auto* lpIds = reinterpret_cast<id_t*>(localPoolIdBuff);
|
||||
size_t serSize = 0;
|
||||
auto* localPoolIdBuffPtr = reinterpret_cast<uint8_t*>(localPoolIdBuff);
|
||||
|
||||
@ -38,7 +37,7 @@ TEST_CASE("DataSetTest", "[DataSetTest]") {
|
||||
CHECK(localSet.serializeLocalPoolIds(&localPoolIdBuffPtr, &serSize, maxSize,
|
||||
SerializeIF::Endianness::MACHINE) == returnvalue::OK);
|
||||
CHECK(serSize == maxSize);
|
||||
CHECK(localPoolIdBuff[0] == 3);
|
||||
// CHECK(localPoolIdBuff[0] == 3);
|
||||
CHECK(lpIds[0] == localSet.localPoolVarUint8.getDataPoolId());
|
||||
CHECK(lpIds[1] == localSet.localPoolVarFloat.getDataPoolId());
|
||||
CHECK(lpIds[2] == localSet.localPoolUint16Vec.getDataPoolId());
|
||||
@ -47,8 +46,8 @@ TEST_CASE("DataSetTest", "[DataSetTest]") {
|
||||
localPoolIdBuffPtr = localPoolIdBuff;
|
||||
serSize = 0;
|
||||
CHECK(localSet.serializeLocalPoolIds(&localPoolIdBuffPtr, &serSize, maxSize,
|
||||
SerializeIF::Endianness::MACHINE, false) == OK);
|
||||
CHECK(serSize == maxSize - sizeof(uint8_t));
|
||||
SerializeIF::Endianness::MACHINE) == OK);
|
||||
CHECK(serSize == maxSize);
|
||||
CHECK(lpIds[0] == localSet.localPoolVarUint8.getDataPoolId());
|
||||
CHECK(lpIds[1] == localSet.localPoolVarFloat.getDataPoolId());
|
||||
CHECK(lpIds[2] == localSet.localPoolUint16Vec.getDataPoolId());
|
||||
|
@ -15,9 +15,9 @@
|
||||
|
||||
using namespace lpool;
|
||||
|
||||
TEST_CASE("Local Pool Manager Tests", "[LocManTest]") {
|
||||
const MessageQueueId_t defaultDestId = 1;
|
||||
const MessageQueueId_t hkDest = defaultDestId;
|
||||
TEST_CASE("Pool Owner and Periodic HK", "[datapool]") {
|
||||
constexpr MessageQueueId_t defaultDestId = 1;
|
||||
constexpr MessageQueueId_t hkDest = defaultDestId;
|
||||
const MessageQueueId_t subscriberId = 2;
|
||||
auto hkReceiver = HkReceiverMock(hkDest);
|
||||
auto queue = MessageQueueMock(3);
|
||||
@ -47,7 +47,7 @@ TEST_CASE("Local Pool Manager Tests", "[LocManTest]") {
|
||||
// the temporal behaviour correctly the HK manager should generate a HK packet
|
||||
// immediately and the periodic helper depends on HK op function calls anyway instead of
|
||||
// using the clock, so we could also just call performHkOperation multiple times
|
||||
REQUIRE(poolOwner.subscribePeriodicHk(true) == returnvalue::OK);
|
||||
REQUIRE(poolOwner.enablePeriodicHk(lpool::testSid0, 30) == returnvalue::OK);
|
||||
REQUIRE(poolOwner.hkHelper.performHkOperation() == returnvalue::OK);
|
||||
// Now HK packet should be sent as message immediately.
|
||||
REQUIRE(poolOwnerMock.wasMessageSent());
|
||||
|
@ -17,8 +17,7 @@ TEST_CASE("LocalPoolVector", "[LocPoolVecTest]") {
|
||||
|
||||
SECTION("BasicTest") {
|
||||
// very basic test.
|
||||
vec_t<uint16_t, 3> testVector =
|
||||
vec_t<uint16_t, 3>(objects::TEST_LOCAL_POOL_OWNER_BASE, lpool::uint16Vec3Id);
|
||||
auto testVector = vec_t<uint16_t, 3>(objects::TEST_LOCAL_POOL_OWNER_BASE, lpool::uint16Vec3Id);
|
||||
REQUIRE(testVector.read() == returnvalue::OK);
|
||||
testVector.value[0] = 5;
|
||||
testVector.value[1] = 232;
|
||||
|
@ -31,10 +31,25 @@ SharedPool *TestPoolOwner::getOptionalSharedPool() { return &sharedPool; }
|
||||
|
||||
ReturnValue_t TestPoolOwner::serializeHkDataset(structure_id_t structureId, uint8_t *buf,
|
||||
size_t maxSize) {
|
||||
return returnvalue::OK;
|
||||
size_t dummy = 0;
|
||||
if (structureId == testSid0) {
|
||||
return set0.serialize(buf, dummy, maxSize, SerializeIF::Endianness::NETWORK);
|
||||
}
|
||||
if (structureId == testSid1) {
|
||||
return set1.serialize(buf, dummy, maxSize, SerializeIF::Endianness::NETWORK);
|
||||
}
|
||||
if (structureId == testSid2) {
|
||||
return set2.serialize(buf, dummy, maxSize, SerializeIF::Endianness::NETWORK);
|
||||
}
|
||||
return returnvalue::FAILED;
|
||||
}
|
||||
|
||||
ReturnValue_t TestPoolOwner::specifyHkDatasets(std::vector<hk::SetSpecification> &setList) {
|
||||
// For the first set, we explicitely associate a set with an ID ourselves.
|
||||
setList.emplace_back(testSid0, set0.getSerializedSize(), 50);
|
||||
// For the other sets, we can use getter functions of the same structure.
|
||||
setList.emplace_back(set1.getStructureId(), set1.getSerializedSize(), 50);
|
||||
setList.emplace_back(set2.getStructureId(), set2.getSerializedSize(), 50);
|
||||
return returnvalue::OK;
|
||||
}
|
||||
|
||||
|
@ -32,16 +32,17 @@ class TestPoolOwner : public SystemObject, public hk::GeneratesPeriodicHkIF {
|
||||
return dynamic_cast<MessageQueueMock&>(queue);
|
||||
}
|
||||
|
||||
ReturnValue_t subscribePeriodicHk(bool enableReporting) {
|
||||
return hkHelper.enablePeriodicPacket(lpool::testSid0, 50);
|
||||
ReturnValue_t enablePeriodicHk(dp::structure_id_t structureId, dur_millis_t frequencyMs) {
|
||||
return hkHelper.enablePeriodicPacket(structureId, frequencyMs);
|
||||
}
|
||||
|
||||
ReturnValue_t reset();
|
||||
|
||||
hk::PeriodicHelper hkHelper;
|
||||
SharedPool sharedPool;
|
||||
LocalPoolTestDataSet set1;
|
||||
StaticTestDataSet set2;
|
||||
Dataset set0;
|
||||
StaticTestDataset set1;
|
||||
TestDataset set2;
|
||||
|
||||
private:
|
||||
PoolEntry<uint8_t> u8PoolEntry = PoolEntry<uint8_t>({0});
|
||||
|
@ -3,6 +3,8 @@
|
||||
#include <fsfw/datapool.h>
|
||||
#include <fsfw/ipc/QueueFactory.h>
|
||||
#include <fsfw/objectmanager/SystemObject.h>
|
||||
#include <fsfw/serialize/SerializableList.h>
|
||||
#include <fsfw/serialize/SerializableListElement.h>
|
||||
|
||||
#include "fsfw/datapool/PoolEntry.h"
|
||||
#include "mock/MessageQueueMock.h"
|
||||
@ -11,6 +13,7 @@
|
||||
namespace lpool {
|
||||
|
||||
using namespace dp;
|
||||
using namespace serialize;
|
||||
|
||||
static constexpr id_t uint8VarId = 0;
|
||||
static constexpr id_t floatVarId = 1;
|
||||
@ -23,9 +26,9 @@ static constexpr uint32_t testSetId1 = 1;
|
||||
static constexpr uint32_t testSetId2 = 2;
|
||||
static constexpr uint8_t dataSetMaxVariables = 10;
|
||||
|
||||
static const auto testSid0 = structure_id_t(objects::TEST_LOCAL_POOL_OWNER_BASE, testSetId0);
|
||||
static const auto testSid1 = structure_id_t(objects::TEST_LOCAL_POOL_OWNER_BASE, testSetId1);
|
||||
static const auto testSid2 = structure_id_t(objects::TEST_LOCAL_POOL_OWNER_BASE, testSetId2);
|
||||
static constexpr auto testSid0 = structure_id_t(objects::TEST_LOCAL_POOL_OWNER_BASE, testSetId0);
|
||||
static constexpr auto testSid1 = structure_id_t(objects::TEST_LOCAL_POOL_OWNER_BASE, testSetId1);
|
||||
static constexpr auto testSid2 = structure_id_t(objects::TEST_LOCAL_POOL_OWNER_BASE, testSetId2);
|
||||
|
||||
static const g_id_t uint8VarGpid = g_id_t(objects::TEST_LOCAL_POOL_OWNER_BASE, uint8VarId);
|
||||
static const g_id_t floatVarGpid = g_id_t(objects::TEST_LOCAL_POOL_OWNER_BASE, floatVarId);
|
||||
@ -33,11 +36,18 @@ static const g_id_t uint32Gpid = g_id_t(objects::TEST_LOCAL_POOL_OWNER_BASE, uin
|
||||
static const g_id_t uint16Vec3Gpid = g_id_t(objects::TEST_LOCAL_POOL_OWNER_BASE, uint16Vec3Id);
|
||||
static const g_id_t uint64Vec2Id = g_id_t(objects::TEST_LOCAL_POOL_OWNER_BASE, int64Vec2Id);
|
||||
|
||||
class StaticTestDataSet : public StaticSharedSet<3> {
|
||||
class Dataset : public List {
|
||||
public:
|
||||
StaticTestDataSet() : StaticSharedSet(lpool::testSid1) {}
|
||||
LE<uint8_t> u8Element{*this};
|
||||
LE<uint16_t> u16Element{*this};
|
||||
LAE<float, 3> floatVec{*this};
|
||||
};
|
||||
|
||||
StaticTestDataSet(SharedPool& sharedPool, uint32_t setId) : StaticSharedSet(sharedPool, setId) {}
|
||||
class StaticTestDataset : public StaticSharedSet<3> {
|
||||
public:
|
||||
StaticTestDataset() : StaticSharedSet(lpool::testSid1) {}
|
||||
|
||||
StaticTestDataset(SharedPool& sharedPool, uint32_t setId) : StaticSharedSet(sharedPool, setId) {}
|
||||
|
||||
u8_t localPoolVarUint8{lpool::uint8VarGpid, this};
|
||||
f32_t localPoolVarFloat{lpool::floatVarGpid, this};
|
||||
@ -46,11 +56,11 @@ class StaticTestDataSet : public StaticSharedSet<3> {
|
||||
private:
|
||||
};
|
||||
|
||||
class LocalPoolTestDataSet : public SharedSet {
|
||||
class TestDataset : public SharedSet {
|
||||
public:
|
||||
LocalPoolTestDataSet() : SharedSet(lpool::testSid2, lpool::dataSetMaxVariables) {}
|
||||
TestDataset() : SharedSet(lpool::testSid2, lpool::dataSetMaxVariables) {}
|
||||
|
||||
LocalPoolTestDataSet(SharedPool& sharedPool, uint32_t setId)
|
||||
TestDataset(SharedPool& sharedPool, uint32_t setId)
|
||||
: SharedSet(sharedPool, setId, lpool::dataSetMaxVariables) {}
|
||||
|
||||
u8_t localPoolVarUint8{lpool::uint8VarGpid, this};
|
||||
|
Reference in New Issue
Block a user