0
0
Fork 0
mirror of https://github.com/bitcoin/bitcoin.git synced 2025-02-02 09:46:52 -05:00

test: [refactor] Pass TestOpts

This commit is contained in:
MarcoFalke 2024-07-08 15:45:56 +02:00
parent bd5d1688b4
commit fa690c8e53
No known key found for this signature in database
13 changed files with 40 additions and 41 deletions

View file

@ -20,7 +20,7 @@ static void Logging(benchmark::Bench& bench, const std::vector<const char*>& ext
TestingSetup test_setup{ TestingSetup test_setup{
ChainType::REGTEST, ChainType::REGTEST,
extra_args, {.extra_args = extra_args},
}; };
bench.run([&] { log(); }); bench.run([&] { log(); });

View file

@ -106,7 +106,7 @@ static void ComplexMemPool(benchmark::Bench& bench)
static void MempoolCheck(benchmark::Bench& bench) static void MempoolCheck(benchmark::Bench& bench)
{ {
FastRandomContext det_rand{true}; FastRandomContext det_rand{true};
auto testing_setup = MakeNoLogFileContext<TestChain100Setup>(ChainType::REGTEST, {"-checkmempool=1"}); auto testing_setup = MakeNoLogFileContext<TestChain100Setup>(ChainType::REGTEST, {.extra_args = {"-checkmempool=1"}});
CTxMemPool& pool = *testing_setup.get()->m_node.mempool; CTxMemPool& pool = *testing_setup.get()->m_node.mempool;
LOCK2(cs_main, pool.cs); LOCK2(cs_main, pool.cs);
testing_setup->PopulateMempool(det_rand, 400, true); testing_setup->PopulateMempool(det_rand, 400, true);

View file

@ -28,7 +28,7 @@
struct NoLockLoggingTestingSetup : public TestingSetup { struct NoLockLoggingTestingSetup : public TestingSetup {
NoLockLoggingTestingSetup() NoLockLoggingTestingSetup()
#ifdef DEBUG_LOCKCONTENTION #ifdef DEBUG_LOCKCONTENTION
: TestingSetup{ChainType::MAIN, /*extra_args=*/{"-debugexclude=lock"}} {} : TestingSetup{ChainType::MAIN, {.extra_args = { "-debugexclude=lock" } }} {}
#else #else
: TestingSetup{ChainType::MAIN} {} : TestingSetup{ChainType::MAIN} {}
#endif #endif

View file

@ -42,7 +42,7 @@ void initialize_process_message()
static const auto testing_setup = MakeNoLogFileContext<const TestingSetup>( static const auto testing_setup = MakeNoLogFileContext<const TestingSetup>(
/*chain_type=*/ChainType::REGTEST, /*chain_type=*/ChainType::REGTEST,
/*extra_args=*/{"-txreconciliation"}); {.extra_args = {"-txreconciliation"}});
g_setup = testing_setup.get(); g_setup = testing_setup.get();
for (int i = 0; i < 2 * COINBASE_MATURITY; i++) { for (int i = 0; i < 2 * COINBASE_MATURITY; i++) {
MineBlock(g_setup->m_node, CScript() << OP_TRUE); MineBlock(g_setup->m_node, CScript() << OP_TRUE);

View file

@ -32,7 +32,7 @@ void initialize_process_messages()
{ {
static const auto testing_setup = MakeNoLogFileContext<const TestingSetup>( static const auto testing_setup = MakeNoLogFileContext<const TestingSetup>(
/*chain_type=*/ChainType::REGTEST, /*chain_type=*/ChainType::REGTEST,
/*extra_args=*/{"-txreconciliation"}); {.extra_args = {"-txreconciliation"}});
g_setup = testing_setup.get(); g_setup = testing_setup.get();
for (int i = 0; i < 2 * COINBASE_MATURITY; i++) { for (int i = 0; i < 2 * COINBASE_MATURITY; i++) {
MineBlock(g_setup->m_node, CScript() << OP_TRUE); MineBlock(g_setup->m_node, CScript() << OP_TRUE);

View file

@ -41,7 +41,7 @@ using util::ToString;
namespace { namespace {
struct RPCFuzzTestingSetup : public TestingSetup { struct RPCFuzzTestingSetup : public TestingSetup {
RPCFuzzTestingSetup(const ChainType chain_type, const std::vector<const char*>& extra_args) : TestingSetup{chain_type, extra_args} RPCFuzzTestingSetup(const ChainType chain_type, TestOpts opts) : TestingSetup{chain_type, opts}
{ {
} }

View file

@ -23,7 +23,7 @@ FUZZ_TARGET(utxo_total_supply)
ChainTestingSetup test_setup{ ChainTestingSetup test_setup{
ChainType::REGTEST, ChainType::REGTEST,
{ {
"-testactivationheight=bip34@2", .extra_args = {"-testactivationheight=bip34@2"},
}, },
}; };
// Create chainstate // Create chainstate

View file

@ -23,8 +23,8 @@ class EnvTestingSetup : public BasicTestingSetup
{ {
public: public:
explicit EnvTestingSetup(const ChainType chainType = ChainType::MAIN, explicit EnvTestingSetup(const ChainType chainType = ChainType::MAIN,
const std::vector<const char*>& extra_args = {}) TestOpts opts = {})
: BasicTestingSetup{chainType, extra_args}, : BasicTestingSetup{chainType, opts},
m_prev_log_level{LogInstance().LogLevel()}, m_prev_log_level{LogInstance().LogLevel()},
m_create_sock_orig{CreateSock} m_create_sock_orig{CreateSock}
{ {

View file

@ -31,7 +31,7 @@
struct LogIPsTestingSetup : public TestingSetup { struct LogIPsTestingSetup : public TestingSetup {
LogIPsTestingSetup() LogIPsTestingSetup()
: TestingSetup{ChainType::MAIN, /*extra_args=*/{"-logips"}} {} : TestingSetup{ChainType::MAIN, {.extra_args = {"-logips"}}} {}
}; };
BOOST_FIXTURE_TEST_SUITE(net_peer_connection_tests, LogIPsTestingSetup) BOOST_FIXTURE_TEST_SUITE(net_peer_connection_tests, LogIPsTestingSetup)

View file

@ -16,7 +16,7 @@
struct Dersig100Setup : public TestChain100Setup { struct Dersig100Setup : public TestChain100Setup {
Dersig100Setup() Dersig100Setup()
: TestChain100Setup{ChainType::REGTEST, {"-testactivationheight=dersig@102"}} {} : TestChain100Setup{ChainType::REGTEST, {.extra_args = {"-testactivationheight=dersig@102"}}} {}
}; };
bool CheckInputScripts(const CTransaction& tx, TxValidationState& state, bool CheckInputScripts(const CTransaction& tx, TxValidationState& state,

View file

@ -112,7 +112,7 @@ static void ExitFailure(std::string_view str_err)
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
BasicTestingSetup::BasicTestingSetup(const ChainType chainType, const std::vector<const char*>& extra_args) BasicTestingSetup::BasicTestingSetup(const ChainType chainType, TestOpts opts)
: m_args{} : m_args{}
{ {
m_node.shutdown = &m_interrupt; m_node.shutdown = &m_interrupt;
@ -129,7 +129,7 @@ BasicTestingSetup::BasicTestingSetup(const ChainType chainType, const std::vecto
"-debugexclude=libevent", "-debugexclude=libevent",
"-debugexclude=leveldb", "-debugexclude=leveldb",
}, },
extra_args); opts.extra_args);
if (G_TEST_COMMAND_LINE_ARGUMENTS) { if (G_TEST_COMMAND_LINE_ARGUMENTS) {
arguments = Cat(arguments, G_TEST_COMMAND_LINE_ARGUMENTS()); arguments = Cat(arguments, G_TEST_COMMAND_LINE_ARGUMENTS());
} }
@ -220,8 +220,8 @@ BasicTestingSetup::~BasicTestingSetup()
gArgs.ClearArgs(); gArgs.ClearArgs();
} }
ChainTestingSetup::ChainTestingSetup(const ChainType chainType, const std::vector<const char*>& extra_args) ChainTestingSetup::ChainTestingSetup(const ChainType chainType, TestOpts opts)
: BasicTestingSetup(chainType, extra_args) : BasicTestingSetup(chainType, opts)
{ {
const CChainParams& chainparams = Params(); const CChainParams& chainparams = Params();
@ -304,13 +304,11 @@ void ChainTestingSetup::LoadVerifyActivateChainstate()
TestingSetup::TestingSetup( TestingSetup::TestingSetup(
const ChainType chainType, const ChainType chainType,
const std::vector<const char*>& extra_args, TestOpts opts)
const bool coins_db_in_memory, : ChainTestingSetup(chainType, opts)
const bool block_tree_db_in_memory)
: ChainTestingSetup(chainType, extra_args)
{ {
m_coins_db_in_memory = coins_db_in_memory; m_coins_db_in_memory = opts.coins_db_in_memory;
m_block_tree_db_in_memory = block_tree_db_in_memory; m_block_tree_db_in_memory = opts.block_tree_db_in_memory;
// Ideally we'd move all the RPC tests to the functional testing framework // Ideally we'd move all the RPC tests to the functional testing framework
// instead of unit tests, but for now we need these here. // instead of unit tests, but for now we need these here.
RegisterAllCoreRPCCommands(tableRPC); RegisterAllCoreRPCCommands(tableRPC);
@ -340,10 +338,8 @@ TestingSetup::TestingSetup(
TestChain100Setup::TestChain100Setup( TestChain100Setup::TestChain100Setup(
const ChainType chain_type, const ChainType chain_type,
const std::vector<const char*>& extra_args, TestOpts opts)
const bool coins_db_in_memory, : TestingSetup{ChainType::REGTEST, opts}
const bool block_tree_db_in_memory)
: TestingSetup{ChainType::REGTEST, extra_args, coins_db_in_memory, block_tree_db_in_memory}
{ {
SetMockTime(1598887952); SetMockTime(1598887952);
constexpr std::array<unsigned char, 32> vchKey = { constexpr std::array<unsigned char, 32> vchKey = {

View file

@ -48,6 +48,12 @@ std::ostream& operator<<(typename std::enable_if<std::is_enum<T>::value, std::os
static constexpr CAmount CENT{1000000}; static constexpr CAmount CENT{1000000};
struct TestOpts {
std::vector<const char*> extra_args{};
bool coins_db_in_memory{true};
bool block_tree_db_in_memory{true};
};
/** Basic testing setup. /** Basic testing setup.
* This just configures logging, data dir and chain parameters. * This just configures logging, data dir and chain parameters.
*/ */
@ -55,7 +61,7 @@ struct BasicTestingSetup {
util::SignalInterrupt m_interrupt; util::SignalInterrupt m_interrupt;
node::NodeContext m_node; // keep as first member to be destructed last node::NodeContext m_node; // keep as first member to be destructed last
explicit BasicTestingSetup(const ChainType chainType = ChainType::MAIN, const std::vector<const char*>& extra_args = {}); explicit BasicTestingSetup(const ChainType chainType = ChainType::MAIN, TestOpts = {});
~BasicTestingSetup(); ~BasicTestingSetup();
fs::path m_path_root; fs::path m_path_root;
@ -73,7 +79,7 @@ struct ChainTestingSetup : public BasicTestingSetup {
bool m_coins_db_in_memory{true}; bool m_coins_db_in_memory{true};
bool m_block_tree_db_in_memory{true}; bool m_block_tree_db_in_memory{true};
explicit ChainTestingSetup(const ChainType chainType = ChainType::MAIN, const std::vector<const char*>& extra_args = {}); explicit ChainTestingSetup(const ChainType chainType = ChainType::MAIN, TestOpts = {});
~ChainTestingSetup(); ~ChainTestingSetup();
// Supplies a chainstate, if one is needed // Supplies a chainstate, if one is needed
@ -85,9 +91,7 @@ struct ChainTestingSetup : public BasicTestingSetup {
struct TestingSetup : public ChainTestingSetup { struct TestingSetup : public ChainTestingSetup {
explicit TestingSetup( explicit TestingSetup(
const ChainType chainType = ChainType::MAIN, const ChainType chainType = ChainType::MAIN,
const std::vector<const char*>& extra_args = {}, TestOpts = {});
const bool coins_db_in_memory = true,
const bool block_tree_db_in_memory = true);
}; };
/** Identical to TestingSetup, but chain set to regtest */ /** Identical to TestingSetup, but chain set to regtest */
@ -106,9 +110,7 @@ class CScript;
struct TestChain100Setup : public TestingSetup { struct TestChain100Setup : public TestingSetup {
TestChain100Setup( TestChain100Setup(
const ChainType chain_type = ChainType::REGTEST, const ChainType chain_type = ChainType::REGTEST,
const std::vector<const char*>& extra_args = {}, TestOpts = {});
const bool coins_db_in_memory = true,
const bool block_tree_db_in_memory = true);
/** /**
* Create a new block with just given transactions, coinbase paying to * Create a new block with just given transactions, coinbase paying to
@ -220,16 +222,16 @@ struct TestChain100Setup : public TestingSetup {
* be used in "hot loops", for example fuzzing or benchmarking. * be used in "hot loops", for example fuzzing or benchmarking.
*/ */
template <class T = const BasicTestingSetup> template <class T = const BasicTestingSetup>
std::unique_ptr<T> MakeNoLogFileContext(const ChainType chain_type = ChainType::REGTEST, const std::vector<const char*>& extra_args = {}) std::unique_ptr<T> MakeNoLogFileContext(const ChainType chain_type = ChainType::REGTEST, TestOpts opts = {})
{ {
const std::vector<const char*> arguments = Cat( opts.extra_args = Cat(
{ {
"-nodebuglogfile", "-nodebuglogfile",
"-nodebug", "-nodebug",
}, },
extra_args); opts.extra_args);
return std::make_unique<T>(chain_type, arguments); return std::make_unique<T>(chain_type, opts);
} }
CBlock getBlock13b8a(); CBlock getBlock13b8a();

View file

@ -167,9 +167,10 @@ struct SnapshotTestSetup : TestChain100Setup {
// destructive filesystem operations. // destructive filesystem operations.
SnapshotTestSetup() : TestChain100Setup{ SnapshotTestSetup() : TestChain100Setup{
{}, {},
{}, {
/*coins_db_in_memory=*/false, .coins_db_in_memory = false,
/*block_tree_db_in_memory=*/false, .block_tree_db_in_memory = false,
},
} }
{ {
} }