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}