Skip to content

Commit 3bd83e2

Browse files
committed
fuzz: addrman fuzz tests: override-able check ratio
Make it possible to override from the command line (without recompiling) the addrman check ratio in addrman fuzz tests instead of hardcoding it to 0: ``` FUZZ=addrman ./src/test/fuzz/fuzz --checkaddrman=5 ```
1 parent 46b0fe7 commit 3bd83e2

File tree

1 file changed

+15
-3
lines changed

1 file changed

+15
-3
lines changed

src/test/fuzz/addrman.cpp

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,25 +11,37 @@
1111
#include <test/fuzz/FuzzedDataProvider.h>
1212
#include <test/fuzz/fuzz.h>
1313
#include <test/fuzz/util.h>
14+
#include <test/util/setup_common.h>
1415
#include <time.h>
1516
#include <util/asmap.h>
17+
#include <util/system.h>
1618

1719
#include <cassert>
1820
#include <cstdint>
1921
#include <optional>
2022
#include <string>
2123
#include <vector>
2224

25+
namespace {
26+
const BasicTestingSetup* g_setup;
27+
28+
int32_t GetCheckRatio()
29+
{
30+
return std::clamp<int32_t>(g_setup->m_node.args->GetIntArg("-checkaddrman", 0), 0, 1000000);
31+
}
32+
} // namespace
33+
2334
void initialize_addrman()
2435
{
25-
SelectParams(CBaseChainParams::REGTEST);
36+
static const auto testing_setup = MakeNoLogFileContext<>(CBaseChainParams::REGTEST);
37+
g_setup = testing_setup.get();
2638
}
2739

2840
FUZZ_TARGET_INIT(data_stream_addr_man, initialize_addrman)
2941
{
3042
FuzzedDataProvider fuzzed_data_provider{buffer.data(), buffer.size()};
3143
CDataStream data_stream = ConsumeDataStream(fuzzed_data_provider);
32-
AddrMan addr_man(/*asmap=*/std::vector<bool>(), /*deterministic=*/false, /*consistency_check_ratio=*/0);
44+
AddrMan addr_man{/*asmap=*/std::vector<bool>(), /*deterministic=*/false, GetCheckRatio()};
3345
try {
3446
ReadFromStream(addr_man, data_stream);
3547
} catch (const std::exception&) {
@@ -113,7 +125,7 @@ class AddrManDeterministic : public AddrMan
113125
{
114126
public:
115127
explicit AddrManDeterministic(std::vector<bool> asmap, FuzzedDataProvider& fuzzed_data_provider)
116-
: AddrMan(std::move(asmap), /*deterministic=*/true, /*consistency_check_ratio=*/0)
128+
: AddrMan{std::move(asmap), /*deterministic=*/true, GetCheckRatio()}
117129
{
118130
WITH_LOCK(m_impl->cs, m_impl->insecure_rand = FastRandomContext{ConsumeUInt256(fuzzed_data_provider)});
119131
}

0 commit comments

Comments
 (0)