@@ -68,10 +68,10 @@ def setup_nodes(self):
6868 ['-listen' , '-debug=net' , '-debug=proxy' , '-proxy=%s:%i' % (self .conf1 .addr ),'-proxyrandomize=1' ],
6969 ['-listen' , '-debug=net' , '-debug=proxy' , '-proxy=%s:%i' % (self .conf1 .addr ),'-onion=%s:%i' % (self .conf2 .addr ),'-proxyrandomize=0' ],
7070 ['-listen' , '-debug=net' , '-debug=proxy' , '-proxy=%s:%i' % (self .conf2 .addr ),'-proxyrandomize=1' ],
71- ['-listen' , '-debug=net' , '-debug=proxy' , '-proxy=[%s]:%i' % (self .conf3 .addr ),'-proxyrandomize=0' ]
71+ ['-listen' , '-debug=net' , '-debug=proxy' , '-proxy=[%s]:%i' % (self .conf3 .addr ),'-proxyrandomize=0' , '-noonion' ]
7272 ])
7373
74- def node_test (self , node , proxies , auth ):
74+ def node_test (self , node , proxies , auth , test_onion = True ):
7575 rv = []
7676 # Test: outgoing IPv4 connection through node
7777 node .addnode ("15.61.23.23:1234" , "onetry" )
@@ -99,17 +99,18 @@ def node_test(self, node, proxies, auth):
9999 assert_equal (cmd .password , None )
100100 rv .append (cmd )
101101
102- # Test: outgoing onion connection through node
103- node .addnode ("bitcoinostk4e4re.onion:8333" , "onetry" )
104- cmd = proxies [2 ].queue .get ()
105- assert (isinstance (cmd , Socks5Command ))
106- assert_equal (cmd .atyp , AddressType .DOMAINNAME )
107- assert_equal (cmd .addr , "bitcoinostk4e4re.onion" )
108- assert_equal (cmd .port , 8333 )
109- if not auth :
110- assert_equal (cmd .username , None )
111- assert_equal (cmd .password , None )
112- rv .append (cmd )
102+ if test_onion :
103+ # Test: outgoing onion connection through node
104+ node .addnode ("bitcoinostk4e4re.onion:8333" , "onetry" )
105+ cmd = proxies [2 ].queue .get ()
106+ assert (isinstance (cmd , Socks5Command ))
107+ assert_equal (cmd .atyp , AddressType .DOMAINNAME )
108+ assert_equal (cmd .addr , "bitcoinostk4e4re.onion" )
109+ assert_equal (cmd .port , 8333 )
110+ if not auth :
111+ assert_equal (cmd .username , None )
112+ assert_equal (cmd .password , None )
113+ rv .append (cmd )
113114
114115 # Test: outgoing DNS name connection through node
115116 node .addnode ("node.noumenon:8333" , "onetry" )
@@ -139,8 +140,41 @@ def run_test(self):
139140 assert_equal (len (credentials ), 4 )
140141
141142 # proxy on IPv6 localhost
142- self .node_test (self .nodes [3 ], [self .serv3 , self .serv3 , self .serv3 , self .serv3 ], False )
143+ self .node_test (self .nodes [3 ], [self .serv3 , self .serv3 , self .serv3 , self .serv3 ], False , False )
144+
145+ def networks_dict (d ):
146+ r = {}
147+ for x in d ['networks' ]:
148+ r [x ['name' ]] = x
149+ return r
150+
151+ # test RPC getnetworkinfo
152+ n0 = networks_dict (self .nodes [0 ].getnetworkinfo ())
153+ for net in ['ipv4' ,'ipv6' ,'onion' ]:
154+ assert_equal (n0 [net ]['proxy' ], '%s:%i' % (self .conf1 .addr ))
155+ assert_equal (n0 [net ]['proxy_randomize_credentials' ], True )
156+ assert_equal (n0 ['onion' ]['reachable' ], True )
157+
158+ n1 = networks_dict (self .nodes [1 ].getnetworkinfo ())
159+ for net in ['ipv4' ,'ipv6' ]:
160+ assert_equal (n1 [net ]['proxy' ], '%s:%i' % (self .conf1 .addr ))
161+ assert_equal (n1 [net ]['proxy_randomize_credentials' ], False )
162+ assert_equal (n1 ['onion' ]['proxy' ], '%s:%i' % (self .conf2 .addr ))
163+ assert_equal (n1 ['onion' ]['proxy_randomize_credentials' ], False )
164+ assert_equal (n1 ['onion' ]['reachable' ], True )
143165
166+ n2 = networks_dict (self .nodes [2 ].getnetworkinfo ())
167+ for net in ['ipv4' ,'ipv6' ,'onion' ]:
168+ assert_equal (n2 [net ]['proxy' ], '%s:%i' % (self .conf2 .addr ))
169+ assert_equal (n2 [net ]['proxy_randomize_credentials' ], True )
170+ assert_equal (n2 ['onion' ]['reachable' ], True )
171+
172+ n3 = networks_dict (self .nodes [3 ].getnetworkinfo ())
173+ for net in ['ipv4' ,'ipv6' ]:
174+ assert_equal (n3 [net ]['proxy' ], '[%s]:%i' % (self .conf3 .addr ))
175+ assert_equal (n3 [net ]['proxy_randomize_credentials' ], False )
176+ assert_equal (n3 ['onion' ]['reachable' ], False )
177+
144178if __name__ == '__main__' :
145179 ProxyTest ().main ()
146180
0 commit comments