Merge #13837: qa: Extract rpc_timewait as test param

fa5b440971 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
commit 990e182587
No known key found for this signature in database
GPG key ID: 1E4AED62986CD25D
6 changed files with 15 additions and 18 deletions

View file

@ -46,6 +46,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
@ -63,8 +65,7 @@ class ChainstateWriteCrashTest(BitcoinTestFramework):
self.extra_args = [self.node0_args, self.node1_args, self.node2_args, self.node3_args] self.extra_args = [self.node0_args, self.node1_args, self.node2_args, self.node3_args]
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):
sync_blocks(self.nodes[0:5]) 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

@ -86,6 +86,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.set_test_params() self.set_test_params()
@ -252,7 +253,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
@ -266,7 +267,7 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
assert_equal(len(extra_args), num_nodes) assert_equal(len(extra_args), num_nodes)
assert_equal(len(binary), num_nodes) assert_equal(len(binary), num_nodes)
for i in range(num_nodes): for i in range(num_nodes):
self.nodes.append(TestNode(i, get_datadir_path(self.options.tmpdir, i), 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(i, get_datadir_path(self.options.tmpdir, i), 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 bitcoind""" """Start a bitcoind"""
@ -417,7 +418,7 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
args = [self.options.bitcoind, "-datadir=" + datadir] args = [self.options.bitcoind, "-datadir=" + datadir]
if i > 0: if i > 0:
args.append("-connect=127.0.0.1:" + str(p2p_port(0))) args.append("-connect=127.0.0.1:" + str(p2p_port(0)))
self.nodes.append(TestNode(i, get_datadir_path(self.options.cachedir, i), extra_conf=["bind=127.0.0.1"], extra_args=[], 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), extra_conf=["bind=127.0.0.1"], extra_args=[], 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

@ -56,17 +56,13 @@ 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, rpchost, timewait, bitcoind, bitcoin_cli, mocktime, coverage_dir, extra_conf=None, extra_args=None, use_cli=False): def __init__(self, i, datadir, *, 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.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.binary = bitcoind self.binary = bitcoind
self.coverage_dir = coverage_dir self.coverage_dir = coverage_dir
if extra_conf != None: if extra_conf != None:

View file

@ -81,16 +81,13 @@ class WalletDumpTest(BitcoinTestFramework):
def set_test_params(self): def set_test_params(self):
self.num_nodes = 1 self.num_nodes = 1
self.extra_args = [["-keypool=90", "-addresstype=legacy", "-deprecatedrpc=addwitnessaddress"]] self.extra_args = [["-keypool=90", "-addresstype=legacy", "-deprecatedrpc=addwitnessaddress"]]
self.rpc_timeout = 120
def setup_network(self, split=False): def setup_network(self, split=False):
# 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