mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-12 11:19:08 -05:00
test: add getnetworkinfo network name regression tests
This commit is contained in:
parent
9a75e1e569
commit
7b5bd3102e
1 changed files with 20 additions and 10 deletions
|
@ -26,6 +26,8 @@ addnode connect to IPv4
|
||||||
addnode connect to IPv6
|
addnode connect to IPv6
|
||||||
addnode connect to onion
|
addnode connect to onion
|
||||||
addnode connect to generic DNS name
|
addnode connect to generic DNS name
|
||||||
|
|
||||||
|
- Test getnetworkinfo for each node
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import socket
|
import socket
|
||||||
|
@ -41,12 +43,16 @@ from test_framework.util import (
|
||||||
from test_framework.netutil import test_ipv6_local
|
from test_framework.netutil import test_ipv6_local
|
||||||
|
|
||||||
RANGE_BEGIN = PORT_MIN + 2 * PORT_RANGE # Start after p2p and rpc ports
|
RANGE_BEGIN = PORT_MIN + 2 * PORT_RANGE # Start after p2p and rpc ports
|
||||||
# From GetNetworkName() in netbase.cpp:
|
|
||||||
NET_UNROUTABLE = ""
|
# Networks returned by RPC getpeerinfo, defined in src/netbase.cpp::GetNetworkName()
|
||||||
|
NET_UNROUTABLE = "unroutable"
|
||||||
NET_IPV4 = "ipv4"
|
NET_IPV4 = "ipv4"
|
||||||
NET_IPV6 = "ipv6"
|
NET_IPV6 = "ipv6"
|
||||||
NET_ONION = "onion"
|
NET_ONION = "onion"
|
||||||
|
|
||||||
|
# Networks returned by RPC getnetworkinfo, defined in src/rpc/net.cpp::GetNetworksInfo()
|
||||||
|
NETWORKS = frozenset({NET_IPV4, NET_IPV6, NET_ONION})
|
||||||
|
|
||||||
|
|
||||||
class ProxyTest(BitcoinTestFramework):
|
class ProxyTest(BitcoinTestFramework):
|
||||||
def set_test_params(self):
|
def set_test_params(self):
|
||||||
|
@ -84,14 +90,14 @@ class ProxyTest(BitcoinTestFramework):
|
||||||
self.serv3 = Socks5Server(self.conf3)
|
self.serv3 = Socks5Server(self.conf3)
|
||||||
self.serv3.start()
|
self.serv3.start()
|
||||||
|
|
||||||
# Note: proxies are not used to connect to local nodes
|
# Note: proxies are not used to connect to local nodes. This is because the proxy to
|
||||||
# this is because the proxy to use is based on CService.GetNetwork(), which return NET_UNROUTABLE for localhost
|
# use is based on CService.GetNetwork(), which returns NET_UNROUTABLE for localhost.
|
||||||
args = [
|
args = [
|
||||||
['-listen', '-proxy=%s:%i' % (self.conf1.addr),'-proxyrandomize=1'],
|
['-listen', '-proxy=%s:%i' % (self.conf1.addr),'-proxyrandomize=1'],
|
||||||
['-listen', '-proxy=%s:%i' % (self.conf1.addr),'-onion=%s:%i' % (self.conf2.addr),'-proxyrandomize=0'],
|
['-listen', '-proxy=%s:%i' % (self.conf1.addr),'-onion=%s:%i' % (self.conf2.addr),'-proxyrandomize=0'],
|
||||||
['-listen', '-proxy=%s:%i' % (self.conf2.addr),'-proxyrandomize=1'],
|
['-listen', '-proxy=%s:%i' % (self.conf2.addr),'-proxyrandomize=1'],
|
||||||
[]
|
[]
|
||||||
]
|
]
|
||||||
if self.have_ipv6:
|
if self.have_ipv6:
|
||||||
args[3] = ['-listen', '-proxy=[%s]:%i' % (self.conf3.addr),'-proxyrandomize=0', '-noonion']
|
args[3] = ['-listen', '-proxy=[%s]:%i' % (self.conf3.addr),'-proxyrandomize=0', '-noonion']
|
||||||
self.add_nodes(self.num_nodes, extra_args=args)
|
self.add_nodes(self.num_nodes, extra_args=args)
|
||||||
|
@ -189,15 +195,17 @@ class ProxyTest(BitcoinTestFramework):
|
||||||
r[x['name']] = x
|
r[x['name']] = x
|
||||||
return r
|
return r
|
||||||
|
|
||||||
# test RPC getnetworkinfo
|
self.log.info("Test RPC getnetworkinfo")
|
||||||
n0 = networks_dict(self.nodes[0].getnetworkinfo())
|
n0 = networks_dict(self.nodes[0].getnetworkinfo())
|
||||||
for net in ['ipv4','ipv6','onion']:
|
assert_equal(NETWORKS, n0.keys())
|
||||||
|
for net in NETWORKS:
|
||||||
assert_equal(n0[net]['proxy'], '%s:%i' % (self.conf1.addr))
|
assert_equal(n0[net]['proxy'], '%s:%i' % (self.conf1.addr))
|
||||||
assert_equal(n0[net]['proxy_randomize_credentials'], True)
|
assert_equal(n0[net]['proxy_randomize_credentials'], True)
|
||||||
assert_equal(n0['onion']['reachable'], True)
|
assert_equal(n0['onion']['reachable'], True)
|
||||||
|
|
||||||
n1 = networks_dict(self.nodes[1].getnetworkinfo())
|
n1 = networks_dict(self.nodes[1].getnetworkinfo())
|
||||||
for net in ['ipv4','ipv6']:
|
assert_equal(NETWORKS, n1.keys())
|
||||||
|
for net in ['ipv4', 'ipv6']:
|
||||||
assert_equal(n1[net]['proxy'], '%s:%i' % (self.conf1.addr))
|
assert_equal(n1[net]['proxy'], '%s:%i' % (self.conf1.addr))
|
||||||
assert_equal(n1[net]['proxy_randomize_credentials'], False)
|
assert_equal(n1[net]['proxy_randomize_credentials'], False)
|
||||||
assert_equal(n1['onion']['proxy'], '%s:%i' % (self.conf2.addr))
|
assert_equal(n1['onion']['proxy'], '%s:%i' % (self.conf2.addr))
|
||||||
|
@ -205,14 +213,16 @@ class ProxyTest(BitcoinTestFramework):
|
||||||
assert_equal(n1['onion']['reachable'], True)
|
assert_equal(n1['onion']['reachable'], True)
|
||||||
|
|
||||||
n2 = networks_dict(self.nodes[2].getnetworkinfo())
|
n2 = networks_dict(self.nodes[2].getnetworkinfo())
|
||||||
for net in ['ipv4','ipv6','onion']:
|
assert_equal(NETWORKS, n2.keys())
|
||||||
|
for net in NETWORKS:
|
||||||
assert_equal(n2[net]['proxy'], '%s:%i' % (self.conf2.addr))
|
assert_equal(n2[net]['proxy'], '%s:%i' % (self.conf2.addr))
|
||||||
assert_equal(n2[net]['proxy_randomize_credentials'], True)
|
assert_equal(n2[net]['proxy_randomize_credentials'], True)
|
||||||
assert_equal(n2['onion']['reachable'], True)
|
assert_equal(n2['onion']['reachable'], True)
|
||||||
|
|
||||||
if self.have_ipv6:
|
if self.have_ipv6:
|
||||||
n3 = networks_dict(self.nodes[3].getnetworkinfo())
|
n3 = networks_dict(self.nodes[3].getnetworkinfo())
|
||||||
for net in ['ipv4','ipv6']:
|
assert_equal(NETWORKS, n3.keys())
|
||||||
|
for net in NETWORKS:
|
||||||
assert_equal(n3[net]['proxy'], '[%s]:%i' % (self.conf3.addr))
|
assert_equal(n3[net]['proxy'], '[%s]:%i' % (self.conf3.addr))
|
||||||
assert_equal(n3[net]['proxy_randomize_credentials'], False)
|
assert_equal(n3[net]['proxy_randomize_credentials'], False)
|
||||||
assert_equal(n3['onion']['reachable'], False)
|
assert_equal(n3['onion']['reachable'], False)
|
||||||
|
|
Loading…
Add table
Reference in a new issue