Skip to content

Commit 713314a

Browse files
committed
fuzz: Consolidate fuzzing TestingSetup initialization
Previously, the {Basic,}TestingSetup for fuzzers were set up in many ways: 1. Calling InitializeFuzzingContext, which implicitly constructs a static const BasicTestingSetup 2. Directly constructing a static const BasicTestingSetup in the initialize_* function 3. Directly constructing a static TestingSetup and reproducing the initialization arguments (I'm assuming because InitializeFuzzingContext only initializes a BasicTestingSetup) The new, relatively-simple MakeFuzzingContext function allows us to consolidate these methods of initialization by being flexible enough to be used in all situations. It: 1. Is templated so that we can choose to initialize any of the *TestingSetup classes 2. Has sane defaults which are often used in fuzzers but are also easily overridable 3. Returns a unique_ptr, explicitly transferring ownership to the caller to deal with according to its situation
1 parent f91587f commit 713314a

11 files changed

+25
-26
lines changed

src/test/fuzz/banman.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ int64_t ConsumeBanTimeOffset(FuzzedDataProvider& fuzzed_data_provider) noexcept
2626

2727
void initialize_banman()
2828
{
29-
InitializeFuzzingContext();
29+
static const auto testing_setup = MakeFuzzingContext<>();
3030
}
3131

3232
FUZZ_TARGET_INIT(banman, initialize_banman)

src/test/fuzz/connman.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
void initialize_connman()
1919
{
20-
InitializeFuzzingContext();
20+
static const auto testing_setup = MakeFuzzingContext<>();
2121
}
2222

2323
FUZZ_TARGET_INIT(connman, initialize_connman)

src/test/fuzz/data_stream.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
void initialize_data_stream_addr_man()
1515
{
16-
InitializeFuzzingContext();
16+
static const auto testing_setup = MakeFuzzingContext<>();
1717
}
1818

1919
FUZZ_TARGET_INIT(data_stream_addr_man, initialize_data_stream_addr_man)

src/test/fuzz/load_external_block_file.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
void initialize_load_external_block_file()
1717
{
18-
InitializeFuzzingContext();
18+
static const auto testing_setup = MakeFuzzingContext<>();
1919
}
2020

2121
FUZZ_TARGET_INIT(load_external_block_file, initialize_load_external_block_file)

src/test/fuzz/net.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323
void initialize_net()
2424
{
25-
static const BasicTestingSetup basic_testing_setup;
25+
static const auto testing_setup = MakeFuzzingContext<>(CBaseChainParams::MAIN);
2626
}
2727

2828
FUZZ_TARGET_INIT(net, initialize_net)

src/test/fuzz/policy_estimator.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
void initialize_policy_estimator()
1818
{
19-
InitializeFuzzingContext();
19+
static const auto testing_setup = MakeFuzzingContext<>();
2020
}
2121

2222
FUZZ_TARGET_INIT(policy_estimator, initialize_policy_estimator)

src/test/fuzz/policy_estimator_io.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
void initialize_policy_estimator_io()
1414
{
15-
InitializeFuzzingContext();
15+
static const auto testing_setup = MakeFuzzingContext<>();
1616
}
1717

1818
FUZZ_TARGET_INIT(policy_estimator_io, initialize_policy_estimator_io)

src/test/fuzz/process_message.cpp

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,8 @@ const TestingSetup* g_setup;
3838

3939
void initialize_process_message()
4040
{
41-
static TestingSetup setup{
42-
CBaseChainParams::REGTEST,
43-
{
44-
"-nodebuglogfile",
45-
},
46-
};
47-
g_setup = &setup;
48-
41+
static const auto testing_setup = MakeFuzzingContext<const TestingSetup>();
42+
g_setup = testing_setup.get();
4943
for (int i = 0; i < 2 * COINBASE_MATURITY; i++) {
5044
MineBlock(g_setup->m_node, CScript() << OP_TRUE);
5145
}

src/test/fuzz/process_messages.cpp

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,14 @@
1717
#include <validation.h>
1818
#include <validationinterface.h>
1919

20+
namespace {
2021
const TestingSetup* g_setup;
22+
} // namespace
2123

2224
void initialize_process_messages()
2325
{
24-
static TestingSetup setup{
25-
CBaseChainParams::REGTEST,
26-
{
27-
"-nodebuglogfile",
28-
},
29-
};
30-
g_setup = &setup;
31-
26+
static const auto testing_setup = MakeFuzzingContext<const TestingSetup>();
27+
g_setup = testing_setup.get();
3228
for (int i = 0; i < 2 * COINBASE_MATURITY; i++) {
3329
MineBlock(g_setup->m_node, CScript() << OP_TRUE);
3430
}

src/test/fuzz/signet.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
void initialize_signet()
1919
{
20-
InitializeFuzzingContext(CBaseChainParams::SIGNET);
20+
static const auto testing_setup = MakeFuzzingContext<>(CBaseChainParams::SIGNET);
2121
}
2222

2323
FUZZ_TARGET_INIT(signet, initialize_signet)

0 commit comments

Comments
 (0)