def run_test(self): # Setup the p2p connections and start up the network thread. self.no_verack_node = TestNode() # never send verack self.no_version_node = TestNode() # never send version (just ping) self.no_send_node = TestNode() # never send anything connections = [ NodeConn('127.0.0.1', p2p_port(0), self.nodes[0], self.no_verack_node), NodeConn('127.0.0.1', p2p_port(0), self.nodes[0], self.no_version_node, send_version=False), NodeConn('127.0.0.1', p2p_port(0), self.nodes[0], self.no_send_node, send_version=False) ] self.no_verack_node.add_connection(connections[0]) self.no_version_node.add_connection(connections[1]) self.no_send_node.add_connection(connections[2]) NetworkThread().start() # Start up network handling in another thread sleep(1) assert self.no_verack_node.connected assert self.no_version_node.connected assert self.no_send_node.connected ping_msg = MsgPing() connections[0].send_message(ping_msg) connections[1].send_message(ping_msg) sleep(30) assert "version" in self.no_verack_node.last_message assert self.no_verack_node.connected assert self.no_version_node.connected assert self.no_send_node.connected connections[0].send_message(ping_msg) connections[1].send_message(ping_msg) sleep(31) assert (not self.no_verack_node.connected) assert (not self.no_version_node.connected) assert (not self.no_send_node.connected)
def on_version(self, conn, message): self.version_received = True conn.send_message(MsgPing()) conn.send_message(MsgGetAddr())