20 #include <ripple/app/consensus/RCLValidations.h>
21 #include <ripple/app/ledger/Ledger.h>
22 #include <ripple/basics/Log.h>
23 #include <ripple/ledger/View.h>
24 #include <ripple/beast/unit_test.h>
36 testcase(
"Change validation trusted status");
38 auto v = std::make_shared<STValidation>(
50 BEAST_EXPECT(v->isTrusted());
52 BEAST_EXPECT(!v->isTrusted());
55 BEAST_EXPECT(!rcv.trusted());
57 BEAST_EXPECT(rcv.trusted());
59 BEAST_EXPECT(!rcv.trusted());
65 testcase(
"RCLValidatedLedger ancestry");
74 Seq
const maxAncestors = 256;
84 auto prev = std::make_shared<Ledger const>(
88 for (
auto i = 0; i < (2*maxAncestors + 1); ++i)
90 auto next = std::make_shared<Ledger>(
93 next->updateSkipList();
99 Seq
const diverge = history.
size()/2;
103 using namespace std::chrono_literals;
105 prev = altHistory.
back();
106 bool forceHash =
true;
107 while(altHistory.
size() < history.
size())
109 auto next = std::make_shared<Ledger>(
113 next->updateSkipList();
116 next->setImmutable(config);
130 BEAST_EXPECT(a.seq() == Seq{0});
131 BEAST_EXPECT(a[Seq{0}] == ID{0});
132 BEAST_EXPECT(a.minSeq() == Seq{0});
139 BEAST_EXPECT(a.seq() == ledger->info().seq);
141 a.minSeq() == a.seq() - maxAncestors);
143 for(Seq s = a.seq(); s > 0; s--)
146 BEAST_EXPECT(a[s] == history[s-1]->info().hash);
148 BEAST_EXPECT(a[s] == ID{0});
158 for (
auto ledger : {history.
back(),
159 history[maxAncestors - 1]})
169 for(Seq s = a.seq(); s > 0; s--)
174 BEAST_EXPECT(
mismatch(a, b) == b.seq() + 1);
175 BEAST_EXPECT(
mismatch(b, a) == b.seq() + 1);
179 BEAST_EXPECT(
mismatch(a, b) == Seq{1});
180 BEAST_EXPECT(
mismatch(b, a) == Seq{1});
188 for(Seq s = 1; s < history.
size(); ++s)
193 BEAST_EXPECT(a.seq() == b.seq());
196 BEAST_EXPECT(a[a.seq()] == b[b.seq()]);
197 BEAST_EXPECT(
mismatch(a,b) == a.seq() + 1);
198 BEAST_EXPECT(
mismatch(b,a) == a.seq() + 1);
202 BEAST_EXPECT(a[a.seq()] != b[b.seq()]);
203 BEAST_EXPECT(
mismatch(a,b) == diverge + 1);
204 BEAST_EXPECT(
mismatch(b,a) == diverge + 1);
212 for(Seq offset = diverge/2; offset < 3*diverge/2; ++offset)
215 if(offset <= diverge)
217 BEAST_EXPECT(
mismatch(a,b) == b.seq() + 1);
221 BEAST_EXPECT(
mismatch(a,b) == diverge + 1);
230 testcase(
"RCLValidatedLedger LedgerTrie");
244 Seq
const maxAncestors = 256;
251 auto prev = std::make_shared<Ledger const>(
254 for (
auto i = 0; i < (maxAncestors + 10); ++i)
256 auto next = std::make_shared<Ledger>(
258 next->updateSkipList();
285 trie.
remove(ledg_258, 3));