5#ifndef BITCOIN_TEST_UTIL_SETUP_COMMON_H
6#define BITCOIN_TEST_UTIL_SETUP_COMMON_H
39extern const std::function<void(
const std::string&)>
G_TEST_LOG_FUN;
165 const std::vector<CMutableTransaction>& txns,
185 std::pair<CMutableTransaction, CAmount>
CreateValidTransaction(
const std::vector<CTransactionRef>& input_transactions,
186 const std::vector<COutPoint>& inputs,
188 const std::vector<CKey>& input_signing_keys,
189 const std::vector<CTxOut>& outputs,
190 const std::optional<CFeeRate>& feerate,
191 const std::optional<uint32_t>& fee_output);
203 const std::vector<COutPoint>& inputs,
205 const std::vector<CKey>& input_signing_keys,
206 const std::vector<CTxOut>& outputs,
223 CKey input_signing_key,
260template <
class T = const BasicTestingSetup>
263 opts.extra_args =
Cat(
270 return std::make_unique<T>(chain_type, opts);
277template <
typename T>
requires std::is_enum_v<T>
280 return os << static_cast<std::underlying_type_t<T>>(e);
284inline std::ostream&
operator<<(std::ostream& os,
const std::optional<T>& v)
287 : os <<
"std::nullopt";
308 bool operator()(
const std::exception& e)
const {
return (*
this)(e.what()); }
int64_t CAmount
Amount in satoshis (Can be negative)
static constexpr CAmount COIN
The amount of satoshis in one BTC.
Fee rate in satoshis per virtualbyte: CAmount / vB the feerate is represented internally as FeeFrac.
An encapsulated private key.
Serialized script, used inside transaction inputs and outputs.
Chainstate stores and provides an API to update our local knowledge of the current best chain.
void Reseed(const uint256 &seed) noexcept
Reseed with explicit seed (only for testing).
BOOST_CHECK_EXCEPTION predicates to check the specific validation error.
bool operator()(std::string_view s) const
const std::string m_reason
bool operator()(const std::exception &e) const
HasReason(std::string_view reason)
256-bit unsigned big integer.
Helper class that manages an interrupt flag, and allows a thread or signal to interrupt another threa...
CacheSizes CalculateCacheSizes(const ArgsManager &args, size_t n_indexes)
std::ostream & operator<<(std::ostream &os, const T &e)
std::shared_ptr< const CTransaction > CTransactionRef
uint256 GetRandHash() noexcept
Generate a random uint256.
static constexpr CAmount CENT
const std::function< void(const std::string &)> G_TEST_LOG_FUN
This is connected to the logger.
void SetupCommonTestArgs(ArgsManager &argsman)
Register common test args.
const std::function< std::vector< const char * >()> G_TEST_COMMAND_LINE_ARGUMENTS
Retrieve the command line arguments.
std::unique_ptr< T > MakeNoLogFileContext(const ChainType chain_type=ChainType::REGTEST, TestOpts opts={})
Make a test setup that has disk access to the debug.log file disabled.
std::ostream & operator<<(std::ostream &os, const arith_uint256 &num)
const std::function< std::string()> G_TEST_GET_FULL_NAME
Retrieve the unit test name.
ArgsManager m_args
Test-specific arguments and settings.
BasicTestingSetup(const ChainType chainType=ChainType::MAIN, TestOpts={})
bool m_has_custom_datadir
void SeedRandomForTest(SeedRand seed)
Seed the global RNG state and m_rng for testing and log the seed value.
util::SignalInterrupt m_interrupt
A mutable version of CTransaction.
Testing setup that performs all steps up until right before ChainstateManager gets initialized.
kernel::CacheSizes m_kernel_cache_sizes
bool m_block_tree_db_in_memory
ChainTestingSetup(const ChainType chainType=ChainType::MAIN, TestOpts={})
std::function< void()> m_make_chainman
void LoadVerifyActivateChainstate()
bool m_coins_db_in_memory
Identical to TestingSetup, but chain set to regtest.
Testing fixture that pre-creates a 100-block REGTEST-mode block chain.
void mineBlocks(int num_blocks)
Mine a series of new blocks on the active chain.
std::vector< CTransactionRef > m_coinbase_txns
CMutableTransaction CreateValidMempoolTransaction(const std::vector< CTransactionRef > &input_transactions, const std::vector< COutPoint > &inputs, int input_height, const std::vector< CKey > &input_signing_keys, const std::vector< CTxOut > &outputs, bool submit=true)
Create a transaction and, optionally, submit to the mempool.
std::pair< CMutableTransaction, CAmount > CreateValidTransaction(const std::vector< CTransactionRef > &input_transactions, const std::vector< COutPoint > &inputs, int input_height, const std::vector< CKey > &input_signing_keys, const std::vector< CTxOut > &outputs, const std::optional< CFeeRate > &feerate, const std::optional< uint32_t > &fee_output)
Create a transaction, optionally setting the fee based on the feerate.
std::vector< CTransactionRef > PopulateMempool(FastRandomContext &det_rand, size_t num_transactions, bool submit)
Create transactions spending from m_coinbase_txns.
void MockMempoolMinFee(const CFeeRate &target_feerate)
Mock the mempool minimum feerate by adding a transaction and calling TrimToSize(0),...
CBlock CreateAndProcessBlock(const std::vector< CMutableTransaction > &txns, const CScript &scriptPubKey, Chainstate *chainstate=nullptr)
Create a new block with just given transactions, coinbase paying to scriptPubKey, and try to add it t...
TestChain100Setup(const ChainType chain_type=ChainType::REGTEST, TestOpts={})
CBlock CreateBlock(const std::vector< CMutableTransaction > &txns, const CScript &scriptPubKey, Chainstate &chainstate)
Create a new block with just given transactions, coinbase paying to scriptPubKey.
bool min_validation_cache
bool block_tree_db_in_memory
std::vector< const char * > extra_args
bool setup_validation_interface
Testing setup that configures a complete environment.
TestingSetup(const ChainType chainType=ChainType::MAIN, TestOpts={})
Identical to TestingSetup, but chain set to testnet4.
kernel::CacheSizes kernel
NodeContext struct containing references to chain state and connection state.
void SeedRandomStateForTest(SeedRand seedtype)
Seed the global RNG state for testing and log the seed value.
V Cat(V v1, V &&v2)
Concatenate two vectors, moving elements.