Merge #13837: qa: Extract rpc_timewait as test param

fa5b440971a0dfdd64c1b86748a573fcd7dc65d3 qa: Extract rpc_timewait as test param (MarcoFalke)

Pull request description:

  Also increase it for wallet_dump and wallet_groups

Tree-SHA512: 7367bc584228bda3010c453713a1505c54a8ef3d116be47dab9934d30594089dfeb27ffa862f7517fd0ec8b5dc07f4904d67ef2a53dd284cbe2a58982e410e2b
This commit is contained in:
Wladimir J. van der Laan 2018-08-02 14:31:47 +02:00 committed by UdjinM6
parent 4bbf00a6e4
commit d33dd31032
No known key found for this signature in database
GPG Key ID: 83592BD1400D58D9
7 changed files with 19 additions and 22 deletions

View File

@ -74,14 +74,14 @@ class FullBlockTest(BitcoinTestFramework):
def set_test_params(self): def set_test_params(self):
self.num_nodes = 1 self.num_nodes = 1
self.setup_clean_chain = True self.setup_clean_chain = True
# Very large reorgs cause cs_main to be held for a very long time in ActivateBestChainStep,
# which causes RPC to hang, so we need to increase RPC timeouts
self.rpc_timeout = 180
# Must set '-dip3params=2000:2000' to create pre-dip3 blocks only # Must set '-dip3params=2000:2000' to create pre-dip3 blocks only
self.extra_args = [['-dip3params=2000:2000']] self.extra_args = [['-dip3params=2000:2000']]
def setup_nodes(self): def setup_nodes(self):
# Very large reorgs cause cs_main to be held for a very long time in ActivateBestChainStep, self.add_nodes(self.num_nodes, self.extra_args)
# which causes RPC to hang, so we need to increase RPC timeouts
# TODO remove this when bitcoin#13837 gets backported and change it to use self.rpc_timeout
self.add_nodes(self.num_nodes, self.extra_args, timewait=180)
self.start_nodes() self.start_nodes()
def run_test(self): def run_test(self):

View File

@ -45,6 +45,8 @@ class ChainstateWriteCrashTest(BitcoinTestFramework):
def set_test_params(self): def set_test_params(self):
self.num_nodes = 4 self.num_nodes = 4
self.setup_clean_chain = False self.setup_clean_chain = False
# Need a bit of extra time for the nodes to start up for this test
self.rpc_timewait = 90
# Set -maxmempool=0 to turn off mempool memory sharing with dbcache # Set -maxmempool=0 to turn off mempool memory sharing with dbcache
# Set -rpcservertimeout=900 to reduce socket disconnects in this # Set -rpcservertimeout=900 to reduce socket disconnects in this
@ -66,8 +68,7 @@ class ChainstateWriteCrashTest(BitcoinTestFramework):
self.crashed_on_restart = 0 # Track count of crashes during recovery self.crashed_on_restart = 0 # Track count of crashes during recovery
def setup_network(self): def setup_network(self):
# Need a bit of extra time for the nodes to start up for this test self.add_nodes(self.num_nodes, extra_args=self.extra_args)
self.add_nodes(self.num_nodes, extra_args=self.extra_args, timewait=90)
self.start_nodes() self.start_nodes()
# Leave them unconnected, we'll use submitblock directly in this test # Leave them unconnected, we'll use submitblock directly in this test

View File

@ -28,6 +28,7 @@ class PruneTest(BitcoinTestFramework):
def set_test_params(self): def set_test_params(self):
self.setup_clean_chain = True self.setup_clean_chain = True
self.num_nodes = 6 self.num_nodes = 6
self.rpc_timewait = 900
# Create nodes 0 and 1 to mine. # Create nodes 0 and 1 to mine.
# Create node 2 to test pruning. # Create node 2 to test pruning.
@ -54,7 +55,7 @@ class PruneTest(BitcoinTestFramework):
self.sync_blocks(self.nodes[0:5]) self.sync_blocks(self.nodes[0:5])
def setup_nodes(self): def setup_nodes(self):
self.add_nodes(self.num_nodes, self.extra_args, timewait=900) self.add_nodes(self.num_nodes, self.extra_args)
self.start_nodes() self.start_nodes()
def create_big_chain(self): def create_big_chain(self):

