Browse Source

tests: Extend RPC proxy tests

Also test -noonion
0.13
Wladimir J. van der Laan 10 years ago
parent
commit
edbdf8855d
  1. 62
      qa/rpc-tests/proxy_test.py

62
qa/rpc-tests/proxy_test.py

@ -68,10 +68,10 @@ class ProxyTest(BitcoinTestFramework):
['-listen', '-debug=net', '-debug=proxy', '-proxy=%s:%i' % (self.conf1.addr),'-proxyrandomize=1'], ['-listen', '-debug=net', '-debug=proxy', '-proxy=%s:%i' % (self.conf1.addr),'-proxyrandomize=1'],
['-listen', '-debug=net', '-debug=proxy', '-proxy=%s:%i' % (self.conf1.addr),'-onion=%s:%i' % (self.conf2.addr),'-proxyrandomize=0'], ['-listen', '-debug=net', '-debug=proxy', '-proxy=%s:%i' % (self.conf1.addr),'-onion=%s:%i' % (self.conf2.addr),'-proxyrandomize=0'],
['-listen', '-debug=net', '-debug=proxy', '-proxy=%s:%i' % (self.conf2.addr),'-proxyrandomize=1'], ['-listen', '-debug=net', '-debug=proxy', '-proxy=%s:%i' % (self.conf2.addr),'-proxyrandomize=1'],
['-listen', '-debug=net', '-debug=proxy', '-proxy=[%s]:%i' % (self.conf3.addr),'-proxyrandomize=0'] ['-listen', '-debug=net', '-debug=proxy', '-proxy=[%s]:%i' % (self.conf3.addr),'-proxyrandomize=0', '-noonion']
]) ])
def node_test(self, node, proxies, auth): 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")
@ -99,17 +99,18 @@ class ProxyTest(BitcoinTestFramework):
assert_equal(cmd.password, None) assert_equal(cmd.password, None)
rv.append(cmd) rv.append(cmd)
# Test: outgoing onion connection through node if test_onion:
node.addnode("bitcoinostk4e4re.onion:8333", "onetry") # Test: outgoing onion connection through node
cmd = proxies[2].queue.get() node.addnode("bitcoinostk4e4re.onion:8333", "onetry")
assert(isinstance(cmd, Socks5Command)) cmd = proxies[2].queue.get()
assert_equal(cmd.atyp, AddressType.DOMAINNAME) assert(isinstance(cmd, Socks5Command))
assert_equal(cmd.addr, "bitcoinostk4e4re.onion") assert_equal(cmd.atyp, AddressType.DOMAINNAME)
assert_equal(cmd.port, 8333) assert_equal(cmd.addr, "bitcoinostk4e4re.onion")
if not auth: assert_equal(cmd.port, 8333)
assert_equal(cmd.username, None) if not auth:
assert_equal(cmd.password, None) assert_equal(cmd.username, None)
rv.append(cmd) assert_equal(cmd.password, None)
rv.append(cmd)
# Test: outgoing DNS name connection through node # Test: outgoing DNS name connection through node
node.addnode("node.noumenon:8333", "onetry") node.addnode("node.noumenon:8333", "onetry")
@ -139,7 +140,40 @@ class ProxyTest(BitcoinTestFramework):
assert_equal(len(credentials), 4) assert_equal(len(credentials), 4)
# proxy on IPv6 localhost # proxy on IPv6 localhost
self.node_test(self.nodes[3], [self.serv3, self.serv3, self.serv3, self.serv3], False) self.node_test(self.nodes[3], [self.serv3, self.serv3, self.serv3, self.serv3], False, False)
def networks_dict(d):
r = {}
for x in d['networks']:
r[x['name']] = x
return r
# test RPC getnetworkinfo
n0 = networks_dict(self.nodes[0].getnetworkinfo())
for net in ['ipv4','ipv6','onion']:
assert_equal(n0[net]['proxy'], '%s:%i' % (self.conf1.addr))
assert_equal(n0[net]['proxy_randomize_credentials'], True)
assert_equal(n0['onion']['reachable'], True)
n1 = networks_dict(self.nodes[1].getnetworkinfo())
for net in ['ipv4','ipv6']:
assert_equal(n1[net]['proxy'], '%s:%i' % (self.conf1.addr))
assert_equal(n1[net]['proxy_randomize_credentials'], False)
assert_equal(n1['onion']['proxy'], '%s:%i' % (self.conf2.addr))
assert_equal(n1['onion']['proxy_randomize_credentials'], False)
assert_equal(n1['onion']['reachable'], True)
n2 = networks_dict(self.nodes[2].getnetworkinfo())
for net in ['ipv4','ipv6','onion']:
assert_equal(n2[net]['proxy'], '%s:%i' % (self.conf2.addr))
assert_equal(n2[net]['proxy_randomize_credentials'], True)
assert_equal(n2['onion']['reachable'], True)
n3 = networks_dict(self.nodes[3].getnetworkinfo())
for net in ['ipv4','ipv6']:
assert_equal(n3[net]['proxy'], '[%s]:%i' % (self.conf3.addr))
assert_equal(n3[net]['proxy_randomize_credentials'], False)
assert_equal(n3['onion']['reachable'], False)
if __name__ == '__main__': if __name__ == '__main__':
ProxyTest().main() ProxyTest().main()

Loading…
Cancel
Save