1#include <test/shamap/common.h>
2#include <test/unit_test/SuiteJournal.h>
4#include <xrpl/basics/UnorderedContainers.h>
5#include <xrpl/basics/contract.h>
6#include <xrpl/basics/random.h>
7#include <xrpl/beast/unit_test.h>
8#include <xrpl/beast/xor_shift_engine.h>
9#include <xrpl/protocol/digest.h>
10#include <xrpl/shamap/SHAMap.h>
11#include <xrpl/shamap/SHAMapSyncFilter.h>
33 Throw<std::runtime_error>(
"missing node");
57 Map::iterator it =
mMap.
find(nodeHash);
70 boost::intrusive_ptr<Item>
74 for (
int d = 0; d < 3; ++d)
75 s.
add32(ripple::rand_int<std::uint32_t>(r));
154BEAST_DEFINE_TESTSUITE(FetchPack, shamap,
ripple);
A generic endpoint for log messages.
void pass()
Record a successful test condition.
uint256 const & as_uint256() const
A SHAMap is both a radix tree with a fan-out of 16 and a Merkle tree.
bool addItem(SHAMapNodeType type, boost::intrusive_ptr< SHAMapItem const > item)
Slice slice() const noexcept
uint256 getSHA512Half() const
void add_random_items(std::size_t n, Table &t, beast::xor_shift_engine &r)
boost::intrusive_ptr< Item > make_random_item(beast::xor_shift_engine &r)
void on_fetch(Map &map, SHAMapHash const &hash, Blob const &blob)
void run() override
Runs the suite.
A namespace for easy access to logging severity values.
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
std::enable_if_t< std::is_same< T, char >::value||std::is_same< T, unsigned char >::value, Slice > makeSlice(std::array< T, N > const &a)
boost::intrusive_ptr< SHAMapItem > make_shamapitem(uint256 const &tag, Slice data)
sha512_half_hasher::result_type sha512Half(Args const &... args)
Returns the SHA512-Half of a series of objects.
void operator()(std::uint32_t refNum) const
std::optional< Blob > getNode(SHAMapHash const &nodeHash) const override
TestFilter(Map &map, beast::Journal journal)
void gotNode(bool fromFilter, SHAMapHash const &nodeHash, std::uint32_t ledgerSeq, Blob &&nodeData, SHAMapNodeType type) const override