Merge bitcoin/bitcoin#27471: test: fix bumpfee 'spend_one_input' occasional failure

e07dd5fff9eb64d7615ab515b351e296c00b1861 test: fix bumpfee 'spend_one_input' occasional failure (furszy)

Pull request description:

  CI test failure, in master: https://cirrus-ci.com/task/5975232842825728.
  In #27469 https://cirrus-ci.com/task/6452468402356224

  Most of the subtests in `wallet_bumpfee.py` expect to find spendable UTXOs of 0.001 btc in the rbf wallet. They use the `spend_one_input()` method which fails if none of them exist.

  The sporadic failure comes from the recently added `test_feerate_checks_replaced_outputs` subtest that can spend all them. Leaving the next subtests with no 0.001 UTXOs to spend.

  To solve it, this PR moves the recently added case into a "context independent subtests" section.
  Which is placed at the end to not affect other cases.

ACKs for top commit:
  achow101:
    ACK e07dd5fff9eb64d7615ab515b351e296c00b1861
  pablomartin4btc:
    ACK e07dd5fff9.

Tree-SHA512: c150ed6fcfbb6f1502eaf6370a57aae0da991c0fc48e8bb3d446805f4336abba5d80ff0de26094914da95432dd0255030fe527001af4510dfdcefbc7230f14d6
This commit is contained in:
fanquake 2023-04-17 16:19:40 +01:00
commit 54e07a05b2
No known key found for this signature in database
GPG Key ID: 2EEB9F5CC09526C1

View File

@ -101,11 +101,13 @@ class BumpFeeTest(BitcoinTestFramework):
test_change_script_match(self, rbf_node, dest_address)
test_settxfee(self, rbf_node, dest_address)
test_maxtxfee_fails(self, rbf_node, dest_address)
test_feerate_checks_replaced_outputs(self, rbf_node)
# These tests wipe out a number of utxos that are expected in other tests
test_small_output_with_feerate_succeeds(self, rbf_node, dest_address)
test_no_more_inputs_fails(self, rbf_node, dest_address)
# Context independent tests
test_feerate_checks_replaced_outputs(self, rbf_node, peer_node)
def test_invalid_parameters(self, rbf_node, peer_node, dest_address):
self.log.info('Test invalid parameters')
rbfid = spend_one_input(rbf_node, dest_address)
@ -670,7 +672,11 @@ def test_no_more_inputs_fails(self, rbf_node, dest_address):
self.clear_mempool()
def test_feerate_checks_replaced_outputs(self, rbf_node):
def test_feerate_checks_replaced_outputs(self, rbf_node, peer_node):
# Make sure there is enough balance
peer_node.sendtoaddress(rbf_node.getnewaddress(), 60)
self.generate(peer_node, 1)
self.log.info("Test that feerate checks use replaced outputs")
outputs = []
for i in range(50):
@ -693,6 +699,7 @@ def test_feerate_checks_replaced_outputs(self, rbf_node):
# Bumpfee and replace all outputs with a single one using the minimum feerate
rbf_node.bumpfee(tx_res["txid"], {"fee_rate": min_fee_rate, "outputs": new_outputs})
self.clear_mempool()
if __name__ == "__main__":