5 #include <gtest/gtest.h> 7 #include "../event_tracer.hpp" 8 #include "../../helpers.hpp" 9 #include "../memory_storage_backend.hpp" 11 TEST(dynamic_node_id_server_ClusterManager, Initialization)
15 const unsigned MaxClusterSize =
16 uavcan::protocol::dynamic_node_id::server::Discovery::FieldTypes::known_nodes::MaxSize;
28 Log log(storage, tracer);
40 ASSERT_EQ(
"5", storage.
get(
"cluster_size"));
53 Log log(storage, tracer);
63 storage.
set(
"cluster_size",
"5");
70 TEST(dynamic_node_id_server_ClusterManager, OneServer)
79 Log log(storage, tracer);
90 ASSERT_LE(0, sub.
start());
91 ASSERT_LE(0, pub.
init());
106 uavcan::protocol::dynamic_node_id::server::Discovery msg;
107 msg.configured_cluster_size = 2;
108 msg.known_nodes.push_back(2U);
120 msg = uavcan::protocol::dynamic_node_id::server::Discovery();
121 msg.configured_cluster_size = 1;
128 ASSERT_EQ(1, sub.
collector.
msg->configured_cluster_size);
140 ASSERT_EQ(1, sub.
collector.
msg->configured_cluster_size);
147 TEST(dynamic_node_id_server_ClusterManager, ThreeServers)
156 Log log(storage, tracer);
167 ASSERT_LE(0, sub.
start());
168 ASSERT_LE(0, pub.
init());
185 ASSERT_EQ(3, sub.
collector.
msg->configured_cluster_size);
194 ASSERT_EQ(3, sub.
collector.
msg->configured_cluster_size);
202 uavcan::protocol::dynamic_node_id::server::Discovery msg;
203 msg.configured_cluster_size = 3;
204 msg.known_nodes.push_back(2U);
209 ASSERT_EQ(3, sub.
collector.
msg->configured_cluster_size);
218 msg.known_nodes.push_back(127U);
223 ASSERT_EQ(3, sub.
collector.
msg->configured_cluster_size);
uint64_t internal_failure_count
void resetAllServerIndices()
uint8_t getClusterSize() const
uint8_t getNumKnownServers() const
void decrementServerNextIndex(NodeID server_node_id)
void incrementServerNextIndexBy(NodeID server_node_id, Log::Index increment)
uint8_t getQuorumSize() const
int init(const uint8_t init_cluster_size, const TransferPriority priority)
virtual String get(const String &key) const
Log::Index getServerNextIndex(NodeID server_node_id) const
unsigned getNumKeys() const
void setServerMatchIndex(NodeID server_node_id, Log::Index match_index)
TEST(dynamic_node_id_server_ClusterManager, Initialization)
NodeID getRemoteServerNodeIDAtIndex(uint8_t index) const
static GlobalDataTypeRegistry & instance()
std::unique_ptr< DataType > msg
Index getLastIndex() const
static MonotonicDuration fromMSec(int64_t ms)
bool isClusterDiscovered() const
int spinBoth(uavcan::MonotonicDuration duration)
virtual void set(const String &key, const String &value)
static const TransferPriority OneHigherThanLowest
Log::Index getServerMatchIndex(NodeID server_node_id) const
int broadcast(const DataType &message)