aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfurszy <matiasfurszyfer@protonmail.com>2023-08-22 11:51:35 -0300
committerfurszy <matiasfurszyfer@protonmail.com>2023-08-23 09:41:24 -0300
commitc4929cfa50ddb12943198a7f45723eedbd087d8f (patch)
tree77d7b4b58a273b084a2d86473f02af7ef27a79ba
parent8372ab0ea3c88308aabef476e3b9d023ba3fd4b7 (diff)
downloadbitcoin-c4929cfa50ddb12943198a7f45723eedbd087d8f.tar.xz
test: wallet_backup.py, fix intermittent failure in "restore using dumped wallet"
The failure arises because the test expects 'init_wallet()' (the test framework function) creating a wallet with no keys. However, the function also imports the deterministic private key used to receive the coinbase coins. This causes a race within the "restore using dumped wallet" case, where we intend to have a new wallet (with no existing keys) to test the 'importwallet()' RPC result. The reason behind the intermittent failures might be other peers delivering the chain right after node2 startup (sync of the validation queue included) and prior to the 'node2.getbalance()' check.
-rwxr-xr-xtest/functional/wallet_backup.py10
1 files changed, 4 insertions, 6 deletions
diff --git a/test/functional/wallet_backup.py b/test/functional/wallet_backup.py
index fa92ebd436..801a068b49 100755
--- a/test/functional/wallet_backup.py
+++ b/test/functional/wallet_backup.py
@@ -140,11 +140,6 @@ class WalletBackupTest(BitcoinTestFramework):
assert_raises_rpc_error(-36, error_message, node.restorewallet, wallet_name, backup_file)
assert os.path.exists(wallet_file)
- def init_three(self):
- self.init_wallet(node=0)
- self.init_wallet(node=1)
- self.init_wallet(node=2)
-
def run_test(self):
self.log.info("Generating initial blockchain")
self.generate(self.nodes[0], 1)
@@ -230,7 +225,10 @@ class WalletBackupTest(BitcoinTestFramework):
shutil.rmtree(os.path.join(self.nodes[2].chain_path, 'chainstate'))
self.start_three(["-nowallet"])
- self.init_three()
+ # Create new wallets for the three nodes.
+ # We will use this empty wallets to test the 'importwallet()' RPC command below.
+ for node_num in range(3):
+ self.nodes[node_num].createwallet(wallet_name=self.default_wallet_name, descriptors=self.options.descriptors, load_on_startup=True)
assert_equal(self.nodes[0].getbalance(), 0)
assert_equal(self.nodes[1].getbalance(), 0)