20 #include <ripple/basics/BasicConfig.h>
21 #include <ripple/overlay/Cluster.h>
22 #include <ripple/overlay/ClusterNode.h>
23 #include <ripple/protocol/SecretKey.h>
24 #include <test/jtx/TestSuite.h>
25 #include <test/unit_test/SuiteJournal.h>
42 auto cluster = std::make_unique <Cluster> (
journal_);
44 for (
auto const& n : nodes)
45 cluster->update (n,
"Test");
64 while (network.
size () != 128)
68 testcase (
"Membership: Empty cluster");
72 for (
auto const& n : network)
73 BEAST_EXPECT(!c->member (n));
77 testcase (
"Membership: Non-empty cluster and none present");
80 while (cluster.
size () != 32)
85 for (
auto const& n : network)
86 BEAST_EXPECT(!c->member (n));
90 testcase (
"Membership: Non-empty cluster and some present");
95 while (cluster.
size () != 32)
100 for (
auto const& n : cluster)
101 BEAST_EXPECT(c->member (n));
103 for (
auto const& n : network)
106 cluster.begin (), cluster.end (), n);
107 BEAST_EXPECT(
static_cast<bool>(c->member (n)) ==
108 (found != cluster.end ()));
113 testcase (
"Membership: Non-empty cluster and all present");
118 auto c =
create (cluster);
120 for (
auto const& n : cluster)
121 BEAST_EXPECT(c->member (n));
123 for (
auto const& n : network)
126 cluster.begin (), cluster.end (), n);
127 BEAST_EXPECT(
static_cast<bool>(c->member (n)) ==
128 (found != cluster.end ()));
136 testcase (
"Updating");
148 BEAST_EXPECT(c->update (node,
"", load, tick));
150 auto member = c->member (node);
151 BEAST_EXPECT(
static_cast<bool>(member));
152 BEAST_EXPECT(member->empty ());
156 BEAST_EXPECT(! c->update (node, name, load, tick));
158 auto member = c->member (node);
159 BEAST_EXPECT(
static_cast<bool>(member));
160 BEAST_EXPECT(member->empty ());
163 using namespace std::chrono_literals;
167 BEAST_EXPECT(c->update (node, name, load, tick));
169 auto member = c->member (node);
170 BEAST_EXPECT(
static_cast<bool>(member));
171 BEAST_EXPECT(member->compare(name) == 0);
176 BEAST_EXPECT(c->update (node,
"", load, tick));
178 auto member = c->member (node);
179 BEAST_EXPECT(
static_cast<bool>(member));
180 BEAST_EXPECT(member->compare(name) == 0);
185 BEAST_EXPECT(c->update (node,
"test", load, tick));
187 auto member = c->member (node);
188 BEAST_EXPECT(
static_cast<bool>(member));
189 BEAST_EXPECT(member->compare(
"test") == 0);
196 testcase (
"Config Load");
198 auto c = std::make_unique <Cluster> (
journal_);
203 while (network.
size () != 8)
208 char const* comment =
nullptr)
223 BEAST_EXPECT(c->load (s1));
224 BEAST_EXPECT(c->size() == 0);
227 s1.
append (format (network[0]));
228 s1.
append (format (network[1],
" "));
229 s1.
append (format (network[2],
" Comment"));
230 s1.
append (format (network[3],
" Multi Word Comment"));
231 s1.
append (format (network[4],
" Leading Whitespace"));
232 s1.
append (format (network[5],
" Trailing Whitespace "));
233 s1.
append (format (network[6],
" Leading & Trailing Whitespace "));
234 s1.
append (format (network[7],
" Leading, Trailing & Internal Whitespace "));
236 BEAST_EXPECT(c->load (s1));
238 for (
auto const& n : network)
239 BEAST_EXPECT(c->member (n));
243 s2.
append (
"NotAPublicKey");
244 BEAST_EXPECT(!c->load (s2));
247 s3.
append (format (network[0],
"!"));
248 BEAST_EXPECT(!c->load (s3));
251 s4.
append (format (network[0],
"! Comment"));
252 BEAST_EXPECT(!c->load (s4));
260 s5.
append (format (node1,
"XXX"));
261 s5.
append (format (node2));
262 BEAST_EXPECT(!c->load (s5));
263 BEAST_EXPECT(!c->member (node1));
264 BEAST_EXPECT(!c->member (node2));