5 #include <gtest/gtest.h>
7 #include "../event_tracer.hpp"
8 #include "../../helpers.hpp"
9 #include "../memory_storage_backend.hpp"
15 TEST(dynamic_node_id_server_Log, Initialization)
26 ASSERT_LE(0, log.
init());
31 ASSERT_EQ(uavcan::protocol::dynamic_node_id::server::Entry::FieldTypes::unique_id(),
37 Log log(storage, tracer);
39 storage.
set(
"log_last_index",
"0");
40 ASSERT_LE(-uavcan::ErrFailure, log.
init());
43 storage.
set(
"log0_term",
"0");
44 storage.
set(
"log0_unique_id",
"00000000000000000000000000000000");
45 storage.
set(
"log0_node_id",
"0");
46 ASSERT_LE(0, log.
init());
54 Log log(storage, tracer);
56 storage.
set(
"log_last_index",
"foobar");
57 ASSERT_LE(-uavcan::ErrFailure, log.
init());
59 storage.
set(
"log_last_index",
"128");
60 ASSERT_LE(-uavcan::ErrFailure, log.
init());
62 storage.
set(
"log_last_index",
"0");
63 ASSERT_LE(-uavcan::ErrFailure, log.
init());
66 storage.
set(
"log0_term",
"0");
67 storage.
set(
"log0_unique_id",
"00000000000000000000000000000000");
68 storage.
set(
"log0_node_id",
"128");
69 ASSERT_LE(-uavcan::ErrFailure, log.
init());
77 Log log(storage, tracer);
79 storage.
set(
"log_last_index",
"1");
80 storage.
set(
"log0_term",
"0");
81 storage.
set(
"log0_unique_id",
"00000000000000000000000000000000");
82 storage.
set(
"log0_node_id",
"0");
83 storage.
set(
"log1_term",
"1");
84 storage.
set(
"log1_unique_id",
"0123456789abcdef0123456789abcdef");
85 storage.
set(
"log1_node_id",
"127");
87 ASSERT_LE(0, log.
init());
93 ASSERT_EQ(uavcan::protocol::dynamic_node_id::server::Entry::FieldTypes::unique_id(),
98 uavcan::protocol::dynamic_node_id::server::Entry::FieldTypes::unique_id uid;
107 uavcan::copy(uid.begin(), uid.begin() + 8, uid.begin() + 8);
113 TEST(dynamic_node_id_server_Log, Append)
119 Log log(storage, tracer);
122 ASSERT_LE(0, log.
init());
129 ASSERT_EQ(
"0", storage.
get(
"log_last_index"));
130 ASSERT_EQ(
"0", storage.
get(
"log0_term"));
131 ASSERT_EQ(
"00000000000000000000000000000000", storage.
get(
"log0_unique_id"));
132 ASSERT_EQ(
"0", storage.
get(
"log0_node_id"));
137 uavcan::protocol::dynamic_node_id::server::Entry entry;
140 entry.unique_id[0] = 1;
141 ASSERT_LE(0, log.
append(entry));
143 ASSERT_EQ(
"1", storage.
get(
"log_last_index"));
144 ASSERT_EQ(
"1", storage.
get(
"log1_term"));
145 ASSERT_EQ(
"01000000000000000000000000000000", storage.
get(
"log1_unique_id"));
146 ASSERT_EQ(
"1", storage.
get(
"log1_node_id"));
160 entry.unique_id[0] = 2;
161 ASSERT_GT(0, log.
append(entry));
174 ASSERT_LE(0, log.
append(entry));
178 entry.node_id =
uint8_t(entry.node_id + 1U);
179 entry.unique_id[0] =
uint8_t(entry.unique_id[0] + 1U);
182 ASSERT_GT(0, log.
append(entry));
188 TEST(dynamic_node_id_server_Log, Remove)
194 Log log(storage, tracer);
199 uavcan::protocol::dynamic_node_id::server::Entry entry;
202 entry.unique_id[0] = 1;
206 ASSERT_LE(0, log.
append(entry));
210 entry.node_id =
uint8_t(entry.node_id + 1U);
211 entry.unique_id[0] =
uint8_t(entry.unique_id[0] + 1U);
232 ASSERT_EQ(
"59", storage.
get(
"log_last_index"));
236 ASSERT_EQ(
"30", storage.
get(
"log_last_index"));
240 ASSERT_EQ(
"0", storage.
get(
"log_last_index"));