Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[tests] bind functional test nodes to 127.0.0.1 #12482

Merged
merged 1 commit into from Mar 7, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions test/functional/rpc_bind.py
Expand Up @@ -14,6 +14,7 @@
class RPCBindTest(BitcoinTestFramework):
def set_test_params(self):
self.setup_clean_chain = True
self.bind_to_localhost_only = False
self.num_nodes = 1

def setup_network(self):
Expand Down
11 changes: 8 additions & 3 deletions test/functional/test_framework/test_framework.py
Expand Up @@ -63,6 +63,7 @@ def __init__(self):
self.nodes = []
self.mocktime = 0
self.supports_cli = False
self.bind_to_localhost_only = True
self.set_test_params()

assert hasattr(self, "num_nodes"), "Test must set self.num_nodes in set_test_params()"
Expand Down Expand Up @@ -215,15 +216,19 @@ def run_test(self):

def add_nodes(self, num_nodes, extra_args=None, rpchost=None, timewait=None, binary=None):
"""Instantiate TestNode objects"""

if self.bind_to_localhost_only:
extra_confs = [["bind=127.0.0.1"]] * num_nodes
else:
extra_confs = [[]] * num_nodes
if extra_args is None:
extra_args = [[]] * num_nodes
if binary is None:
binary = [None] * num_nodes
assert_equal(len(extra_confs), num_nodes)
assert_equal(len(extra_args), num_nodes)
assert_equal(len(binary), num_nodes)
for i in range(num_nodes):
self.nodes.append(TestNode(i, self.options.tmpdir, extra_args[i], rpchost, timewait=timewait, binary=binary[i], stderr=None, mocktime=self.mocktime, coverage_dir=self.options.coveragedir, use_cli=self.options.usecli))
self.nodes.append(TestNode(i, self.options.tmpdir, rpchost=rpchost, timewait=timewait, binary=binary[i], stderr=None, 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):
"""Start a bitcoind"""
Expand Down Expand Up @@ -395,7 +400,7 @@ def _initialize_chain(self):
args = [os.getenv("BITCOIND", "bitcoind"), "-datadir=" + datadir]
if i > 0:
args.append("-connect=127.0.0.1:" + str(p2p_port(0)))
self.nodes.append(TestNode(i, self.options.cachedir, extra_args=[], rpchost=None, timewait=None, binary=None, stderr=None, mocktime=self.mocktime, coverage_dir=None))
self.nodes.append(TestNode(i, self.options.cachedir, extra_conf=["bind=127.0.0.1"], extra_args=[],rpchost=None, timewait=None, binary=None, stderr=None, mocktime=self.mocktime, coverage_dir=None))
self.nodes[i].args = args
self.start_node(i)

Expand Down
5 changes: 4 additions & 1 deletion test/functional/test_framework/test_node.py
Expand Up @@ -16,6 +16,7 @@

from .authproxy import JSONRPCException
from .util import (
append_config,
assert_equal,
get_rpc_proxy,
rpc_url,
Expand All @@ -42,7 +43,7 @@ class TestNode():
To make things easier for the test writer, any unrecognised messages will
be dispatched to the RPC connection."""

def __init__(self, i, dirname, extra_args, rpchost, timewait, binary, stderr, mocktime, coverage_dir, use_cli=False):
def __init__(self, i, dirname, rpchost, timewait, binary, stderr, mocktime, coverage_dir, extra_conf=None, extra_args=None, use_cli=False):
self.index = i
self.datadir = os.path.join(dirname, "node" + str(i))
self.rpchost = rpchost
Expand All @@ -57,6 +58,8 @@ def __init__(self, i, dirname, extra_args, rpchost, timewait, binary, stderr, mo
self.binary = binary
self.stderr = stderr
self.coverage_dir = coverage_dir
if extra_conf != None:
append_config(dirname, i, extra_conf)
# Most callers will just need to add extra args to the standard list below.
# For those callers that need more flexibity, they can just set the args property directly.
# Note that common args are set in the config file (see initialize_datadir)
Expand Down
6 changes: 6 additions & 0 deletions test/functional/test_framework/util.py
Expand Up @@ -300,6 +300,12 @@ def initialize_datadir(dirname, n):
def get_datadir_path(dirname, n):
return os.path.join(dirname, "node" + str(n))

def append_config(dirname, n, options):
datadir = get_datadir_path(dirname, n)
with open(os.path.join(datadir, "bitcoin.conf"), 'a', encoding='utf8') as f:
for option in options:
f.write(option + "\n")

def get_auth_cookie(datadir):
user = None
password = None
Expand Down
2 changes: 1 addition & 1 deletion test/functional/wallet_dump.py
Expand Up @@ -84,7 +84,7 @@ def setup_network(self, split=False):
# 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, self.extra_args, timewait=60)
self.add_nodes(self.num_nodes, extra_args=self.extra_args, timewait=60)
self.start_nodes()

def run_test (self):
Expand Down
2 changes: 1 addition & 1 deletion test/functional/wallet_import_rescan.py
Expand Up @@ -124,7 +124,7 @@ def setup_network(self):
if import_node.prune:
extra_args[i] += ["-prune=1"]

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