Browse Source

Merge #11370: [test] Add getblockchaininfo functional test

f6ffb14 [test] Add getblockchaininfo functional test (João Barbosa)
fd8f45f [test] Add restart_node to BitcoinTestFramework (João Barbosa)

Pull request description:

  Adds functional test for `getblockchaininfo`. Also deals with the fact that `pruneheight` is only in the response when pruning is enabled (related to #11366).

Tree-SHA512: 56cdec0921f572874f2fdded0990d1722d1435c3ff9979e6bff1afdccdca6f8b214dbe8d7490cdac07b5758909db085132d14340de2cce943241f7ebde7e5b6c
0.16
Wladimir J. van der Laan 7 years ago
parent
commit
2d85899303
No known key found for this signature in database
GPG Key ID: 1E4AED62986CD25D
  1. 30
      test/functional/blockchain.py
  2. 5
      test/functional/test_framework/test_framework.py

30
test/functional/blockchain.py

@ -33,9 +33,10 @@ from test_framework.util import (
class BlockchainTest(BitcoinTestFramework): class BlockchainTest(BitcoinTestFramework):
def set_test_params(self): def set_test_params(self):
self.num_nodes = 1 self.num_nodes = 1
self.extra_args = [['-stopatheight=207']] self.extra_args = [['-stopatheight=207', '-prune=1']]
def run_test(self): def run_test(self):
self._test_getblockchaininfo()
self._test_getchaintxstats() self._test_getchaintxstats()
self._test_gettxoutsetinfo() self._test_gettxoutsetinfo()
self._test_getblockheader() self._test_getblockheader()
@ -44,6 +45,33 @@ class BlockchainTest(BitcoinTestFramework):
self._test_stopatheight() self._test_stopatheight()
assert self.nodes[0].verifychain(4, 0) assert self.nodes[0].verifychain(4, 0)
def _test_getblockchaininfo(self):
self.log.info("Test getblockchaininfo")
keys = [
'bestblockhash',
'bip9_softforks',
'blocks',
'chain',
'chainwork',
'difficulty',
'headers',
'mediantime',
'pruned',
'softforks',
'verificationprogress',
]
res = self.nodes[0].getblockchaininfo()
# result should have pruneheight and default keys if pruning is enabled
assert_equal(sorted(res.keys()), sorted(['pruneheight'] + keys))
# pruneheight should be greater or equal to 0
assert res['pruneheight'] >= 0
self.restart_node(0, ['-stopatheight=207'])
res = self.nodes[0].getblockchaininfo()
# should have exact keys
assert_equal(sorted(res.keys()), keys)
def _test_getchaintxstats(self): def _test_getchaintxstats(self):
chaintxstats = self.nodes[0].getchaintxstats(1) chaintxstats = self.nodes[0].getchaintxstats(1)
# 200 txs plus genesis tx # 200 txs plus genesis tx

5
test/functional/test_framework/test_framework.py

@ -273,6 +273,11 @@ class BitcoinTestFramework(object):
# Wait for nodes to stop # Wait for nodes to stop
node.wait_until_stopped() node.wait_until_stopped()
def restart_node(self, i, extra_args=None):
"""Stop and start a test node"""
self.stop_node(i)
self.start_node(i, extra_args)
def assert_start_raises_init_error(self, i, extra_args=None, expected_msg=None): def assert_start_raises_init_error(self, i, extra_args=None, expected_msg=None):
with tempfile.SpooledTemporaryFile(max_size=2**16) as log_stderr: with tempfile.SpooledTemporaryFile(max_size=2**16) as log_stderr:
try: try:

Loading…
Cancel
Save