20#include <xrpld/overlay/Message.h>
21#include <xrpld/overlay/detail/TrafficCount.h>
23#include <xrpl/beast/unit_test.h>
24#include <xrpl/protocol/messages.h>
39 protocol::TMPing message;
40 message.set_type(protocol::TMPing::ptPING);
49 message,
static_cast<protocol::MessageType
>(99),
false);
72 auto const counts = m_traffic.
getCounts();
73 std::for_each(counts.begin(), counts.end(), [&](
auto const& pair) {
74 for (auto i = 0; i < tc.messageCount; ++i)
75 m_traffic.addCount(pair.first, tc.inbound, tc.size);
78 auto const counts_new = m_traffic.
getCounts();
80 counts_new.begin(), counts_new.end(), [&](
auto const& pair) {
82 pair.second.bytesIn.load() == tc.expectedBytesIn);
84 pair.second.bytesOut.load() == tc.expectedBytesOut);
86 pair.second.messagesIn.load() == tc.expectedMessagesIn);
88 pair.second.messagesOut.load() ==
89 tc.expectedMessagesOut);
93 auto const testcases = {
95 .
name =
"zero-counts",
100 .expectedBytesOut = 0,
101 .expectedMessagesIn = 0,
102 .expectedMessagesOut = 0,
105 .
name =
"inbound-counts",
109 .expectedBytesIn = 100,
110 .expectedBytesOut = 0,
111 .expectedMessagesIn = 10,
112 .expectedMessagesOut = 0,
115 .
name =
"outbound-counts",
119 .expectedBytesIn = 0,
120 .expectedBytesOut = 100,
121 .expectedMessagesIn = 0,
122 .expectedMessagesOut = 10,
126 for (
auto const& tc : testcases)
154BEAST_DEFINE_TESTSUITE(traffic_count, overlay,
ripple);
testcase_t testcase
Memberspace for declaring test cases.
TrafficCount is used to count ingress and egress wire bytes and number of messages.
auto const & getCounts() const
An up-to-date copy of all the counters.
static category categorize(::google::protobuf::Message const &message, protocol::MessageType type, bool inbound)
Given a protocol message, determine which traffic category it belongs to.
static std::string to_string(category cat)
void run() override
Runs the suite.
traffic_count_test()=default
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
std::uint64_t expectedMessagesIn
std::uint64_t expectedBytesIn
std::uint64_t expectedBytesOut
std::uint64_t expectedMessagesOut