Skip to content

Commit db19a7e

Browse files
committed
Merge bitcoin/bitcoin#28403: test: Bump walletpassphrase timeouts to avoid intermittent issues
fa28f5a test: Bump walletpassphrase timeouts to avoid intermittent issues (MarcoFalke) Pull request description: This bumps all timeouts for all `walletpassphrase` to avoid intermittent issues in `valgrind` (or other sanitizers). As an idea for a follow-up, `walletpassphrase` could be changed to treat `0` as "no timeout" instead of "instant timeout". Example failure: ``` node0 2023-09-03T22:44:38.374955Z [httpworker.3] [rpc/server.cpp:594] [RPCRunLater] [rpc] queue run of timer lockwallet(w6) in 60 seconds (using HTTP) test 2023-09-03T22:44:40.173000Z TestFramework.bitcoincli (DEBUG): Running bitcoin-cli ['-rpcwallet=w6', 'getnewaddress', '', 'legacy'] node0 2023-09-03T22:44:59.810893Z [http] [httpserver.cpp:255] [http_request_cb] [http] Received a POST request for /wallet/w6 from 127.0.0.1:48928 node0 2023-09-03T22:44:59.813132Z [httpworker.1] [rpc/request.cpp:181] [parse] [rpc] ThreadRPCServer method=getnewaddress user=__cookie__ node0 2023-09-03T22:44:59.837183Z [httpworker.1] [wallet/sqlite.cpp:53] [TraceSqlCallback] [/ci_container_base/ci/scratch/test_runner/test_runner_₿_🏃_20230903_183350/wallet_createwallet_171/node0/regtest/w6/wallet.dat] SQLite Statement: INSERT or REPLACE into main values(?, ?) node0 2023-09-03T22:44:59.929735Z [httpworker.1] [wallet/sqlite.cpp:53] [TraceSqlCallback] [/ci_container_base/ci/scratch/test_runner/test_runner_₿_🏃_20230903_183350/wallet_createwallet_171/node0/regtest/w6/wallet.dat] SQLite Statement: INSERT or REPLACE into main values(?, ?) node0 2023-09-03T22:44:59.934484Z [httpworker.1] [wallet/sqlite.cpp:53] [TraceSqlCallback] [/ci_container_base/ci/scratch/test_runner/test_runner_₿_🏃_20230903_183350/wallet_createwallet_171/node0/regtest/w6/wallet.dat] SQLite Statement: INSERT or REPLACE into main values(?, ?) node0 2023-09-03T22:44:59.935467Z [httpworker.1] [wallet/sqlite.cpp:53] [TraceSqlCallback] [/ci_container_base/ci/scratch/test_runner/test_runner_₿_🏃_20230903_183350/wallet_createwallet_171/node0/regtest/w6/wallet.dat] SQLite Statement: INSERT or REPLACE into main values(?, ?) test 2023-09-03T22:45:02.328000Z TestFramework.bitcoincli (DEBUG): Running bitcoin-cli ['-rpcwallet=w6', 'signmessage', 'mqatqH4VQmrZ81nxUfrnfcLnxgbzhZb4PC', 'test'] node0 2023-09-03T22:45:20.269375Z [http] [httpserver.cpp:255] [http_request_cb] [http] Received a POST request for /wallet/w6 from 127.0.0.1:44618 node0 2023-09-03T22:45:20.270670Z [httpworker.2] [rpc/request.cpp:181] [parse] [rpc] ThreadRPCServer method=signmessage user=__cookie__ test 2023-09-03T22:45:23.490000Z TestFramework.bitcoincli (DEBUG): Running bitcoin-cli ['-rpcwallet=w6', 'keypoolrefill', '1'] node0 2023-09-03T22:45:40.244603Z [http] [httpserver.cpp:255] [http_request_cb] [http] Received a POST request for /wallet/w6 from 127.0.0.1:32854 node0 2023-09-03T22:45:40.293021Z [httpworker.0] [rpc/request.cpp:181] [parse] [rpc] ThreadRPCServer method=keypoolrefill user=__cookie__ test 2023-09-03T22:45:41.852000Z TestFramework (ERROR): JSONRPC error Traceback (most recent call last): File "/ci_container_base/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/test/functional/test_framework/test_framework.py", line 131, in main self.run_test() File "/ci_container_base/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/test/functional/wallet_createwallet.py", line 156, in run_test w6.keypoolrefill(1) File "/ci_container_base/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/test/functional/test_framework/test_node.py", line 732, in __call__ return self.cli.send_cli(self.command, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/ci_container_base/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/test/functional/test_framework/test_node.py", line 795, in send_cli raise JSONRPCException(dict(code=int(code), message=message)) test_framework.authproxy.JSONRPCException: Error: Please enter the wallet passphrase with walletpassphrase first. (-13) ACKs for top commit: achow101: ACK fa28f5a Tree-SHA512: 58caa569cec39acc121d4cc038a4190937af34e85d2696272ed4f2792fd386469b0cfefd2cb564438fedded97b21b23d8bf46ba27b5633671a277ed4679f0d5d
2 parents 52c6904 + fa28f5a commit db19a7e

6 files changed

+15
-15
lines changed

test/functional/wallet_createwallet.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ def run_test(self):
109109
assert_raises_rpc_error(-4, "Error: This wallet has no available keys", w4.getnewaddress)
110110
assert_raises_rpc_error(-4, "Error: This wallet has no available keys", w4.getrawchangeaddress)
111111
# Now set a seed and it should work. Wallet should also be encrypted
112-
w4.walletpassphrase('pass', 60)
112+
w4.walletpassphrase("pass", 999000)
113113
if self.options.descriptors:
114114
w4.importdescriptors([{
115115
'desc': descsum_create('wpkh(tprv8ZgxMBicQKsPcwuZGKp8TeWppSuLMiLe2d9PupB14QpPeQsqoj3LneJLhGHH13xESfvASyd4EFLJvLrG8b7DrLxEuV7hpF9uUc6XruKA1Wq/0h/*)'),
@@ -142,7 +142,7 @@ def run_test(self):
142142
self.nodes[0].createwallet(wallet_name='wblank', disable_private_keys=False, blank=True, passphrase='thisisapassphrase')
143143
wblank = node.get_wallet_rpc('wblank')
144144
assert_raises_rpc_error(-13, "Error: Please enter the wallet passphrase with walletpassphrase first.", wblank.signmessage, "needanargument", "test")
145-
wblank.walletpassphrase('thisisapassphrase', 60)
145+
wblank.walletpassphrase("thisisapassphrase", 999000)
146146
assert_raises_rpc_error(-4, "Error: This wallet has no available keys", wblank.getnewaddress)
147147
assert_raises_rpc_error(-4, "Error: This wallet has no available keys", wblank.getrawchangeaddress)
148148

@@ -151,7 +151,7 @@ def run_test(self):
151151
self.nodes[0].createwallet(wallet_name='w6', disable_private_keys=False, blank=False, passphrase='thisisapassphrase')
152152
w6 = node.get_wallet_rpc('w6')
153153
assert_raises_rpc_error(-13, "Error: Please enter the wallet passphrase with walletpassphrase first.", w6.signmessage, "needanargument", "test")
154-
w6.walletpassphrase('thisisapassphrase', 60)
154+
w6.walletpassphrase("thisisapassphrase", 999000)
155155
w6.signmessage(w6.getnewaddress('', 'legacy'), "test")
156156
w6.keypoolrefill(1)
157157
# There should only be 1 key for legacy, 3 for descriptors

test/functional/wallet_descriptor.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ def run_test(self):
129129

130130
# Encrypt wallet 0
131131
send_wrpc.encryptwallet('pass')
132-
send_wrpc.walletpassphrase('pass', 10)
132+
send_wrpc.walletpassphrase("pass", 999000)
133133
addr = send_wrpc.getnewaddress()
134134
info2 = send_wrpc.getaddressinfo(addr)
135135
assert info1['hdmasterfingerprint'] != info2['hdmasterfingerprint']
@@ -143,7 +143,7 @@ def run_test(self):
143143
send_wrpc.getnewaddress()
144144

145145
self.log.info("Test that unlock is needed when deriving only hardened keys in an encrypted wallet")
146-
send_wrpc.walletpassphrase('pass', 10)
146+
send_wrpc.walletpassphrase("pass", 999000)
147147
send_wrpc.importdescriptors([{
148148
"desc": "wpkh(tprv8ZgxMBicQKsPd7Uf69XL1XwhmjHopUGep8GuEiJDZmbQz6o58LninorQAfcKZWARbtRtfnLcJ5MQ2AtHcQJCCRUcMRvmDUjyEmNUWwx8UbK/0h/*h)#y4dfsj7n",
149149
"timestamp": "now",

test/functional/wallet_dump.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ def run_test(self):
173173

174174
# encrypt wallet, restart, unlock and dump
175175
self.nodes[0].encryptwallet('test')
176-
self.nodes[0].walletpassphrase('test', 100)
176+
self.nodes[0].walletpassphrase("test", 999000)
177177
# Should be a no-op:
178178
self.nodes[0].keypoolrefill()
179179
self.nodes[0].dumpwallet(wallet_enc_dump)

test/functional/wallet_encryption.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ def run_test(self):
5959
assert_raises_rpc_error(-14, "wallet passphrase entered was incorrect", self.nodes[0].walletpassphrase, passphrase + "wrong", 10)
6060

6161
# Test walletlock
62-
self.nodes[0].walletpassphrase(passphrase, 84600)
62+
self.nodes[0].walletpassphrase(passphrase, 999000)
6363
sig = self.nodes[0].signmessage(address, msg)
6464
assert self.nodes[0].verifymessage(address, sig, msg)
6565
self.nodes[0].walletlock()
@@ -68,7 +68,7 @@ def run_test(self):
6868
# Test passphrase changes
6969
self.nodes[0].walletpassphrasechange(passphrase, passphrase2)
7070
assert_raises_rpc_error(-14, "wallet passphrase entered was incorrect", self.nodes[0].walletpassphrase, passphrase, 10)
71-
self.nodes[0].walletpassphrase(passphrase2, 10)
71+
self.nodes[0].walletpassphrase(passphrase2, 999000)
7272
sig = self.nodes[0].signmessage(address, msg)
7373
assert self.nodes[0].verifymessage(address, sig, msg)
7474
self.nodes[0].walletlock()
@@ -97,7 +97,7 @@ def run_test(self):
9797
self.nodes[0].walletpassphrasechange(passphrase2, passphrase_with_nulls)
9898
# walletpassphrasechange should not stop at null characters
9999
assert_raises_rpc_error(-14, "wallet passphrase entered was incorrect", self.nodes[0].walletpassphrase, passphrase_with_nulls.partition("\0")[0], 10)
100-
self.nodes[0].walletpassphrase(passphrase_with_nulls, 10)
100+
self.nodes[0].walletpassphrase(passphrase_with_nulls, 999000)
101101
sig = self.nodes[0].signmessage(address, msg)
102102
assert self.nodes[0].verifymessage(address, sig, msg)
103103
self.nodes[0].walletlock()

test/functional/wallet_fundrawtransaction.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -581,7 +581,7 @@ def test_locked_wallet(self):
581581
wallet.encryptwallet("test")
582582

583583
if self.options.descriptors:
584-
wallet.walletpassphrase('test', 10)
584+
wallet.walletpassphrase("test", 999000)
585585
wallet.importdescriptors([{
586586
'desc': descsum_create('wpkh(tprv8ZgxMBicQKsPdYeeZbPSKd2KYLmeVKtcFA7kqCxDvDR13MQ6us8HopUR2wLcS2ZKPhLyKsqpDL2FtL73LMHcgoCL7DXsciA8eX8nbjCR2eG/0h/*h)'),
587587
'timestamp': 'now',
@@ -619,7 +619,7 @@ def test_locked_wallet(self):
619619
assert_raises_rpc_error(-4, "Transaction needs a change address, but we can't generate it.", wallet.fundrawtransaction, rawtx)
620620

621621
# Refill the keypool.
622-
wallet.walletpassphrase("test", 100)
622+
wallet.walletpassphrase("test", 999000)
623623
wallet.keypoolrefill(8) #need to refill the keypool to get an internal change address
624624
wallet.walletlock()
625625

@@ -634,7 +634,7 @@ def test_locked_wallet(self):
634634
assert fundedTx["changepos"] != -1
635635

636636
# Now we need to unlock.
637-
wallet.walletpassphrase("test", 600)
637+
wallet.walletpassphrase("test", 999000)
638638
signedTx = wallet.signrawtransactionwithwallet(fundedTx['hex'])
639639
wallet.sendrawtransaction(signedTx['hex'])
640640
self.generate(self.nodes[1], 1)

test/functional/wallet_keypool.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ def run_test(self):
8585
assert_raises_rpc_error(-12, "Error: Keypool ran out, please call keypoolrefill first", nodes[0].getnewaddress)
8686

8787
# put six (plus 2) new keys in the keypool (100% external-, +100% internal-keys, 1 in min)
88-
nodes[0].walletpassphrase('test', 12000)
88+
nodes[0].walletpassphrase("test", 999000)
8989
nodes[0].keypoolrefill(6)
9090
nodes[0].walletlock()
9191
wi = nodes[0].getwalletinfo()
@@ -131,7 +131,7 @@ def run_test(self):
131131
nodes[0].getnewaddress()
132132
assert_raises_rpc_error(-12, "Keypool ran out", nodes[0].getnewaddress)
133133

134-
nodes[0].walletpassphrase('test', 100)
134+
nodes[0].walletpassphrase("test", 999000)
135135
nodes[0].keypoolrefill(100)
136136
wi = nodes[0].getwalletinfo()
137137
if self.options.descriptors:
@@ -170,7 +170,7 @@ def run_test(self):
170170
else:
171171
res = w2.importmulti([{'desc': desc, 'timestamp': 'now'}])
172172
assert_equal(res[0]['success'], True)
173-
w1.walletpassphrase('test', 100)
173+
w1.walletpassphrase("test", 999000)
174174

175175
res = w1.sendtoaddress(address=address, amount=0.00010000)
176176
self.generate(nodes[0], 1)

0 commit comments

Comments
 (0)