@@ -21,7 +21,10 @@ use crate::{
2121 mock:: { types:: MockPeerId , MockService } ,
2222 ConnectivityService , NetworkingService ,
2323 } ,
24- swarm:: { self , tests:: make_peer_manager} ,
24+ swarm:: {
25+ self ,
26+ tests:: { connect_services, make_peer_manager} ,
27+ } ,
2528} ;
2629use common:: chain:: config;
2730use libp2p:: { Multiaddr , PeerId } ;
@@ -31,7 +34,7 @@ use std::{net::SocketAddr, sync::Arc};
3134// try to connect to an address that no one listening on and verify it fails
3235async fn test_swarm_connect < T : NetworkingService > ( bind_addr : T :: Address , remote_addr : T :: Address )
3336where
34- T : NetworkingService + ' static ,
37+ T : NetworkingService + ' static + std :: fmt :: Debug ,
3538 T :: ConnectivityHandle : ConnectivityService < T > ,
3639 <T as net:: NetworkingService >:: Address : std:: str:: FromStr ,
3740 <<T as net:: NetworkingService >:: Address as std:: str:: FromStr >:: Err : std:: fmt:: Debug ,
@@ -73,7 +76,7 @@ async fn test_swarm_connect_libp2p() {
7376// is below the desired threshold and there are idle peers in the peerdb
7477async fn test_auto_connect < T > ( addr1 : T :: Address , addr2 : T :: Address )
7578where
76- T : NetworkingService + ' static ,
79+ T : NetworkingService + ' static + std :: fmt :: Debug ,
7780 T :: ConnectivityHandle : ConnectivityService < T > ,
7881 <T as net:: NetworkingService >:: Address : std:: str:: FromStr ,
7982 <<T as net:: NetworkingService >:: Address as std:: str:: FromStr >:: Err : std:: fmt:: Debug ,
@@ -118,7 +121,7 @@ async fn test_auto_connect_mock() {
118121
119122async fn connect_outbound_same_network < T > ( addr1 : T :: Address , addr2 : T :: Address )
120123where
121- T : NetworkingService + ' static ,
124+ T : NetworkingService + ' static + std :: fmt :: Debug ,
122125 T :: ConnectivityHandle : ConnectivityService < T > ,
123126 <T as net:: NetworkingService >:: Address : std:: str:: FromStr ,
124127 <<T as net:: NetworkingService >:: Address as std:: str:: FromStr >:: Err : std:: fmt:: Debug ,
@@ -127,14 +130,7 @@ where
127130 let mut swarm1 = make_peer_manager :: < T > ( addr1, Arc :: clone ( & config) ) . await ;
128131 let mut swarm2 = make_peer_manager :: < T > ( addr2, config) . await ;
129132
130- let addr = swarm2. handle . local_addr ( ) . await . unwrap ( ) . unwrap ( ) ;
131- let ( _conn1_res, _conn2_res) =
132- tokio:: join!( swarm1. handle. connect( addr) , swarm2. handle. poll_next( ) ) ;
133-
134- assert ! ( std:: matches!(
135- swarm1. handle. poll_next( ) . await ,
136- Ok ( net:: types:: ConnectivityEvent :: OutboundAccepted { .. } )
137- ) ) ;
133+ connect_services :: < T > ( & mut swarm1. handle , & mut swarm2. handle ) . await ;
138134}
139135
140136#[ tokio:: test]
@@ -196,7 +192,7 @@ async fn test_validate_supported_protocols() {
196192
197193async fn connect_outbound_different_network < T > ( addr1 : T :: Address , addr2 : T :: Address )
198194where
199- T : NetworkingService + ' static ,
195+ T : NetworkingService + ' static + std :: fmt :: Debug ,
200196 T :: ConnectivityHandle : ConnectivityService < T > ,
201197 <T as net:: NetworkingService >:: Address : std:: str:: FromStr ,
202198 <<T as net:: NetworkingService >:: Address as std:: str:: FromStr >:: Err : std:: fmt:: Debug ,
@@ -209,17 +205,8 @@ where
209205 )
210206 . await ;
211207
212- let addr = swarm2. handle . local_addr ( ) . await . unwrap ( ) . unwrap ( ) ;
213- tokio:: spawn ( async move { swarm2. handle . poll_next ( ) . await . unwrap ( ) } ) ;
214- swarm1. handle . connect ( addr) . await . unwrap ( ) ;
215-
216- if let Ok ( net:: types:: ConnectivityEvent :: OutboundAccepted {
217- peer_info,
218- address : _,
219- } ) = swarm1. handle . poll_next ( ) . await
220- {
221- assert_ne ! ( peer_info. magic_bytes, * config. magic_bytes( ) ) ;
222- }
208+ let ( _address, peer_info) = connect_services :: < T > ( & mut swarm2. handle , & mut swarm1. handle ) . await ;
209+ assert_ne ! ( peer_info. magic_bytes, * config. magic_bytes( ) ) ;
223210}
224211
225212#[ tokio:: test]
@@ -235,7 +222,7 @@ async fn connect_outbound_different_network_mock() {
235222
236223async fn connect_inbound_same_network < T > ( addr1 : T :: Address , addr2 : T :: Address )
237224where
238- T : NetworkingService + ' static ,
225+ T : NetworkingService + ' static + std :: fmt :: Debug ,
239226 T :: ConnectivityHandle : ConnectivityService < T > ,
240227 <T as net:: NetworkingService >:: Address : std:: str:: FromStr ,
241228 <<T as net:: NetworkingService >:: Address as std:: str:: FromStr >:: Err : std:: fmt:: Debug ,
@@ -244,19 +231,11 @@ where
244231 let mut swarm1 = make_peer_manager :: < T > ( addr1, Arc :: clone ( & config) ) . await ;
245232 let mut swarm2 = make_peer_manager :: < T > ( addr2, config) . await ;
246233
247- let ( _conn1_res, conn2_res) = tokio:: join!(
248- swarm1. handle. connect( swarm2. handle. local_addr( ) . await . unwrap( ) . unwrap( ) ) ,
249- swarm2. handle. poll_next( )
234+ let ( address, peer_info) = connect_services :: < T > ( & mut swarm1. handle , & mut swarm2. handle ) . await ;
235+ assert_eq ! (
236+ swarm2. accept_inbound_connection( address, peer_info) . await ,
237+ Ok ( ( ) )
250238 ) ;
251- let conn2_res: net:: types:: ConnectivityEvent < T > = conn2_res. unwrap ( ) ;
252- if let net:: types:: ConnectivityEvent :: InboundAccepted { peer_info, address } = conn2_res {
253- assert_eq ! (
254- swarm2. accept_inbound_connection( address, peer_info) . await ,
255- Ok ( ( ) )
256- ) ;
257- } else {
258- panic ! ( "invalid event received" ) ;
259- }
260239}
261240
262241#[ tokio:: test]
@@ -272,7 +251,7 @@ async fn connect_inbound_same_network_mock() {
272251
273252async fn connect_inbound_different_network < T > ( addr1 : T :: Address , addr2 : T :: Address )
274253where
275- T : NetworkingService + ' static ,
254+ T : NetworkingService + ' static + std :: fmt :: Debug ,
276255 T :: ConnectivityHandle : ConnectivityService < T > ,
277256 <T as net:: NetworkingService >:: Address : std:: str:: FromStr ,
278257 <<T as net:: NetworkingService >:: Address as std:: str:: FromStr >:: Err : std:: fmt:: Debug ,
@@ -284,23 +263,15 @@ where
284263 )
285264 . await ;
286265
287- let ( _conn1_res, conn2_res) = tokio:: join!(
288- swarm1. handle. connect( swarm2. handle. local_addr( ) . await . unwrap( ) . unwrap( ) ) ,
289- swarm2. handle. poll_next( )
266+ let ( address, peer_info) = connect_services :: < T > ( & mut swarm1. handle , & mut swarm2. handle ) . await ;
267+
268+ assert_eq ! (
269+ swarm2. accept_inbound_connection( address, peer_info) . await ,
270+ Err ( P2pError :: ProtocolError ( ProtocolError :: DifferentNetwork (
271+ [ 1 , 2 , 3 , 4 ] ,
272+ * config:: create_mainnet( ) . magic_bytes( ) ,
273+ ) ) )
290274 ) ;
291- let conn2_res: net:: types:: ConnectivityEvent < T > = conn2_res. unwrap ( ) ;
292-
293- if let net:: types:: ConnectivityEvent :: InboundAccepted { peer_info, address } = conn2_res {
294- assert_eq ! (
295- swarm2. accept_inbound_connection( address, peer_info) . await ,
296- Err ( P2pError :: ProtocolError ( ProtocolError :: DifferentNetwork (
297- [ 1 , 2 , 3 , 4 ] ,
298- * config:: create_mainnet( ) . magic_bytes( ) ,
299- ) ) )
300- ) ;
301- } else {
302- panic ! ( "invalid event received" ) ;
303- }
304275}
305276
306277#[ tokio:: test]
@@ -316,28 +287,16 @@ async fn connect_inbound_different_network_mock() {
316287
317288async fn remote_closes_connection < T > ( addr1 : T :: Address , addr2 : T :: Address )
318289where
319- T : NetworkingService + ' static ,
290+ T : NetworkingService + ' static + std :: fmt :: Debug ,
320291 T :: ConnectivityHandle : ConnectivityService < T > ,
321292 <T as net:: NetworkingService >:: Address : std:: str:: FromStr ,
322293 <<T as net:: NetworkingService >:: Address as std:: str:: FromStr >:: Err : std:: fmt:: Debug ,
323294{
324295 let mut swarm1 = make_peer_manager :: < T > ( addr1, Arc :: new ( config:: create_mainnet ( ) ) ) . await ;
325296 let mut swarm2 = make_peer_manager :: < T > ( addr2, Arc :: new ( config:: create_mainnet ( ) ) ) . await ;
326297
327- let ( _conn1_res, conn2_res) = tokio:: join!(
328- swarm1. handle. connect( swarm2. handle. local_addr( ) . await . unwrap( ) . unwrap( ) ) ,
329- swarm2. handle. poll_next( )
330- ) ;
331- let conn2_res: net:: types:: ConnectivityEvent < T > = conn2_res. unwrap ( ) ;
332-
333- assert ! ( std:: matches!(
334- conn2_res,
335- net:: types:: ConnectivityEvent :: InboundAccepted { .. }
336- ) ) ;
337- assert ! ( std:: matches!(
338- swarm1. handle. poll_next( ) . await ,
339- Ok ( net:: types:: ConnectivityEvent :: OutboundAccepted { .. } )
340- ) ) ;
298+ let ( _address, _peer_info) =
299+ connect_services :: < T > ( & mut swarm1. handle , & mut swarm2. handle ) . await ;
341300
342301 assert_eq ! (
343302 swarm2. handle. disconnect( * swarm1. handle. peer_id( ) ) . await ,
@@ -366,7 +325,7 @@ async fn inbound_connection_too_many_peers<T>(
366325 default_addr : T :: Address ,
367326 peers : Vec < net:: types:: PeerInfo < T > > ,
368327) where
369- T : NetworkingService + ' static ,
328+ T : NetworkingService + ' static + std :: fmt :: Debug ,
370329 T :: ConnectivityHandle : ConnectivityService < T > ,
371330 <T as net:: NetworkingService >:: Address : std:: str:: FromStr ,
372331 <<T as net:: NetworkingService >:: Address as std:: str:: FromStr >:: Err : std:: fmt:: Debug ,
@@ -383,10 +342,8 @@ async fn inbound_connection_too_many_peers<T>(
383342 swarm:: MAX_ACTIVE_CONNECTIONS
384343 ) ;
385344
386- let addr = swarm2. handle . local_addr ( ) . await . unwrap ( ) . unwrap ( ) ;
387- let ( _conn1_res, conn2_res) =
388- tokio:: join!( swarm1. handle. connect( addr) , swarm2. handle. poll_next( ) ) ;
389- let _conn2_res: net:: types:: ConnectivityEvent < T > = conn2_res. unwrap ( ) ;
345+ let ( _address, _peer_info) =
346+ connect_services :: < T > ( & mut swarm1. handle , & mut swarm2. handle ) . await ;
390347 let swarm1_id = * swarm1. handle . peer_id ( ) ;
391348
392349 // run the first peer manager in the background and poll events from the peer manager
0 commit comments