p2p_testing/
test_node.rs

1use std::net::IpAddr;
2
3use libp2p::{multiaddr::multiaddr, Multiaddr};
4use p2p::{
5    connection::outgoing::{P2pConnectionOutgoingInitLibp2pOpts, P2pConnectionOutgoingInitOpts},
6    PeerId,
7};
8
9pub trait TestNode {
10    fn peer_id(&self) -> PeerId;
11
12    fn libp2p_port(&self) -> u16;
13
14    fn rust_dial_opts(&self, host: IpAddr) -> P2pConnectionOutgoingInitOpts {
15        P2pConnectionOutgoingInitOpts::LibP2P(P2pConnectionOutgoingInitLibp2pOpts {
16            peer_id: self.peer_id(),
17            host: host.into(),
18            port: self.libp2p_port(),
19        })
20    }
21
22    fn libp2p_dial_opts(&self, host: IpAddr) -> Multiaddr {
23        let peer_id: libp2p::PeerId = self.peer_id().try_into().expect("Conversion failed");
24
25        match host {
26            IpAddr::V4(ip) => {
27                multiaddr!(Ip4(ip), Tcp(self.libp2p_port()), P2p(peer_id))
28            }
29            IpAddr::V6(ip) => {
30                multiaddr!(Ip6(ip), Tcp(self.libp2p_port()), P2p(peer_id))
31            }
32        }
33    }
34}