From e07dd5fff9eb64d7615ab515b351e296c00b1861 Mon Sep 17 00:00:00 2001 From: furszy Date: Sat, 15 Apr 2023 21:47:29 -0300 Subject: [PATCH] test: fix bumpfee 'spend_one_input' occasional failure 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 that tries to spend one of them and if it doesn't find any, it throws an exception). 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. --- test/functional/wallet_bumpfee.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/test/functional/wallet_bumpfee.py b/test/functional/wallet_bumpfee.py index 4f7af328c1b..2260af1d57f 100755 --- a/test/functional/wallet_bumpfee.py +++ b/test/functional/wallet_bumpfee.py @@ -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__":