View File

@ -107,6 +107,7 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
self.nodes = [] self.nodes = []
self.network_thread = None self.network_thread = None
self.mocktime = 0 self.mocktime = 0
self.rpc_timewait = 60 # Wait for up to 60 seconds for the RPC server to respond
self.supports_cli = False self.supports_cli = False
self.bind_to_localhost_only = True self.bind_to_localhost_only = True
self.extra_args_from_options = [] self.extra_args_from_options = []
@ -291,7 +292,7 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
# Public helper methods. These can be accessed by the subclass test scripts. # Public helper methods. These can be accessed by the subclass test scripts.
def add_nodes(self, num_nodes, extra_args=None, rpchost=None, timewait=None, binary=None): def add_nodes(self, num_nodes, extra_args=None, *, rpchost=None, binary=None):
"""Instantiate TestNode objects""" """Instantiate TestNode objects"""
if self.bind_to_localhost_only: if self.bind_to_localhost_only:
extra_confs = [["bind=127.0.0.1"]] * num_nodes extra_confs = [["bind=127.0.0.1"]] * num_nodes
@ -306,7 +307,7 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
assert_equal(len(binary), num_nodes) assert_equal(len(binary), num_nodes)
old_num_nodes = len(self.nodes) old_num_nodes = len(self.nodes)
for i in range(num_nodes): for i in range(num_nodes):
self.nodes.append(TestNode(old_num_nodes + i, get_datadir_path(self.options.tmpdir, old_num_nodes + i), self.extra_args_from_options, chain=self.chain, rpchost=rpchost, timewait=timewait, bitcoind=binary[i], bitcoin_cli=self.options.bitcoincli, mocktime=self.mocktime, coverage_dir=self.options.coveragedir, extra_conf=extra_confs[i], extra_args=extra_args[i], use_cli=self.options.usecli)) self.nodes.append(TestNode(old_num_nodes + i, get_datadir_path(self.options.tmpdir, old_num_nodes + i), self.extra_args_from_options, chain=self.chain, rpchost=rpchost, timewait=self.rpc_timewait, bitcoind=binary[i], bitcoin_cli=self.options.bitcoincli, mocktime=self.mocktime, coverage_dir=self.options.coveragedir, extra_conf=extra_confs[i], extra_args=extra_args[i], use_cli=self.options.usecli))
def start_node(self, i, *args, **kwargs): def start_node(self, i, *args, **kwargs):
"""Start a dashd""" """Start a dashd"""
@ -477,7 +478,7 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
args.append("-connect=127.0.0.1:" + str(p2p_port(0))) args.append("-connect=127.0.0.1:" + str(p2p_port(0)))
if extra_args is not None: if extra_args is not None:
args.extend(extra_args) args.extend(extra_args)
self.nodes.append(TestNode(i, get_datadir_path(self.options.cachedir, i), chain=self.chain, extra_conf=["bind=127.0.0.1"], extra_args=[], extra_args_from_options=self.extra_args_from_options, rpchost=None, timewait=None, bitcoind=self.options.bitcoind, bitcoin_cli=self.options.bitcoincli, mocktime=self.mocktime, coverage_dir=None)) self.nodes.append(TestNode(i, get_datadir_path(self.options.cachedir, i), chain=self.chain, extra_conf=["bind=127.0.0.1"], extra_args=[], extra_args_from_options=self.extra_args_from_options, rpchost=None, timewait=self.rpc_timewait, bitcoind=self.options.bitcoind, bitcoin_cli=self.options.bitcoincli, mocktime=self.mocktime, coverage_dir=None))
self.nodes[i].args = args self.nodes[i].args = args
self.start_node(i) self.start_node(i)

