@@ -2751,6 +2751,7 @@ mod tests {
27512751 #[ derive( Clone ) ]
27522752 struct FileDescriptor {
27532753 fd : u16 ,
2754+ hang_writes : Arc < AtomicBool > ,
27542755 outbound_data : Arc < Mutex < Vec < u8 > > > ,
27552756 disconnect : Arc < AtomicBool > ,
27562757 }
@@ -2768,13 +2769,28 @@ mod tests {
27682769
27692770 impl SocketDescriptor for FileDescriptor {
27702771 fn send_data ( & mut self , data : & [ u8 ] , _resume_read : bool ) -> usize {
2771- self . outbound_data . lock ( ) . unwrap ( ) . extend_from_slice ( data) ;
2772- data. len ( )
2772+ if self . hang_writes . load ( Ordering :: Acquire ) {
2773+ 0
2774+ } else {
2775+ self . outbound_data . lock ( ) . unwrap ( ) . extend_from_slice ( data) ;
2776+ data. len ( )
2777+ }
27732778 }
27742779
27752780 fn disconnect_socket ( & mut self ) { self . disconnect . store ( true , Ordering :: Release ) ; }
27762781 }
27772782
2783+ impl FileDescriptor {
2784+ fn new ( fd : u16 ) -> Self {
2785+ Self {
2786+ fd,
2787+ hang_writes : Arc :: new ( AtomicBool :: new ( false ) ) ,
2788+ outbound_data : Arc :: new ( Mutex :: new ( Vec :: new ( ) ) ) ,
2789+ disconnect : Arc :: new ( AtomicBool :: new ( false ) ) ,
2790+ }
2791+ }
2792+ }
2793+
27782794 struct PeerManagerCfg {
27792795 chan_handler : test_utils:: TestChannelMessageHandler ,
27802796 routing_handler : test_utils:: TestRoutingMessageHandler ,
@@ -2825,7 +2841,7 @@ mod tests {
28252841 cfgs. push (
28262842 PeerManagerCfg {
28272843 chan_handler : test_utils:: TestChannelMessageHandler :: new ( ChainHash :: using_genesis_block ( Network :: Testnet ) ) ,
2828- logger : test_utils:: TestLogger :: new ( ) ,
2844+ logger : test_utils:: TestLogger :: with_id ( i . to_string ( ) ) ,
28292845 routing_handler : test_utils:: TestRoutingMessageHandler :: new ( ) ,
28302846 custom_handler : TestCustomMessageHandler { features } ,
28312847 node_signer : test_utils:: TestNodeSigner :: new ( node_secret) ,
@@ -2899,19 +2915,13 @@ mod tests {
28992915 let fd = FD_COUNTER . fetch_add ( 1 , Ordering :: Relaxed ) as u16 ;
29002916
29012917 let id_a = peer_a. node_signer . get_node_id ( Recipient :: Node ) . unwrap ( ) ;
2902- let mut fd_a = FileDescriptor {
2903- fd, outbound_data : Arc :: new ( Mutex :: new ( Vec :: new ( ) ) ) ,
2904- disconnect : Arc :: new ( AtomicBool :: new ( false ) ) ,
2905- } ;
2918+ let mut fd_a = FileDescriptor :: new ( fd) ;
29062919 let addr_a = SocketAddress :: TcpIpV4 { addr : [ 127 , 0 , 0 , 1 ] , port : 1000 } ;
29072920
29082921 let id_b = peer_b. node_signer . get_node_id ( Recipient :: Node ) . unwrap ( ) ;
29092922 let features_a = peer_a. init_features ( & id_b) ;
29102923 let features_b = peer_b. init_features ( & id_a) ;
2911- let mut fd_b = FileDescriptor {
2912- fd, outbound_data : Arc :: new ( Mutex :: new ( Vec :: new ( ) ) ) ,
2913- disconnect : Arc :: new ( AtomicBool :: new ( false ) ) ,
2914- } ;
2924+ let mut fd_b = FileDescriptor :: new ( fd) ;
29152925 let addr_b = SocketAddress :: TcpIpV4 { addr : [ 127 , 0 , 0 , 1 ] , port : 1001 } ;
29162926
29172927 let initial_data = peer_b. new_outbound_connection ( id_a, fd_b. clone ( ) , Some ( addr_a. clone ( ) ) ) . unwrap ( ) ;
@@ -2957,15 +2967,9 @@ mod tests {
29572967 let mut ctr = 0 ;
29582968 while start_time. elapsed( ) < std:: time:: Duration :: from_secs( 1 ) {
29592969 let id_a = peers[ 0 ] . node_signer. get_node_id( Recipient :: Node ) . unwrap( ) ;
2960- let mut fd_a = FileDescriptor {
2961- fd: $id + ctr * 3 , outbound_data: Arc :: new( Mutex :: new( Vec :: new( ) ) ) ,
2962- disconnect: Arc :: new( AtomicBool :: new( false ) ) ,
2963- } ;
2970+ let mut fd_a = FileDescriptor :: new( $id + ctr * 3 ) ;
29642971 let addr_a = SocketAddress :: TcpIpV4 { addr: [ 127 , 0 , 0 , 1 ] , port: 1000 } ;
2965- let mut fd_b = FileDescriptor {
2966- fd: $id + ctr * 3 , outbound_data: Arc :: new( Mutex :: new( Vec :: new( ) ) ) ,
2967- disconnect: Arc :: new( AtomicBool :: new( false ) ) ,
2968- } ;
2972+ let mut fd_b = FileDescriptor :: new( $id + ctr * 3 ) ;
29692973 let addr_b = SocketAddress :: TcpIpV4 { addr: [ 127 , 0 , 0 , 1 ] , port: 1001 } ;
29702974 let initial_data = peers[ 1 ] . new_outbound_connection( id_a, fd_b. clone( ) , Some ( addr_a. clone( ) ) ) . unwrap( ) ;
29712975 peers[ 0 ] . new_inbound_connection( fd_a. clone( ) , Some ( addr_b. clone( ) ) ) . unwrap( ) ;
@@ -3029,15 +3033,9 @@ mod tests {
30293033 let peer_pairs = [ ( & peers[ 0 ] , & incompatible_peers[ 0 ] ) , ( & incompatible_peers[ 1 ] , & peers[ 1 ] ) ] ;
30303034 for ( peer_a, peer_b) in peer_pairs. iter ( ) {
30313035 let id_a = peer_a. node_signer . get_node_id ( Recipient :: Node ) . unwrap ( ) ;
3032- let mut fd_a = FileDescriptor {
3033- fd : 1 , outbound_data : Arc :: new ( Mutex :: new ( Vec :: new ( ) ) ) ,
3034- disconnect : Arc :: new ( AtomicBool :: new ( false ) ) ,
3035- } ;
3036+ let mut fd_a = FileDescriptor :: new ( 1 ) ;
30363037 let addr_a = SocketAddress :: TcpIpV4 { addr : [ 127 , 0 , 0 , 1 ] , port : 1000 } ;
3037- let mut fd_b = FileDescriptor {
3038- fd : 1 , outbound_data : Arc :: new ( Mutex :: new ( Vec :: new ( ) ) ) ,
3039- disconnect : Arc :: new ( AtomicBool :: new ( false ) ) ,
3040- } ;
3038+ let mut fd_b = FileDescriptor :: new ( 1 ) ;
30413039 let addr_b = SocketAddress :: TcpIpV4 { addr : [ 127 , 0 , 0 , 1 ] , port : 1001 } ;
30423040 let initial_data = peer_b. new_outbound_connection ( id_a, fd_b. clone ( ) , Some ( addr_a. clone ( ) ) ) . unwrap ( ) ;
30433041 peer_a. new_inbound_connection ( fd_a. clone ( ) , Some ( addr_b. clone ( ) ) ) . unwrap ( ) ;
@@ -3065,15 +3063,9 @@ mod tests {
30653063 let peer_pairs = [ ( & peers[ 0 ] , & incompatible_peers[ 0 ] ) , ( & incompatible_peers[ 1 ] , & peers[ 1 ] ) ] ;
30663064 for ( peer_a, peer_b) in peer_pairs. iter ( ) {
30673065 let id_a = peer_a. node_signer . get_node_id ( Recipient :: Node ) . unwrap ( ) ;
3068- let mut fd_a = FileDescriptor {
3069- fd : 1 , outbound_data : Arc :: new ( Mutex :: new ( Vec :: new ( ) ) ) ,
3070- disconnect : Arc :: new ( AtomicBool :: new ( false ) ) ,
3071- } ;
3066+ let mut fd_a = FileDescriptor :: new ( 1 ) ;
30723067 let addr_a = SocketAddress :: TcpIpV4 { addr : [ 127 , 0 , 0 , 1 ] , port : 1000 } ;
3073- let mut fd_b = FileDescriptor {
3074- fd : 1 , outbound_data : Arc :: new ( Mutex :: new ( Vec :: new ( ) ) ) ,
3075- disconnect : Arc :: new ( AtomicBool :: new ( false ) ) ,
3076- } ;
3068+ let mut fd_b = FileDescriptor :: new ( 1 ) ;
30773069 let addr_b = SocketAddress :: TcpIpV4 { addr : [ 127 , 0 , 0 , 1 ] , port : 1001 } ;
30783070 let initial_data = peer_b. new_outbound_connection ( id_a, fd_b. clone ( ) , Some ( addr_a. clone ( ) ) ) . unwrap ( ) ;
30793071 peer_a. new_inbound_connection ( fd_a. clone ( ) , Some ( addr_b. clone ( ) ) ) . unwrap ( ) ;
@@ -3147,10 +3139,7 @@ mod tests {
31473139 let cfgs = create_peermgr_cfgs ( 2 ) ;
31483140 let peers = create_network ( 2 , & cfgs) ;
31493141
3150- let mut fd_dup = FileDescriptor {
3151- fd : 3 , outbound_data : Arc :: new ( Mutex :: new ( Vec :: new ( ) ) ) ,
3152- disconnect : Arc :: new ( AtomicBool :: new ( false ) ) ,
3153- } ;
3142+ let mut fd_dup = FileDescriptor :: new ( 3 ) ;
31543143 let addr_dup = SocketAddress :: TcpIpV4 { addr : [ 127 , 0 , 0 , 1 ] , port : 1003 } ;
31553144 let id_a = cfgs[ 0 ] . node_signer . get_node_id ( Recipient :: Node ) . unwrap ( ) ;
31563145 peers[ 0 ] . new_inbound_connection ( fd_dup. clone ( ) , Some ( addr_dup. clone ( ) ) ) . unwrap ( ) ;
@@ -3254,14 +3243,8 @@ mod tests {
32543243 let peers = create_network ( 2 , & cfgs) ;
32553244
32563245 let a_id = peers[ 0 ] . node_signer . get_node_id ( Recipient :: Node ) . unwrap ( ) ;
3257- let mut fd_a = FileDescriptor {
3258- fd : 1 , outbound_data : Arc :: new ( Mutex :: new ( Vec :: new ( ) ) ) ,
3259- disconnect : Arc :: new ( AtomicBool :: new ( false ) ) ,
3260- } ;
3261- let mut fd_b = FileDescriptor {
3262- fd : 1 , outbound_data : Arc :: new ( Mutex :: new ( Vec :: new ( ) ) ) ,
3263- disconnect : Arc :: new ( AtomicBool :: new ( false ) ) ,
3264- } ;
3246+ let mut fd_a = FileDescriptor :: new ( 1 ) ;
3247+ let mut fd_b = FileDescriptor :: new ( 1 ) ;
32653248 let initial_data = peers[ 1 ] . new_outbound_connection ( a_id, fd_b. clone ( ) , None ) . unwrap ( ) ;
32663249 peers[ 0 ] . new_inbound_connection ( fd_a. clone ( ) , None ) . unwrap ( ) ;
32673250
@@ -3307,14 +3290,8 @@ mod tests {
33073290 } , 0 , & [ 1 ; 32 ] , & logger, & node_signer_b) ;
33083291
33093292 let a_id = node_signer_a. get_node_id ( Recipient :: Node ) . unwrap ( ) ;
3310- let mut fd_a = FileDescriptor {
3311- fd : 1 , outbound_data : Arc :: new ( Mutex :: new ( Vec :: new ( ) ) ) ,
3312- disconnect : Arc :: new ( AtomicBool :: new ( false ) ) ,
3313- } ;
3314- let mut fd_b = FileDescriptor {
3315- fd : 1 , outbound_data : Arc :: new ( Mutex :: new ( Vec :: new ( ) ) ) ,
3316- disconnect : Arc :: new ( AtomicBool :: new ( false ) ) ,
3317- } ;
3293+ let mut fd_a = FileDescriptor :: new ( 1 ) ;
3294+ let mut fd_b = FileDescriptor :: new ( 1 ) ;
33183295
33193296 // Exchange messages with both peers until they both complete the init handshake.
33203297 let act_one = peer_b. new_outbound_connection ( a_id, fd_b. clone ( ) , None ) . unwrap ( ) ;
0 commit comments