Skip to content

Commit

Permalink
Merge bitcoin#10359: [tests] functional tests should call BitcoinTest…
Browse files Browse the repository at this point in the history
…Framework start/stop node methods

53f6775 fixup: fix nits (John Newbery)
a433d8a [tests] Update start/stop node functions to be private module functions (John Newbery)
d8c218f [tests] Functional tests call self.start_node(s) and self.stop_node(s) (John Newbery)

Tree-SHA512: 9cc01584a5e57686b7e7cb1c4c5186ad8cc7eb650d6d4f27b06bdb5e249a10966705814bdfb22d9ff2d5d3326911e489bf3d22257d751a299c0b24b7f40bffb5
  • Loading branch information
MarcoFalke committed Jun 2, 2017
2 parents 1aefc94 + 53f6775 commit 329fc1d
Show file tree
Hide file tree
Showing 30 changed files with 125 additions and 128 deletions.
12 changes: 6 additions & 6 deletions test/functional/abandonconflict.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,8 @@ def run_test(self):

# Restart the node with a higher min relay fee so the parent tx is no longer in mempool
# TODO: redo with eviction
stop_node(self.nodes[0],0)
self.nodes[0]=start_node(0, self.options.tmpdir, ["-minrelaytxfee=0.0001"])
self.stop_node(0)
self.nodes[0] = self.start_node(0, self.options.tmpdir, ["-minrelaytxfee=0.0001"])

# Verify txs no longer in either node's mempool
assert_equal(len(self.nodes[0].getrawmempool()), 0)
Expand All @@ -100,8 +100,8 @@ def run_test(self):
balance = newbalance

# Verify that even with a low min relay fee, the tx is not reaccepted from wallet on startup once abandoned
stop_node(self.nodes[0],0)
self.nodes[0]=start_node(0, self.options.tmpdir, ["-minrelaytxfee=0.00001"])
self.stop_node(0)
self.nodes[0] = self.start_node(0, self.options.tmpdir, ["-minrelaytxfee=0.00001"])
assert_equal(len(self.nodes[0].getrawmempool()), 0)
assert_equal(self.nodes[0].getbalance(), balance)

Expand All @@ -120,8 +120,8 @@ def run_test(self):
balance = newbalance

# Remove using high relay fee again
stop_node(self.nodes[0],0)
self.nodes[0]=start_node(0, self.options.tmpdir, ["-minrelaytxfee=0.0001"])
self.stop_node(0)
self.nodes[0] = self.start_node(0, self.options.tmpdir, ["-minrelaytxfee=0.0001"])
assert_equal(len(self.nodes[0].getrawmempool()), 0)
newbalance = self.nodes[0].getbalance()
assert_equal(newbalance, balance - Decimal("24.9996"))
Expand Down
8 changes: 4 additions & 4 deletions test/functional/assumevalid.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
msg_headers)
from test_framework.script import (CScript, OP_TRUE)
from test_framework.test_framework import BitcoinTestFramework
from test_framework.util import (start_node, p2p_port, assert_equal)
from test_framework.util import (p2p_port, assert_equal)

class BaseNode(NodeConnCB):
def send_header_for_blocks(self, new_blocks):
Expand All @@ -63,7 +63,7 @@ def setup_network(self):
# Start node0. We don't start the other nodes yet since
# we need to pre-mine a block with an invalid transaction
# signature so we can pass in the block hash as assumevalid.
self.nodes = [start_node(0, self.options.tmpdir)]
self.nodes = [self.start_node(0, self.options.tmpdir)]

def send_blocks_until_disconnected(self, node):
"""Keep sending blocks to the node until we're disconnected."""
Expand Down Expand Up @@ -162,14 +162,14 @@ def run_test(self):
height += 1