View File

@ -60,18 +60,14 @@ class TestNode():
To make things easier for the test writer, any unrecognised messages will To make things easier for the test writer, any unrecognised messages will
be dispatched to the RPC connection.""" be dispatched to the RPC connection."""
def __init__(self, i, datadir, extra_args_from_options, chain, rpchost, timewait, bitcoind, bitcoin_cli, mocktime, coverage_dir, extra_conf=None, extra_args=None, use_cli=False): def __init__(self, i, datadir, extra_args_from_options, *, chain, rpchost, timewait, bitcoind, bitcoin_cli, mocktime, coverage_dir, extra_conf=None, extra_args=None, use_cli=False):
self.index = i self.index = i
self.datadir = datadir self.datadir = datadir
self.chain = chain self.chain = chain
self.stdout_dir = os.path.join(self.datadir, "stdout") self.stdout_dir = os.path.join(self.datadir, "stdout")
self.stderr_dir = os.path.join(self.datadir, "stderr") self.stderr_dir = os.path.join(self.datadir, "stderr")
self.rpchost = rpchost self.rpchost = rpchost
if timewait: self.rpc_timeout = timewait
self.rpc_timeout = timewait
else:
# Wait for up to 60 seconds for the RPC server to respond
self.rpc_timeout = 60
self.rpc_timeout *= Options.timeout_scale self.rpc_timeout *= Options.timeout_scale
self.binary = bitcoind self.binary = bitcoind
self.coverage_dir = coverage_dir self.coverage_dir = coverage_dir

View File

@ -73,6 +73,7 @@ class WalletDumpTest(BitcoinTestFramework):
self.setup_clean_chain = True self.setup_clean_chain = True
self.num_nodes = 1 self.num_nodes = 1
self.extra_args = [["-keypool=90", "-usehd=1"]] self.extra_args = [["-keypool=90", "-usehd=1"]]
self.rpc_timeout = 120
def setup_network(self): def setup_network(self):
# TODO remove this when usehd=1 becomes the default # TODO remove this when usehd=1 becomes the default
@ -81,14 +82,10 @@ class WalletDumpTest(BitcoinTestFramework):
self.options.cachedir = os.path.join(self.options.cachedir, 'hd') self.options.cachedir = os.path.join(self.options.cachedir, 'hd')
self._initialize_chain(extra_args=self.extra_args[0]) self._initialize_chain(extra_args=self.extra_args[0])
self.set_cache_mocktime() self.set_cache_mocktime()
# Use 1 minute timeout because the initial getnewaddress RPC can take self.add_nodes(self.num_nodes, extra_args=self.extra_args)
# longer than the default 30 seconds due to an expensive
# CWallet::TopUpKeyPool call, and the encryptwallet RPC made later in
# the test often takes even longer.
self.add_nodes(self.num_nodes, extra_args=self.extra_args, timewait=60)
self.start_nodes() self.start_nodes()
def run_test (self): def run_test(self):
wallet_unenc_dump = os.path.join(self.nodes[0].datadir, "wallet.unencrypted.dump") wallet_unenc_dump = os.path.join(self.nodes[0].datadir, "wallet.unencrypted.dump")
wallet_enc_dump = os.path.join(self.nodes[0].datadir, "wallet.encrypted.dump") wallet_enc_dump = os.path.join(self.nodes[0].datadir, "wallet.encrypted.dump")

View File

@ -22,6 +22,7 @@ class WalletGroupTest(BitcoinTestFramework):
self.setup_clean_chain = True self.setup_clean_chain = True
self.num_nodes = 3 self.num_nodes = 3
self.extra_args = [[], [], ['-avoidpartialspends']] self.extra_args = [[], [], ['-avoidpartialspends']]
self.rpc_timewait = 120
def run_test (self): def run_test (self):
# Mine some coins # Mine some coins