mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-09 11:27:28 -03:00
test: add functional test for balance after snapshot completion
Use a third node for this, which doesn't get restarted like the second node. This test would fail without the previous commit.
This commit is contained in:
parent
226d03dd61
commit
bc43ecaf6d
1 changed files with 14 additions and 2 deletions
|
@ -17,6 +17,7 @@ from test_framework.messages import COIN
|
||||||
from test_framework.util import (
|
from test_framework.util import (
|
||||||
assert_equal,
|
assert_equal,
|
||||||
assert_raises_rpc_error,
|
assert_raises_rpc_error,
|
||||||
|
ensure_for,
|
||||||
)
|
)
|
||||||
from test_framework.wallet import MiniWallet
|
from test_framework.wallet import MiniWallet
|
||||||
|
|
||||||
|
@ -34,17 +35,18 @@ class AssumeutxoTest(BitcoinTestFramework):
|
||||||
|
|
||||||
def set_test_params(self):
|
def set_test_params(self):
|
||||||
"""Use the pregenerated, deterministic chain up to height 199."""
|
"""Use the pregenerated, deterministic chain up to height 199."""
|
||||||
self.num_nodes = 2
|
self.num_nodes = 3
|
||||||
self.rpc_timeout = 120
|
self.rpc_timeout = 120
|
||||||
self.extra_args = [
|
self.extra_args = [
|
||||||
[],
|
[],
|
||||||
[],
|
[],
|
||||||
|
[],
|
||||||
]
|
]
|
||||||
|
|
||||||
def setup_network(self):
|
def setup_network(self):
|
||||||
"""Start with the nodes disconnected so that one can generate a snapshot
|
"""Start with the nodes disconnected so that one can generate a snapshot
|
||||||
including blocks the other hasn't yet seen."""
|
including blocks the other hasn't yet seen."""
|
||||||
self.add_nodes(2)
|
self.add_nodes(3)
|
||||||
self.start_nodes(extra_args=self.extra_args)
|
self.start_nodes(extra_args=self.extra_args)
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
|
@ -57,6 +59,7 @@ class AssumeutxoTest(BitcoinTestFramework):
|
||||||
"""
|
"""
|
||||||
n0 = self.nodes[0]
|
n0 = self.nodes[0]
|
||||||
n1 = self.nodes[1]
|
n1 = self.nodes[1]
|
||||||
|
n2 = self.nodes[2]
|
||||||
|
|
||||||
self.mini_wallet = MiniWallet(n0)
|
self.mini_wallet = MiniWallet(n0)
|
||||||
|
|
||||||
|
@ -88,6 +91,7 @@ class AssumeutxoTest(BitcoinTestFramework):
|
||||||
|
|
||||||
# make n1 aware of the new header, but don't give it the block.
|
# make n1 aware of the new header, but don't give it the block.
|
||||||
n1.submitheader(newblock)
|
n1.submitheader(newblock)
|
||||||
|
n2.submitheader(newblock)
|
||||||
|
|
||||||
# Ensure everyone is seeing the same headers.
|
# Ensure everyone is seeing the same headers.
|
||||||
for n in self.nodes:
|
for n in self.nodes:
|
||||||
|
@ -125,6 +129,7 @@ class AssumeutxoTest(BitcoinTestFramework):
|
||||||
|
|
||||||
assert_equal(n0.getblockcount(), FINAL_HEIGHT)
|
assert_equal(n0.getblockcount(), FINAL_HEIGHT)
|
||||||
assert_equal(n1.getblockcount(), START_HEIGHT)
|
assert_equal(n1.getblockcount(), START_HEIGHT)
|
||||||
|
assert_equal(n2.getblockcount(), START_HEIGHT)
|
||||||
|
|
||||||
assert_equal(n0.getblockchaininfo()["blocks"], FINAL_HEIGHT)
|
assert_equal(n0.getblockchaininfo()["blocks"], FINAL_HEIGHT)
|
||||||
|
|
||||||
|
@ -192,6 +197,13 @@ class AssumeutxoTest(BitcoinTestFramework):
|
||||||
w = n1.get_wallet_rpc("w")
|
w = n1.get_wallet_rpc("w")
|
||||||
assert_equal(w.getbalance(), 34)
|
assert_equal(w.getbalance(), 34)
|
||||||
|
|
||||||
|
self.log.info("Check balance of a wallet that is active during snapshot completion")
|
||||||
|
n2.restorewallet("w", "backup_w.dat")
|
||||||
|
loaded = n2.loadtxoutset(dump_output['path'])
|
||||||
|
self.connect_nodes(0, 2)
|
||||||
|
self.wait_until(lambda: len(n2.getchainstates()['chainstates']) == 1)
|
||||||
|
ensure_for(duration=1, f=lambda: (n2.getbalance() == 34))
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
AssumeutxoTest(__file__).main()
|
AssumeutxoTest(__file__).main()
|
||||||
|
|
Loading…
Reference in a new issue