5 #ifndef BITCOIN_TEST_UTIL_SETUP_COMMON_H 6 #define BITCOIN_TEST_UTIL_SETUP_COMMON_H 23 #include <type_traits> 27 extern const std::function<void(const std::string&)>
G_TEST_LOG_FUN;
35 std::ostream& operator<<(typename std::enable_if<std::is_enum<T>::value, std::ostream>::type& stream,
const T& e)
37 return stream << static_cast<typename std::underlying_type<T>::type>(e);
128 const std::vector<const char*>& extra_args = {});
144 const std::vector<CMutableTransaction>& txns,
165 CKey input_signing_key,
191 template <
class T = const BasicTestingSetup>
194 const std::vector<const char*> arguments =
Cat(
201 return std::make_unique<T>(chain_name, arguments);
247 return std::string(e.what()).find(
m_reason) != std::string::npos;
254 #endif // BITCOIN_TEST_UTIL_SETUP_COMMON_H std::shared_ptr< const CTransaction > CTransactionRef
std::unique_ptr< T > MakeNoLogFileContext(const std::string &chain_name=CBaseChainParams::REGTEST, const std::vector< const char *> &extra_args={})
Make a test setup that has disk access to the debug.log file disabled.
static bool InsecureRandBool()
CTxMemPool::Options MemPoolOptionsForTest(const node::NodeContext &node)
Testing setup that performs all steps up until right before ChainstateManager gets initialized...
static const std::string REGTEST
TestMemPoolEntryHelper & Fee(CAmount _fee)
void Seed(FastRandomContext &ctx)
Seed the given random ctx or use the seed passed in via an environment var.
TestChain100Setup(const std::string &chain_name=CBaseChainParams::REGTEST, const std::vector< const char *> &extra_args={})
node::CacheSizes m_cache_sizes
std::vector< CTransactionRef > m_coinbase_txns
FastRandomContext g_insecure_rand_ctx
This global and the helpers that use it are not thread-safe.
uint256 rand256() noexcept
generate a random uint256.
CTxMemPoolEntry FromTx(const CMutableTransaction &tx) const
static uint32_t InsecureRand32()
ChainTestingSetup(const std::string &chainName=CBaseChainParams::MAIN, const std::vector< const char *> &extra_args={})
static void SeedInsecureRand(SeedRand seed=SeedRand::SEED)
CTxMemPoolEntry stores data about the corresponding transaction, as well as data about all in-mempool...
static const std::string MAIN
Chain name strings.
int64_t CAmount
Amount in satoshis (Can be negative)
TestMemPoolEntryHelper & SpendsCoinbase(bool _flag)
uint64_t randbits(int bits) noexcept
Generate a random (bits)-bit integer.
NodeContext struct containing references to chain state and connection state.
static uint64_t InsecureRandRange(uint64_t range)
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...
Chainstate stores and provides an API to update our local knowledge of the current best chain...
TestingSetup(const std::string &chainName=CBaseChainParams::MAIN, const std::vector< const char *> &extra_args={})
std::vector< CTransactionRef > PopulateMempool(FastRandomContext &det_rand, size_t num_transactions, bool submit)
Create transactions spending from m_coinbase_txns.
static secp256k1_context * ctx
BOOST_CHECK_EXCEPTION predicates to check the specific validation error.
void mineBlocks(int num_blocks)
Mine a series of new blocks on the active chain.
BasicTestingSetup(const std::string &chainName=CBaseChainParams::MAIN, const std::vector< const char *> &extra_args={})
static uint64_t InsecureRandBits(int bits)
Testing fixture that pre-creates a 100-block REGTEST-mode block chain.
bool g_mock_deterministic_tests
Flag to make GetRand in random.h return the same number.
TestMemPoolEntryHelper & Height(unsigned int _height)
uint32_t rand32() noexcept
Generate a random 32-bit integer.
HasReason(const std::string &reason)
CMutableTransaction CreateValidMempoolTransaction(CTransactionRef input_transaction, int input_vout, int input_height, CKey input_signing_key, CScript output_destination, CAmount output_amount=CAmount(1 *COIN), bool submit=true)
Create a transaction and submit to the mempool.
Serialized script, used inside transaction inputs and outputs.
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 operator()(const std::exception &e) const
TestMemPoolEntryHelper & Time(int64_t _time)
TestMemPoolEntryHelper & SigOpsCost(unsigned int _sigopsCost)
std::ostream & operator<<(std::ostream &os, const uint256 &num)
bool randbool() noexcept
Generate a random boolean.
const std::function< void(const std::string &)> G_TEST_LOG_FUN
This is connected to the logger.
A mutable version of CTransaction.
const std::function< std::vector< const char * >)> G_TEST_COMMAND_LINE_ARGUMENTS
Retrieve the command line arguments.
static constexpr CAmount CENT
Options struct containing options for constructing a CTxMemPool.
An encapsulated private key.
static uint256 InsecureRand256()
Identical to TestingSetup, but chain set to regtest.
Path class wrapper to block calls to the fs::path(std::string) implicit constructor and the fs::path:...
#define T(expected, seed, data)
uint64_t randrange(uint64_t range) noexcept
Generate a random integer in the range [0..range).
Testing setup that configures a complete environment.
Seed with a compile time constant of zeros.
V Cat(V v1, V &&v2)
Concatenate two vectors, moving elements.
static constexpr CAmount COIN
The amount of satoshis in one BTC.
const fs::path m_path_root
const std::string m_reason