20#include <xrpld/app/misc/HashRouter.h>
22#include <xrpl/basics/chrono.h>
23#include <xrpl/beast/unit_test.h>
33 using namespace std::chrono_literals;
43 BEAST_EXPECT(router.
getFlags(key1) == 11111);
45 BEAST_EXPECT(router.
getFlags(key2) == 22222);
54 BEAST_EXPECT(router.
getFlags(key1) == 11111);
63 BEAST_EXPECT(router.
getFlags(key1) == 11111);
64 BEAST_EXPECT(router.
getFlags(key2) == 0);
70 using namespace std::chrono_literals;
78 BEAST_EXPECT(key1 != key2 && key2 != key3 && key3 != key4);
82 BEAST_EXPECT(router.
getFlags(key1) == 12345);
95 BEAST_EXPECT(router.
getFlags(key1) == 12345);
96 BEAST_EXPECT(router.
getFlags(key2) == 9999);
103 BEAST_EXPECT(router.
getFlags(key2) == 9999);
111 BEAST_EXPECT(router.
getFlags(key1) == 0);
112 BEAST_EXPECT(router.
getFlags(key2) == 9999);
113 BEAST_EXPECT(router.
getFlags(key3) == 2222);
122 BEAST_EXPECT(router.
getFlags(key1) == 7654);
123 BEAST_EXPECT(router.
getFlags(key2) == 9999);
124 BEAST_EXPECT(router.
getFlags(key3) == 2222);
134 BEAST_EXPECT(router.
getFlags(key1) == 0);
135 BEAST_EXPECT(router.
getFlags(key2) == 0);
136 BEAST_EXPECT(router.
getFlags(key3) == 0);
137 BEAST_EXPECT(router.
getFlags(key4) == 7890);
148 using namespace std::chrono_literals;
156 BEAST_EXPECT(key1 != key2 && key2 != key3 && key3 != key4);
162 BEAST_EXPECT(
flags == 0);
169 BEAST_EXPECT(
flags == 0);
176 using namespace std::chrono_literals;
181 BEAST_EXPECT(router.
setFlags(key1, 10));
182 BEAST_EXPECT(!router.
setFlags(key1, 10));
183 BEAST_EXPECT(router.
setFlags(key1, 20));
189 using namespace std::chrono_literals;
198 BEAST_EXPECT(peers && peers->empty());
210 BEAST_EXPECT(peers && peers->size() == 3);
221 BEAST_EXPECT(peers && peers->size() == 2);
226 BEAST_EXPECT(peers && peers->size() == 0);
232 using namespace std::chrono_literals;
Routing table for objects identified by hash.
std::optional< std::set< PeerShortID > > shouldRelay(uint256 const &key)
Determines whether the hashed item should be relayed.
bool shouldProcess(uint256 const &key, PeerShortID peer, int &flags, std::chrono::seconds tx_interval)
int getFlags(uint256 const &key)
bool addSuppressionPeer(uint256 const &key, PeerShortID peer)
bool setFlags(uint256 const &key, int flags)
Set the flags on a hash.
void addSuppression(uint256 const &key)
void run() override
Runs the suite.
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Stopwatch & stopwatch()
Returns an instance of a wall clock.