3#include <xrpld/app/consensus/RCLValidations.h> 
    4#include <xrpld/app/ledger/Ledger.h> 
    6#include <xrpl/basics/base_uint.h> 
    7#include <xrpl/beast/unit_test.h> 
   17        testcase(
"Change validation trusted status");
 
   24            [&](
STValidation& v) { v.setFieldU32(sfLedgerSequence, 123456); });
 
   26        BEAST_EXPECT(v->isTrusted());
 
   28        BEAST_EXPECT(!v->isTrusted());
 
   31        BEAST_EXPECT(!rcv.trusted());
 
   33        BEAST_EXPECT(rcv.trusted());
 
   35        BEAST_EXPECT(!rcv.trusted());
 
 
   41        testcase(
"RCLValidatedLedger ancestry");
 
   49        Seq 
const maxAncestors = 256;
 
   63            env.
app().getNodeFamily());
 
   65        for (
auto i = 0; i < (2 * maxAncestors + 1); ++i)
 
   69            next->updateSkipList();
 
   75        Seq 
const diverge = history.
size() / 2;
 
   79        using namespace std::chrono_literals;
 
   81        prev = altHistory.
back();
 
   82        bool forceHash = 
true;
 
   83        while (altHistory.
size() < history.
size())
 
   88            next->updateSkipList();
 
  105            BEAST_EXPECT(a.seq() == Seq{0});
 
  106            BEAST_EXPECT(a[Seq{0}] == ID{0});
 
  107            BEAST_EXPECT(a.minSeq() == Seq{0});
 
  114            BEAST_EXPECT(a.seq() == ledger->info().seq);
 
  115            BEAST_EXPECT(a.minSeq() == a.seq() - maxAncestors);
 
  117            for (Seq s = a.seq(); s > 0; s--)
 
  120                    BEAST_EXPECT(a[s] == history[s - 1]->info().hash);
 
  122                    BEAST_EXPECT(a[s] == ID{0});
 
  132            for (
auto ledger : {history.
back(), history[maxAncestors - 1]})
 
  142            for (Seq s = a.seq(); s > 0; s--)
 
  147                    BEAST_EXPECT(
mismatch(a, b) == b.seq() + 1);
 
  148                    BEAST_EXPECT(
mismatch(b, a) == b.seq() + 1);
 
  152                    BEAST_EXPECT(
mismatch(a, b) == Seq{1});
 
  153                    BEAST_EXPECT(
mismatch(b, a) == Seq{1});
 
  160            for (Seq s = 1; s < history.
size(); ++s)
 
  165                BEAST_EXPECT(a.seq() == b.seq());
 
  168                    BEAST_EXPECT(a[a.seq()] == b[b.seq()]);
 
  169                    BEAST_EXPECT(
mismatch(a, b) == a.seq() + 1);
 
  170                    BEAST_EXPECT(
mismatch(b, a) == a.seq() + 1);
 
  174                    BEAST_EXPECT(a[a.seq()] != b[b.seq()]);
 
  175                    BEAST_EXPECT(
mismatch(a, b) == diverge + 1);
 
  176                    BEAST_EXPECT(
mismatch(b, a) == diverge + 1);
 
  184            for (Seq offset = diverge / 2; offset < 3 * diverge / 2; ++offset)
 
  187                if (offset <= diverge)
 
  189                    BEAST_EXPECT(
mismatch(a, b) == b.seq() + 1);
 
  193                    BEAST_EXPECT(
mismatch(a, b) == diverge + 1);
 
 
  202        testcase(
"RCLValidatedLedger LedgerTrie");
 
  215        Seq 
const maxAncestors = 256;
 
  226            env.
app().getNodeFamily());
 
  228        for (
auto i = 0; i < (maxAncestors + 10); ++i)
 
  232            next->updateSkipList();
 
  258        BEAST_EXPECT(trie.
remove(ledg_258, 3));
 
 
 
testcase_t testcase
Memberspace for declaring test cases.
 
virtual TimeKeeper & timeKeeper()=0
 
Ancestry trie of ledgers.
 
std::uint32_t tipSupport(Ledger const &ledger) const
Return count of tip support for the specific ledger.
 
void insert(Ledger const &ledger, std::uint32_t count=1)
Insert and/or increment the support for the given ledger.
 
std::optional< SpanTip< Ledger > > getPreferred(Seq const largestIssued) const
Return the preferred ledger ID.
 
std::uint32_t branchSupport(Ledger const &ledger) const
Return the count of branch support for the specific ledger.
 
bool remove(Ledger const &ledger, std::uint32_t count=1)
Decrease support for a ledger, removing and compressing if possible.
 
Wraps a ledger instance for use in generic Validations LedgerTrie.
 
Wrapper over STValidation for generic Validation code.
 
time_point closeTime() const
Returns the predicted close time, in network time.
 
time_point now() const override
Returns the current time.
 
void testRCLValidatedLedger()
 
void run() override
Runs the suite.
 
void testLedgerTrieRCLValidatedLedger()
 
A transaction testing environment.
 
beast::Journal const journal
 
ManualTimeKeeper & timeKeeper()
 
Keylet const & fees() noexcept
The (fixed) index of the object containing the ledger fees.
 
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
 
RCLValidatedLedger::Seq mismatch(RCLValidatedLedger const &a, RCLValidatedLedger const &b)
 
NodeID calcNodeID(PublicKey const &)
Calculate the 160-bit node ID from a node public key.
 
create_genesis_t const create_genesis
 
std::pair< PublicKey, SecretKey > randomKeyPair(KeyType type)
Create a key pair using secure random numbers.