Skip to content

Commit 9e2a723

Browse files
committed
test: Add arguments for creating a slimmer setup
Adds more testing options for creating an environment without networking and a validation interface. This is useful for improving the performance of the utxo snapshot fuzz test, which constructs a new TestingSetup on each iteration.
1 parent ec74f45 commit 9e2a723

File tree

3 files changed

+17
-5
lines changed

3 files changed

+17
-5
lines changed

src/test/fuzz/utxo_snapshot.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,13 @@ void initialize_chain()
3131
FUZZ_TARGET(utxo_snapshot, .init = initialize_chain)
3232
{
3333
FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size());
34-
std::unique_ptr<const TestingSetup> setup{MakeNoLogFileContext<const TestingSetup>()};
34+
std::unique_ptr<const TestingSetup> setup{
35+
MakeNoLogFileContext<const TestingSetup>(
36+
ChainType::REGTEST,
37+
TestOpts{
38+
.setup_net = false,
39+
.setup_validation_interface = false,
40+
})};
3541
const auto& node = setup->m_node;
3642
auto& chainman{*node.chainman};
3743

src/test/util/setup_common.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -218,9 +218,11 @@ ChainTestingSetup::ChainTestingSetup(const ChainType chainType, TestOpts opts)
218218

219219
// We have to run a scheduler thread to prevent ActivateBestChain
220220
// from blocking due to queue overrun.
221-
m_node.scheduler = std::make_unique<CScheduler>();
222-
m_node.scheduler->m_service_thread = std::thread(util::TraceThread, "scheduler", [&] { m_node.scheduler->serviceQueue(); });
223-
m_node.validation_signals = std::make_unique<ValidationSignals>(std::make_unique<SerialTaskRunner>(*m_node.scheduler));
221+
if (opts.setup_validation_interface) {
222+
m_node.scheduler = std::make_unique<CScheduler>();
223+
m_node.scheduler->m_service_thread = std::thread(util::TraceThread, "scheduler", [&] { m_node.scheduler->serviceQueue(); });
224+
m_node.validation_signals = std::make_unique<ValidationSignals>(std::make_unique<SerialTaskRunner>(*m_node.scheduler));
225+
}
224226

225227
m_node.fee_estimator = std::make_unique<CBlockPolicyEstimator>(FeeestPath(*m_node.args), DEFAULT_ACCEPT_STALE_FEE_ESTIMATES);
226228
bilingual_str error{};
@@ -255,7 +257,7 @@ ChainTestingSetup::ChainTestingSetup(const ChainType chainType, TestOpts opts)
255257
ChainTestingSetup::~ChainTestingSetup()
256258
{
257259
if (m_node.scheduler) m_node.scheduler->stop();
258-
m_node.validation_signals->FlushBackgroundCallbacks();
260+
if (m_node.validation_signals) m_node.validation_signals->FlushBackgroundCallbacks();
259261
m_node.connman.reset();
260262
m_node.banman.reset();
261263
m_node.addrman.reset();
@@ -306,6 +308,8 @@ TestingSetup::TestingSetup(
306308

307309
LoadVerifyActivateChainstate();
308310

311+
if (!opts.setup_net) return;
312+
309313
m_node.netgroupman = std::make_unique<NetGroupManager>(/*asmap=*/std::vector<bool>());
310314
m_node.addrman = std::make_unique<AddrMan>(*m_node.netgroupman,
311315
/*deterministic=*/false,

src/test/util/setup_common.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ struct TestOpts {
5252
std::vector<const char*> extra_args{};
5353
bool coins_db_in_memory{true};
5454
bool block_tree_db_in_memory{true};
55+
bool setup_net{true};
56+
bool setup_validation_interface{true};
5557
};
5658

5759
/** Basic testing setup.

0 commit comments

Comments
 (0)