[test] make submit optional in CreateValidMempoolTransaction

This allows us to easily create transaction chains for package
validation. We don't test_accept if submit=false because we want to be
able to make transactions that wouldn't pass ATMP (i.e. a child
transaction in a package would fail due to missing inputs).
This commit is contained in:
glozow 2021-05-04 08:05:43 -07:00
parent 2ef187941d
commit cd9a11ac96
2 changed files with 7 additions and 4 deletions

View File

@ -263,7 +263,8 @@ CMutableTransaction TestChain100Setup::CreateValidMempoolTransaction(CTransactio
int input_height, int input_height,
CKey input_signing_key, CKey input_signing_key,
CScript output_destination, CScript output_destination,
CAmount output_amount) CAmount output_amount,
bool submit)
{ {
// Transaction we will submit to the mempool // Transaction we will submit to the mempool
CMutableTransaction mempool_txn; CMutableTransaction mempool_txn;
@ -296,8 +297,8 @@ CMutableTransaction TestChain100Setup::CreateValidMempoolTransaction(CTransactio
std::map<int, std::string> input_errors; std::map<int, std::string> input_errors;
assert(SignTransaction(mempool_txn, &keystore, input_coins, nHashType, input_errors)); assert(SignTransaction(mempool_txn, &keystore, input_coins, nHashType, input_errors));
// Add transaction to the mempool // If submit=true, add transaction to the mempool.
{ if (submit) {
LOCK(cs_main); LOCK(cs_main);
const MempoolAcceptResult result = AcceptToMemoryPool(::ChainstateActive(), *m_node.mempool.get(), MakeTransactionRef(mempool_txn), /* bypass_limits */ false); const MempoolAcceptResult result = AcceptToMemoryPool(::ChainstateActive(), *m_node.mempool.get(), MakeTransactionRef(mempool_txn), /* bypass_limits */ false);
assert(result.m_result_type == MempoolAcceptResult::ResultType::VALID); assert(result.m_result_type == MempoolAcceptResult::ResultType::VALID);

View File

@ -135,13 +135,15 @@ struct TestChain100Setup : public RegTestingSetup {
* @param input_signing_key The key to spend the input_transaction * @param input_signing_key The key to spend the input_transaction
* @param output_destination Where to send the output * @param output_destination Where to send the output
* @param output_amount How much to send * @param output_amount How much to send
* @param submit Whether or not to submit to mempool
*/ */
CMutableTransaction CreateValidMempoolTransaction(CTransactionRef input_transaction, CMutableTransaction CreateValidMempoolTransaction(CTransactionRef input_transaction,
int input_vout, int input_vout,
int input_height, int input_height,
CKey input_signing_key, CKey input_signing_key,
CScript output_destination, CScript output_destination,
CAmount output_amount = CAmount(1 * COIN)); CAmount output_amount = CAmount(1 * COIN),
bool submit = true);
~TestChain100Setup(); ~TestChain100Setup();