Changeset View
Changeset View
Standalone View
Standalone View
test/functional/feature_proxy.py
Show First 20 Lines • Show All 77 Lines • ▼ Show 20 Lines | def setup_nodes(self): | ||||
if self.have_ipv6: | if self.have_ipv6: | ||||
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 use is based on CService.GetNetwork(), | # this is because the proxy to use is based on CService.GetNetwork(), | ||||
# which return NET_UNROUTABLE for localhost | # which return NET_UNROUTABLE for localhost | ||||
args = [ | args = [ | ||||
['-listen', '-proxy=%s:%i' % | ['-listen', '-proxy={}:{}'.format( | ||||
(self.conf1.addr), '-proxyrandomize=1'], | self.conf1.addr[0], self.conf1.addr[1]), '-proxyrandomize=1'], | ||||
['-listen', '-proxy=%s:%i' % | ['-listen', '-proxy={}:{}'.format( | ||||
(self.conf1.addr), '-onion=%s:%i' % (self.conf2.addr), '-proxyrandomize=0'], | self.conf1.addr[0], self.conf1.addr[1]), | ||||
['-listen', '-proxy=%s:%i' % | '-onion={}:{}'.format( | ||||
(self.conf2.addr), '-proxyrandomize=1'], | self.conf2.addr[0], self.conf2.addr[1]), '-proxyrandomize=0'], | ||||
['-listen', '-proxy={}:{}'.format( | |||||
self.conf2.addr[0], self.conf2.addr[1]), '-proxyrandomize=1'], | |||||
[] | [] | ||||
] | ] | ||||
if self.have_ipv6: | if self.have_ipv6: | ||||
args[3] = ['-listen', '-proxy=[%s]:%i' % | args[3] = ['-listen', '-proxy=[{}]:{}'.format( | ||||
(self.conf3.addr), '-proxyrandomize=0', '-noonion'] | self.conf3.addr[0], self.conf3.addr[1]), '-proxyrandomize=0', | ||||
'-noonion'] | |||||
self.add_nodes(self.num_nodes, extra_args=args) | self.add_nodes(self.num_nodes, extra_args=args) | ||||
self.start_nodes() | self.start_nodes() | ||||
def node_test(self, node, proxies, auth, test_onion=True): | def node_test(self, node, proxies, auth, test_onion=True): | ||||
rv = [] | rv = [] | ||||
# Test: outgoing IPv4 connection through node | # Test: outgoing IPv4 connection through node | ||||
node.addnode("15.61.23.23:1234", "onetry") | node.addnode("15.61.23.23:1234", "onetry") | ||||
cmd = proxies[0].queue.get() | cmd = proxies[0].queue.get() | ||||
▲ Show 20 Lines • Show All 77 Lines • ▼ Show 20 Lines | def run_test(self): | ||||
r = {} | r = {} | ||||
for x in d['networks']: | for x in d['networks']: | ||||
r[x['name']] = x | r[x['name']] = x | ||||
return r | return r | ||||
# test RPC getnetworkinfo | # test RPC getnetworkinfo | ||||
n0 = networks_dict(self.nodes[0].getnetworkinfo()) | n0 = networks_dict(self.nodes[0].getnetworkinfo()) | ||||
for net in ['ipv4', 'ipv6', 'onion']: | for net in ['ipv4', 'ipv6', 'onion']: | ||||
assert_equal(n0[net]['proxy'], '%s:%i' % (self.conf1.addr)) | assert_equal(n0[net]['proxy'], '{}:{}'.format( | ||||
self.conf1.addr[0], self.conf1.addr[1])) | |||||
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']: | for net in ['ipv4', 'ipv6']: | ||||
assert_equal(n1[net]['proxy'], '%s:%i' % (self.conf1.addr)) | assert_equal(n1[net]['proxy'], '{}:{}'.format( | ||||
self.conf1.addr[0], self.conf1.addr[1])) | |||||
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'], '{}:{}'.format( | ||||
self.conf2.addr[0], self.conf2.addr[1])) | |||||
assert_equal(n1['onion']['proxy_randomize_credentials'], False) | assert_equal(n1['onion']['proxy_randomize_credentials'], False) | ||||
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']: | for net in ['ipv4', 'ipv6', 'onion']: | ||||
assert_equal(n2[net]['proxy'], '%s:%i' % (self.conf2.addr)) | assert_equal(n2[net]['proxy'], '{}:{}'.format( | ||||
self.conf2.addr[0], self.conf2.addr[1])) | |||||
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']: | for net in ['ipv4', 'ipv6']: | ||||
assert_equal(n3[net]['proxy'], '[%s]:%i' % (self.conf3.addr)) | assert_equal(n3[net]['proxy'], '[{}]:{}'.format( | ||||
self.conf3.addr[0], self.conf3.addr[1])) | |||||
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) | ||||
if __name__ == '__main__': | if __name__ == '__main__': | ||||
ProxyTest().main() | ProxyTest().main() |