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:
parent
bd5d1688b4
commit
fa690c8e53
13 changed files with 40 additions and 41 deletions
|
@ -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(); });
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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}
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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}
|
||||||
{
|
{
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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 = {
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue