bench: add coverage for addrman select with network parameter
to evaluate the worst case performance with the network parameter passed through, fill the new table with addresses then add a singular I2P address to retrieve Co-authored-by: Martin Zumsande <mzumsande@gmail.com>
This commit is contained in:
1 parent
22a4d1489c
commit
9b91aae085
1 file changed
+28
@@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
#include <addrman.h>
|
#include <addrman.h>
|
||||||
#include <bench/bench.h>
|
#include <bench/bench.h>
|
||||||
|
#include <netbase.h>
|
||||||
#include <netgroup.h>
|
#include <netgroup.h>
|
||||||
#include <random.h>
|
#include <random.h>
|
||||||
#include <util/check.h>
|
#include <util/check.h>
|
||||||
@@ -71,6 +72,13 @@ static void FillAddrMan(AddrMan& addrman)
|
|||||||
AddAddressesToAddrMan(addrman);
|
AddAddressesToAddrMan(addrman);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static CNetAddr ResolveIP(const std::string& ip)
|
||||||
|
{
|
||||||
|
CNetAddr addr;
|
||||||
|
LookupHost(ip, addr, false);
|
||||||
|
return addr;
|
||||||
|
}
|
||||||
|
|
||||||
/* Benchmarks */
|
/* Benchmarks */
|
||||||
|
|
||||||
static void AddrManAdd(benchmark::Bench& bench)
|
static void AddrManAdd(benchmark::Bench& bench)
|
||||||
@@ -95,6 +103,25 @@ static void AddrManSelect(benchmark::Bench& bench)
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void AddrManSelectByNetwork(benchmark::Bench& bench)
|
||||||
|
{
|
||||||
|
AddrMan addrman{EMPTY_NETGROUPMAN, /*deterministic=*/false, ADDRMAN_CONSISTENCY_CHECK_RATIO};
|
||||||
|
|
||||||
|
// add single I2P address to new table
|
||||||
|
CService i2p_service;
|
||||||
|
i2p_service.SetSpecial("udhdrtrcetjm5sxzskjyr5ztpeszydbh4dpl3pl4utgqqw2v4jna.b32.i2p");
|
||||||
|
CAddress i2p_address(i2p_service, NODE_NONE);
|
||||||
|
i2p_address.nTime = Now<NodeSeconds>();
|
||||||
|
CNetAddr source = ResolveIP("252.2.2.2");
|
||||||
|
addrman.Add({i2p_address}, source);
|
||||||
|
|
||||||
|
FillAddrMan(addrman);
|
||||||
|
|
||||||
|
bench.run([&] {
|
||||||
|
(void)addrman.Select(/*new_only=*/false, NET_I2P);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
static void AddrManGetAddr(benchmark::Bench& bench)
|
static void AddrManGetAddr(benchmark::Bench& bench)
|
||||||
{
|
{
|
||||||
AddrMan addrman{EMPTY_NETGROUPMAN, /*deterministic=*/false, ADDRMAN_CONSISTENCY_CHECK_RATIO};
|
AddrMan addrman{EMPTY_NETGROUPMAN, /*deterministic=*/false, ADDRMAN_CONSISTENCY_CHECK_RATIO};
|
||||||
@@ -135,5 +162,6 @@ static void AddrManAddThenGood(benchmark::Bench& bench)
|
|||||||
|
|
||||||
BENCHMARK(AddrManAdd, benchmark::PriorityLevel::HIGH);
|
BENCHMARK(AddrManAdd, benchmark::PriorityLevel::HIGH);
|
||||||
BENCHMARK(AddrManSelect, benchmark::PriorityLevel::HIGH);
|
BENCHMARK(AddrManSelect, benchmark::PriorityLevel::HIGH);
|
||||||
|
BENCHMARK(AddrManSelectByNetwork, benchmark::PriorityLevel::HIGH);
|
||||||
BENCHMARK(AddrManGetAddr, benchmark::PriorityLevel::HIGH);
|
BENCHMARK(AddrManGetAddr, benchmark::PriorityLevel::HIGH);
|
||||||
BENCHMARK(AddrManAddThenGood, benchmark::PriorityLevel::HIGH);
|
BENCHMARK(AddrManAddThenGood, benchmark::PriorityLevel::HIGH);
|
||||||
Reference in new issue
Block a user