34 auto randAddr = [&rng]() {
36 memcpy(&addr, rng.
randbytes(
sizeof(addr)).data(),
sizeof(addr));
39 memcpy(&port, rng.
randbytes(
sizeof(port)).data(),
sizeof(port));
46 ret.nTime = Now<NodeSeconds>();
51 for (
size_t source_i = 0; source_i <
NUM_SOURCES; ++source_i) {
62 for (
size_t source_i = 0; source_i <
NUM_SOURCES; ++source_i) {
93 const auto& address = addrman.Select();
94 assert(address.first.GetPort() > 0);
105 const auto& addresses = addrman.GetAddr(2500, 23, std::nullopt);
106 assert(addresses.size() > 0);
112 auto markSomeAsGood = [](
AddrMan& addrman) {
113 for (
size_t source_i = 0; source_i <
NUM_SOURCES; ++source_i) {
132 markSomeAsGood(addrman);
static constexpr size_t NUM_SOURCES
static constexpr size_t NUM_ADDRESSES_PER_SOURCE
static void AddrManAdd(benchmark::Bench &bench)
static std::vector< CAddress > g_sources
Stochastic address manager.
Bench & run(char const *benchmarkName, Op &&op)
Repeatedly calls op() based on the configuration, and performs measurements.
bool Add(const std::vector< CAddress > &vAddr, const CNetAddr &source, std::chrono::seconds time_penalty=0s)
Attempt to add one or more addresses to addrman's new table.
A combination of a network address (CNetAddr) and a (TCP) port.
A CService with information about it as peer.
static void AddAddressesToAddrMan(AddrMan &addrman)
static NetGroupManager EMPTY_NETGROUPMAN
static constexpr uint32_t ADDRMAN_CONSISTENCY_CHECK_RATIO
static void AddrManAddThenGood(benchmark::Bench &bench)
static std::vector< std::vector< CAddress > > g_addresses
static void AddrManGetAddr(benchmark::Bench &bench)
static void AddrManSelect(benchmark::Bench &bench)
Main entry point to nanobench's benchmarking facility.
static void CreateAddresses()
static void FillAddrMan(AddrMan &addrman)
std::vector< unsigned char > randbytes(size_t len)
Generate random bytes.