# Start node1 and node2 with assumevalid so they accept a block with a bad signature.
self.nodes.append(start_node(1, self.options.tmpdir,
self.nodes.append(self.start_node(1, self.options.tmpdir,
["-assumevalid=" + hex(block102.sha256)]))
node1 = BaseNode() # connects to node1
connections.append(NodeConn('127.0.0.1', p2p_port(1), self.nodes[1], node1))
node1.add_connection(connections[1])
node1.wait_for_verack()

self.nodes.append(start_node(2, self.options.tmpdir,
self.nodes.append(self.start_node(2, self.options.tmpdir,
["-assumevalid=" + hex(block102.sha256)]))
node2 = BaseNode() # connects to node2
connections.append(NodeConn('127.0.0.1', p2p_port(2), self.nodes[2], node2))
Expand Down
2 changes: 1 addition & 1 deletion test/functional/bip9-softforks.py
Original file line number Diff line number Diff line change
Expand Up @@ -239,7 +239,7 @@ def test_BIP(self, bipName, activated_version, invalidate, invalidatePostSignatu

# Restart all
self.test.clear_all_connections()
stop_nodes(self.nodes)
self.stop_nodes()
shutil.rmtree(self.options.tmpdir + "/node0")
self.setup_chain()
self.setup_network()
Expand Down
4 changes: 2 additions & 2 deletions test/functional/bumpfee.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,12 @@ def __init__(self):
def setup_network(self, split=False):
extra_args = [["-prematurewitness", "-walletprematurewitness", "-walletrbf={}".format(i)]
for i in range(self.num_nodes)]
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir, extra_args)
self.nodes = self.start_nodes(self.num_nodes, self.options.tmpdir, extra_args)

# Encrypt wallet for test_locked_wallet_fails test
self.nodes[1].encryptwallet(WALLET_PASSPHRASE)
bitcoind_processes[1].wait()
self.nodes[1] = start_node(1, self.options.tmpdir, extra_args[1])
self.nodes[1] = self.start_node(1, self.options.tmpdir, extra_args[1])
self.nodes[1].walletpassphrase(WALLET_PASSPHRASE, WALLET_PASSPHRASE_TIMEOUT)

connect_nodes_bi(self.nodes, 0, 1)
Expand Down
9 changes: 3 additions & 6 deletions test/functional/disconnect_ban.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,7 @@
from test_framework.test_framework import BitcoinTestFramework
from test_framework.util import (assert_equal,
assert_raises_jsonrpc,
connect_nodes_bi,
start_node,
stop_node,
)
connect_nodes_bi)

class DisconnectBanTest(BitcoinTestFramework):

Expand Down Expand Up @@ -68,9 +65,9 @@ def run_test(self):
self.nodes[1].setmocktime(old_time + 3)
assert_equal(len(self.nodes[1].listbanned()), 3)

stop_node(self.nodes[1], 1)
self.stop_node(1)

self.nodes[1] = start_node(1, self.options.tmpdir)
self.nodes[1] = self.start_node(1, self.options.tmpdir)
listAfterShutdown = self.nodes[1].listbanned()
assert_equal("127.0.0.0/24", listAfterShutdown[0]['address'])
assert_equal("127.0.0.0/32", listAfterShutdown[1]['address'])
Expand Down
4 changes: 2 additions & 2 deletions test/functional/forknotify.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@ def setup_network(self):
self.alert_filename = os.path.join(self.options.tmpdir, "alert.txt")
with open(self.alert_filename, 'w', encoding='utf8'):
pass # Just open then close to create zero-length file
self.nodes.append(start_node(0, self.options.tmpdir,
self.nodes.append(self.start_node(0, self.options.tmpdir,
["-blockversion=2", "-alertnotify=echo %s >> \"" + self.alert_filename + "\""]))
# Node1 mines block.version=211 blocks
self.nodes.append(start_node(1, self.options.tmpdir,
self.nodes.append(self.start_node(1, self.options.tmpdir,
["-blockversion=211"]))
connect_nodes(self.nodes[1], 0)

Expand Down
8 changes: 4 additions & 4 deletions test/functional/fundrawtransaction.py
Original file line number Diff line number Diff line change
Expand Up @@ -448,13 +448,13 @@ def run_test(self):

############################################################
# locked wallet test
self.stop_node(0)
self.stop_node(2)
self.stop_node(3)
self.nodes[1].encryptwallet("test")
self.nodes.pop(1)
stop_node(self.nodes[0], 0)
stop_node(self.nodes[1], 2)
stop_node(self.nodes[2], 3)

self.nodes = start_nodes(self.num_nodes, self.options.tmpdir)
self.nodes = self.start_nodes(self.num_nodes, self.options.tmpdir)
# This test is not meant to test fee estimation and we'd like
# to be sure all txs are sent at a consistent desired feerate
for node in self.nodes:
Expand Down
4 changes: 2 additions & 2 deletions test/functional/import-rescan.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@

from test_framework.authproxy import JSONRPCException
from test_framework.test_framework import BitcoinTestFramework
from test_framework.util import (start_nodes, connect_nodes, sync_blocks, assert_equal, set_node_times)
from test_framework.util import (connect_nodes, sync_blocks, assert_equal, set_node_times)

import collections
import enum
Expand Down Expand Up @@ -121,7 +121,7 @@ def setup_network(self):
if import_node.prune:
extra_args[i] += ["-prune=1"]

self.nodes = start_nodes(self.num_nodes, self.options.tmpdir, extra_args)
self.nodes = self.start_nodes(self.num_nodes, self.options.tmpdir, extra_args)
for i in range(1, self.num_nodes):
connect_nodes(self.nodes[i], 0)

Expand Down
4 changes: 2 additions & 2 deletions test/functional/importmulti.py
Original file line number Diff line number Diff line change
Expand Up @@ -428,8 +428,8 @@ def run_test (self):


# restart nodes to check for proper serialization/deserialization of watch only address
stop_nodes(self.nodes)
self.nodes = start_nodes(2, self.options.tmpdir)
self.stop_nodes()
self.nodes = self.start_nodes(2, self.options.tmpdir)
address_assert = self.nodes[1].validateaddress(watchonly_address)
assert_equal(address_assert['iswatchonly'], True)
assert_equal(address_assert['ismine'], False)
Expand Down
2 changes: 1 addition & 1 deletion test/functional/keypool.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ def run_test(self):
nodes[0].encryptwallet('test')
bitcoind_processes[0].wait()
# Restart node 0
nodes[0] = start_node(0, self.options.tmpdir)
nodes[0] = self.start_node(0, self.options.tmpdir)
# Keep creating keys
addr = nodes[0].getnewaddress()
addr_data = nodes[0].validateaddress(addr)
Expand Down
2 changes: 1 addition & 1 deletion test/functional/listtransactions.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ def __init__(self):
def setup_nodes(self):
#This test requires mocktime
enable_mocktime()
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir)
self.nodes = self.start_nodes(self.num_nodes, self.options.tmpdir)

def run_test(self):
# Simple send, 0 to 1:
Expand Down
4 changes: 2 additions & 2 deletions test/functional/maxuploadtarget.py
Original file line number Diff line number Diff line change
Expand Up @@ -146,8 +146,8 @@ def run_test(self):

#stop and start node 0 with 1MB maxuploadtarget, whitelist 127.0.0.1
self.log.info("Restarting nodes with -whitelist=127.0.0.1")
stop_node(self.nodes[0], 0)
self.nodes[0] = start_node(0, self.options.tmpdir, ["-whitelist=127.0.0.1", "-maxuploadtarget=1", "-blockmaxsize=999000"])
self.stop_node(0)
self.nodes[0] = self.start_node(0, self.options.tmpdir, ["-whitelist=127.0.0.1", "-maxuploadtarget=1", "-blockmaxsize=999000"])

#recreate/reconnect a test node
test_nodes = [TestNode()]
Expand Down
14 changes: 7 additions & 7 deletions test/functional/mempool_persist.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,27 +63,27 @@ def run_test(self):
assert_equal(len(self.nodes[1].getrawmempool()), 5)

self.log.debug("Stop-start node0 and node1. Verify that node0 has the transactions in its mempool and node1 does not.")
stop_nodes(self.nodes)
self.stop_nodes()
self.nodes = []
self.nodes.append(start_node(0, self.options.tmpdir))
self.nodes.append(start_node(1, self.options.tmpdir))
self.nodes.append(self.start_node(0, self.options.tmpdir))
self.nodes.append(self.start_node(1, self.options.tmpdir))
# Give bitcoind a second to reload the mempool
time.sleep(1)
assert wait_until(lambda: len(self.nodes[0].getrawmempool()) == 5)
assert_equal(len(self.nodes[1].getrawmempool()), 0)

self.log.debug("Stop-start node0 with -persistmempool=0. Verify that it doesn't load its mempool.dat file.")
stop_nodes(self.nodes)
self.stop_nodes()
self.nodes = []
self.nodes.append(start_node(0, self.options.tmpdir, ["-persistmempool=0"]))
self.nodes.append(self.start_node(0, self.options.tmpdir, ["-persistmempool=0"]))
# Give bitcoind a second to reload the mempool
time.sleep(1)
assert_equal(len(self.nodes[0].getrawmempool()), 0)

self.log.debug("Stop-start node0. Verify that it has the transactions in its mempool.")
stop_nodes(self.nodes)
self.stop_nodes()
self.nodes = []
self.nodes.append(start_node(0, self.options.tmpdir))
self.nodes.append(self.start_node(0, self.options.tmpdir))
assert wait_until(lambda: len(self.nodes[0].getrawmempool()) == 5)

if __name__ == '__main__':
Expand Down
4 changes: 2 additions & 2 deletions test/functional/p2p-segwit.py
Original file line number Diff line number Diff line change
Expand Up @@ -1495,8 +1495,8 @@ def test_upgrade_after_activation(self, node, node_id):
sync_blocks(self.nodes)

# Restart with the new binary
stop_node(node, node_id)
self.nodes[node_id] = start_node(node_id, self.options.tmpdir)
self.stop_node(node_id)
self.nodes[node_id] = self.start_node(node_id, self.options.tmpdir)
connect_nodes(self.nodes[0], node_id)

sync_blocks(self.nodes)
Expand Down
8 changes: 4 additions & 4 deletions test/functional/p2p-versionbits-warning.py
Original file line number Diff line number Diff line change
Expand Up @@ -108,22 +108,22 @@ def run_test(self):
# is cleared, and restart the node. This should move the versionbit state
# to ACTIVE.
self.nodes[0].generate(VB_PERIOD)
stop_nodes(self.nodes)
self.stop_nodes()
# Empty out the alert file
with open(self.alert_filename, 'w', encoding='utf8') as _:
pass
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir, self.extra_args)
self.nodes = self.start_nodes(self.num_nodes, self.options.tmpdir, self.extra_args)

# Connecting one block should be enough to generate an error.
self.nodes[0].generate(1)
assert(WARN_UNKNOWN_RULES_ACTIVE in self.nodes[0].getinfo()["errors"])
assert(WARN_UNKNOWN_RULES_ACTIVE in self.nodes[0].getmininginfo()["errors"])
assert(WARN_UNKNOWN_RULES_ACTIVE in self.nodes[0].getnetworkinfo()["warnings"])
stop_nodes(self.nodes)
self.stop_nodes()
self.test_versionbits_in_alert_file()

# Test framework expects the node to still be running...
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir, self.extra_args)
self.nodes = self.start_nodes(self.num_nodes, self.options.tmpdir, self.extra_args)

if __name__ == '__main__':
VersionBitsWarningTest().main()
3 changes: 1 addition & 2 deletions test/functional/proxy_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@
from test_framework.util import (
PORT_MIN,
PORT_RANGE,
start_nodes,
assert_equal,
)
from test_framework.netutil import test_ipv6_local
Expand Down Expand Up @@ -90,7 +89,7 @@ def setup_nodes(self):
]
if self.have_ipv6:
args[3] = ['-listen', '-proxy=[%s]:%i' % (self.conf3.addr),'-proxyrandomize=0', '-noonion']
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir, extra_args=args)
self.nodes = self.start_nodes(self.num_nodes, self.options.tmpdir, extra_args=args)

def node_test(self, node, proxies, auth, test_onion=True):
rv = []
Expand Down
16 changes: 8 additions & 8 deletions test/functional/pruning.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ def create_chain_with_staleblocks(self):
# Node 2 stays connected, so it hears about the stale blocks and then reorg's when node0 reconnects
# Stopping node 0 also clears its mempool, so it doesn't have node1's transactions to accidentally mine
self.stop_node(0)
self.nodes[0]=start_node(0, self.options.tmpdir, self.full_node_default_args, timewait=900)
self.nodes[0]=self.start_node(0, self.options.tmpdir, self.full_node_default_args, timewait=900)
# Mine 24 blocks in node 1
for i in range(24):
if j == 0:
Expand Down Expand Up @@ -126,7 +126,7 @@ def reorg_test(self):
# Reboot node 1 to clear its mempool (hopefully make the invalidate faster)
# Lower the block max size so we don't keep mining all our big mempool transactions (from disconnected blocks)
self.stop_node(1)
self.nodes[1]=start_node(1, self.options.tmpdir, ["-maxreceivebuffer=20000","-blockmaxsize=5000", "-checkblocks=5", "-disablesafemode"], timewait=900)
self.nodes[1] = self.start_node(1, self.options.tmpdir, ["-maxreceivebuffer=20000","-blockmaxsize=5000", "-checkblocks=5", "-disablesafemode"], timewait=900)

height = self.nodes[1].getblockcount()
self.log.info("Current block height: %d" % height)
Expand All @@ -149,7 +149,7 @@ def reorg_test(self):

# Reboot node1 to clear those giant tx's from mempool
self.stop_node(1)
self.nodes[1]=start_node(1, self.options.tmpdir, ["-maxreceivebuffer=20000","-blockmaxsize=5000", "-checkblocks=5", "-disablesafemode"], timewait=900)
self.nodes[1] = self.start_node(1, self.options.tmpdir, ["-maxreceivebuffer=20000","-blockmaxsize=5000", "-checkblocks=5", "-disablesafemode"], timewait=900)

self.log.info("Generating new longer chain of 300 more blocks")
self.nodes[1].generate(300)
Expand Down Expand Up @@ -227,13 +227,13 @@ def reorg_back(self):

def manual_test(self, node_number, use_timestamp):
# at this point, node has 995 blocks and has not yet run in prune mode
node = self.nodes[node_number] = start_node(node_number, self.options.tmpdir, timewait=900)
node = self.nodes[node_number] = self.start_node(node_number, self.options.tmpdir, timewait=900)
assert_equal(node.getblockcount(), 995)
assert_raises_jsonrpc(-1, "not in prune mode", node.pruneblockchain, 500)
self.stop_node(node_number)

# now re-start in manual pruning mode
node = self.nodes[node_number] = start_node(node_number, self.options.tmpdir, ["-prune=1"], timewait=900)
node = self.nodes[node_number] = self.start_node(node_number, self.options.tmpdir, ["-prune=1"], timewait=900)
assert_equal(node.getblockcount(), 995)

def height(index):
Expand Down Expand Up @@ -307,15 +307,15 @@ def has_block(index):

# stop node, start back up with auto-prune at 550MB, make sure still runs
self.stop_node(node_number)
self.nodes[node_number] = start_node(node_number, self.options.tmpdir, ["-prune=550"], timewait=900)
self.nodes[node_number] = self.start_node(node_number, self.options.tmpdir, ["-prune=550"], timewait=900)

self.log.info("Success")

def wallet_test(self):
# check that the pruning node's wallet is still in good shape
self.log.info("Stop and start pruning node to trigger wallet rescan")
self.stop_node(2)
start_node(2, self.options.tmpdir, ["-prune=550"])
self.start_node(2, self.options.tmpdir, ["-prune=550"])
self.log.info("Success")

# check that wallet loads loads successfully when restarting a pruned node after IBD.
Expand All @@ -325,7 +325,7 @@ def wallet_test(self):
nds = [self.nodes[0], self.nodes[5]]
sync_blocks(nds, wait=5, timeout=300)
self.stop_node(5) #stop and start to trigger rescan
start_node(5, self.options.tmpdir, ["-prune=550"])
self.start_node(5, self.options.tmpdir, ["-prune=550"])
self.log.info("Success")

def run_test(self):
Expand Down
2 changes: 1 addition & 1 deletion test/functional/receivedby.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ def __init__(self):
def setup_nodes(self):
#This test requires mocktime
enable_mocktime()
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir)
self.nodes = self.start_nodes(self.num_nodes, self.options.tmpdir)

def run_test(self):
'''
Expand Down
10 changes: 3 additions & 7 deletions test/functional/reindex.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,7 @@
"""

from test_framework.test_framework import BitcoinTestFramework
from test_framework.util import (
start_nodes,
stop_nodes,
assert_equal,
)
from test_framework.util import assert_equal
import time

class ReindexTest(BitcoinTestFramework):
Expand All @@ -27,9 +23,9 @@ def __init__(self):
def reindex(self, justchainstate=False):
self.nodes[0].generate(3)
blockcount = self.nodes[0].getblockcount()
stop_nodes(self.nodes)
self.stop_nodes()
extra_args = [["-reindex-chainstate" if justchainstate else "-reindex", "-checkblockindex=1"]]
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir, extra_args)
self.nodes = self.start_nodes(self.num_nodes, self.options.tmpdir, extra_args)
while self.nodes[0].getblockcount() < blockcount:
time.sleep(0.1)
assert_equal(self.nodes[0].getblockcount(), blockcount)
Expand Down
Loading

0 comments on commit 329fc1d

Please sign in to comment.