Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions Os/Queue.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -146,4 +146,11 @@
return s_mutex;
}

#if FW_QUEUE_REGISTRATION
void Queue::setRegistry(QueueRegistry* registry) {
ScopeLock lock(Queue::getStaticMutex());
Queue::s_queueRegistry = registry;
}
#endif

} // namespace Os
13 changes: 13 additions & 0 deletions Os/test/ut/queue/CommonTests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,12 @@ U64 Tester::QueueMessage::order_counter = 0;

PriorityCompare const Tester::QueueMessageComparer::HELPER = PriorityCompare();

Tester::Tester() {
#if FW_QUEUE_REGISTRATION
Os::Queue::setRegistry(this);
#endif
}

Os::QueueInterface::Status Tester::shadow_create(FwSizeType depth, FwSizeType messageSize) {
Os::QueueInterface::Status status = Os::QueueInterface::ALREADY_CREATED;
if (not this->shadow.created) {
Expand Down Expand Up @@ -110,6 +116,10 @@ void Tester::shadow_receive_unblock() {
this->shadow.receive_block.priority = nullptr;
}

void Tester::registerQueue(Os::Queue* q) {
this->m_all_queues.push_back(q);
}

} // namespace Queue
} // namespace Test
} // namespace Os
Expand Down Expand Up @@ -229,6 +239,9 @@ TEST(BasicRules, Create) {
create_rule.action(tester);
// Repetitive create
create_rule.action(tester);
#if FW_QUEUE_REGISTRATION
EXPECT_GT(tester.m_all_queues.size(), 0) << "No queues were registered.";
#endif
}

TEST(BasicRules, Send) {
Expand Down
9 changes: 7 additions & 2 deletions Os/test/ut/queue/RulesHeaders.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,10 @@ namespace Queue {

constexpr FwSizeType DEPTH_BOUND = 100000;

struct Tester {
struct Tester : public Os::QueueRegistry {
public:
//! Constructor
Tester() = default;
Tester();
virtual ~Tester() { queue.teardown(); };

struct QueueMessage {
Expand Down Expand Up @@ -72,6 +72,7 @@ struct Tester {
};
QueueState shadow;
Os::Queue queue;
std::vector<Os::Queue*> m_all_queues;

//! Shadow is created
bool is_shadow_created() const {
Expand Down Expand Up @@ -119,6 +120,10 @@ struct Tester {
//! Complete a previous blocking queue receive
void shadow_receive_unblock();


//! Register a queue with the registry
void registerQueue(Os::Queue* q) override;

public:
#include "QueueRules.hpp"
};
Expand Down
Loading