From 0220b834b175dc8c45a2c60213474a72c0ef8193 Mon Sep 17 00:00:00 2001 From: John Newbery Date: Mon, 23 Aug 2021 10:42:39 +0100 Subject: [test] Add testing for outbound feeler connections Extend the addconnection RPC method to allow creating outbound feeler connections. Extend the test framework to accept those feeler connections. --- test/functional/p2p_add_connections.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'test/functional/p2p_add_connections.py') diff --git a/test/functional/p2p_add_connections.py b/test/functional/p2p_add_connections.py index a04ba5db2d..82674befeb 100755 --- a/test/functional/p2p_add_connections.py +++ b/test/functional/p2p_add_connections.py @@ -14,6 +14,13 @@ def check_node_connections(*, node, num_in, num_out): assert_equal(info["connections_in"], num_in) assert_equal(info["connections_out"], num_out) +class P2PFeelerReceiver(P2PInterface): + def on_version(self, message): + # The bitcoind node closes feeler connections as soon as a version + # message is received from the test framework. Don't send any responses + # to the node's version message since the connection will already be + # closed. + pass class P2PAddConnections(BitcoinTestFramework): def set_test_params(self): @@ -91,6 +98,14 @@ class P2PAddConnections(BitcoinTestFramework): check_node_connections(node=self.nodes[1], num_in=5, num_out=10) + self.log.info("Add 1 feeler connection to node 0") + feeler_conn = self.nodes[0].add_outbound_p2p_connection(P2PFeelerReceiver(), p2p_idx=6, connection_type="feeler") + + # Feeler connection is closed + assert not feeler_conn.is_connected + + # Verify version message received + assert_equal(feeler_conn.message_count["version"], 1) if __name__ == '__main__': P2PAddConnections().main() -- cgit v1.2.3