Skip to content

Commit f9cf33f

Browse files
Add tests for two servers connecting
1 parent a972b9c commit f9cf33f

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

protocols/kad/tests/client_mode.rs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,31 @@ async fn connection_to_node_in_client_mode_does_not_update_routing_table() {
2626
}
2727
}
2828

29+
#[async_std::test]
30+
async fn two_servers_add_each_other_to_routing_table() {
31+
let mut server1 = Swarm::new_ephemeral(MyBehaviour::server);
32+
let mut server2 = Swarm::new_ephemeral(MyBehaviour::server);
33+
34+
server1.listen().await;
35+
server2.listen().await;
36+
37+
server1.connect(&mut server2).await;
38+
39+
let server1_peer_id = *server1.local_peer_id();
40+
let server2_peer_id = *server2.local_peer_id();
41+
42+
match libp2p_swarm_test::drive(&mut server1, &mut server2).await {
43+
(
44+
[MyBehaviourEvent::Identify(_), MyBehaviourEvent::Identify(_), MyBehaviourEvent::Kad(KademliaEvent::RoutingUpdated { peer: peer1, .. })],
45+
[MyBehaviourEvent::Identify(_), MyBehaviourEvent::Identify(_), MyBehaviourEvent::Kad(KademliaEvent::UnroutablePeer { peer: peer2, .. })], // Unroutable because server2 did not dial.
46+
) => {
47+
assert_eq!(peer1, server2_peer_id);
48+
assert_eq!(peer2, server1_peer_id);
49+
}
50+
other => panic!("Unexpected events: {other:?}"),
51+
}
52+
}
53+
2954
#[derive(libp2p_swarm::NetworkBehaviour)]
3055
#[behaviour(prelude = "libp2p_swarm::derive_prelude")]
3156
struct MyBehaviour {

0 commit comments

Comments
 (0)