wallet_startup.py
1 #!/usr/bin/env python3 2 # Copyright (c) 2017-2022 The Bitcoin Core developers 3 # Distributed under the MIT software license, see the accompanying 4 # file COPYING or http://www.opensource.org/licenses/mit-license.php. 5 """Test wallet load on startup. 6 7 Verify that a bitcoind node can maintain list of wallets loading on startup 8 """ 9 from test_framework.test_framework import BitcoinTestFramework 10 from test_framework.util import ( 11 assert_equal, 12 ) 13 14 15 class WalletStartupTest(BitcoinTestFramework): 16 def add_options(self, parser): 17 self.add_wallet_options(parser) 18 19 def set_test_params(self): 20 self.setup_clean_chain = True 21 self.num_nodes = 1 22 self.supports_cli = True 23 24 def skip_test_if_missing_module(self): 25 self.skip_if_no_wallet() 26 27 def setup_nodes(self): 28 self.add_nodes(self.num_nodes) 29 self.start_nodes() 30 31 def run_test(self): 32 self.log.info('Should start without any wallets') 33 assert_equal(self.nodes[0].listwallets(), []) 34 assert_equal(self.nodes[0].listwalletdir(), {'wallets': []}) 35 36 self.log.info('New default wallet should load by default when there are no other wallets') 37 self.nodes[0].createwallet(wallet_name='', load_on_startup=False) 38 self.restart_node(0) 39 assert_equal(self.nodes[0].listwallets(), ['']) 40 41 self.log.info('Test load on startup behavior') 42 self.nodes[0].createwallet(wallet_name='w0', load_on_startup=True) 43 self.nodes[0].createwallet(wallet_name='w1', load_on_startup=False) 44 self.nodes[0].createwallet(wallet_name='w2', load_on_startup=True) 45 self.nodes[0].createwallet(wallet_name='w3', load_on_startup=False) 46 self.nodes[0].createwallet(wallet_name='w4', load_on_startup=False) 47 self.nodes[0].unloadwallet(wallet_name='w0', load_on_startup=False) 48 self.nodes[0].unloadwallet(wallet_name='w4', load_on_startup=False) 49 self.nodes[0].loadwallet(filename='w4', load_on_startup=True) 50 assert_equal(set(self.nodes[0].listwallets()), set(('', 'w1', 'w2', 'w3', 'w4'))) 51 self.restart_node(0) 52 assert_equal(set(self.nodes[0].listwallets()), set(('', 'w2', 'w4'))) 53 self.nodes[0].unloadwallet(wallet_name='', load_on_startup=False) 54 self.nodes[0].unloadwallet(wallet_name='w4', load_on_startup=False) 55 self.nodes[0].loadwallet(filename='w3', load_on_startup=True) 56 self.nodes[0].loadwallet(filename='') 57 self.restart_node(0) 58 assert_equal(set(self.nodes[0].listwallets()), set(('w2', 'w3'))) 59 60 if __name__ == '__main__': 61 WalletStartupTest().main()