@@ -2754,6 +2754,7 @@ mod tests {
27542754 #[ derive( Clone ) ]
27552755 struct FileDescriptor {
27562756 fd : u16 ,
2757+ hang_writes : Arc < AtomicBool > ,
27572758 outbound_data : Arc < Mutex < Vec < u8 > > > ,
27582759 disconnect : Arc < AtomicBool > ,
27592760 }
@@ -2771,13 +2772,28 @@ mod tests {
27712772
27722773 impl SocketDescriptor for FileDescriptor {
27732774 fn send_data ( & mut self , data : & [ u8 ] , _resume_read : bool ) -> usize {
2774- self . outbound_data . lock ( ) . unwrap ( ) . extend_from_slice ( data) ;
2775- data. len ( )
2775+ if self . hang_writes . load ( Ordering :: Acquire ) {
2776+ 0
2777+ } else {
2778+ self . outbound_data . lock ( ) . unwrap ( ) . extend_from_slice ( data) ;
2779+ data. len ( )
2780+ }
27762781 }
27772782
27782783 fn disconnect_socket ( & mut self ) { self . disconnect . store ( true , Ordering :: Release ) ; }
27792784 }
27802785
2786+ impl FileDescriptor {
2787+ fn new ( fd : u16 ) -> Self {
2788+ Self {
2789+ fd,
2790+ hang_writes : Arc :: new ( AtomicBool :: new ( false ) ) ,
2791+ outbound_data : Arc :: new ( Mutex :: new ( Vec :: new ( ) ) ) ,
2792+ disconnect : Arc :: new ( AtomicBool :: new ( false ) ) ,
2793+ }
2794+ }
2795+ }
2796+
27812797 struct PeerManagerCfg {
27822798 chan_handler : test_utils:: TestChannelMessageHandler ,
27832799 routing_handler : test_utils:: TestRoutingMessageHandler ,
@@ -2828,7 +2844,7 @@ mod tests {
28282844 cfgs. push (
28292845 PeerManagerCfg {
28302846 chan_handler : test_utils:: TestChannelMessageHandler :: new ( ChainHash :: using_genesis_block ( Network :: Testnet ) ) ,
2831- logger : test_utils:: TestLogger :: new ( ) ,
2847+ logger : test_utils:: TestLogger :: with_id ( i . to_string ( ) ) ,
28322848 routing_handler : test_utils:: TestRoutingMessageHandler :: new ( ) ,
28332849 custom_handler : TestCustomMessageHandler { features } ,
28342850 node_signer : test_utils:: TestNodeSigner :: new ( node_secret) ,
@@ -2902,19 +2918,13 @@ mod tests {
29022918 let fd = FD_COUNTER . fetch_add ( 1 , Ordering :: Relaxed ) as u16 ;
29032919
29042920 let id_a = peer_a. node_signer . get_node_id ( Recipient :: Node ) . unwrap ( ) ;
2905- let mut fd_a = FileDescriptor {
2906- fd, outbound_data : Arc :: new ( Mutex :: new ( Vec :: new ( ) ) ) ,
2907- disconnect : Arc :: new ( AtomicBool :: new ( false ) ) ,
2908- } ;
2921+ let mut fd_a = FileDescriptor :: new ( fd) ;
29092922 let addr_a = SocketAddress :: TcpIpV4 { addr : [ 127 , 0 , 0 , 1 ] , port : 1000 } ;
29102923
29112924 let id_b = peer_b. node_signer . get_node_id ( Recipient :: Node ) . unwrap ( ) ;
29122925 let features_a = peer_a. init_features ( id_b) ;
29132926 let features_b = peer_b. init_features ( id_a) ;
2914- let mut fd_b = FileDescriptor {
2915- fd, outbound_data : Arc :: new ( Mutex :: new ( Vec :: new ( ) ) ) ,
2916- disconnect : Arc :: new ( AtomicBool :: new ( false ) ) ,
2917- } ;
2927+ let mut fd_b = FileDescriptor :: new ( fd) ;
29182928 let addr_b = SocketAddress :: TcpIpV4 { addr : [ 127 , 0 , 0 , 1 ] , port : 1001 } ;
29192929
29202930 let initial_data = peer_b. new_outbound_connection ( id_a, fd_b. clone ( ) , Some ( addr_a. clone ( ) ) ) . unwrap ( ) ;
@@ -2960,15 +2970,9 @@ mod tests {
29602970 let mut ctr = 0 ;
29612971 while start_time. elapsed( ) < std:: time:: Duration :: from_secs( 1 ) {
29622972 let id_a = peers[ 0 ] . node_signer. get_node_id( Recipient :: Node ) . unwrap( ) ;
2963- let mut fd_a = FileDescriptor {
2964- fd: $id + ctr * 3 , outbound_data: Arc :: new( Mutex :: new( Vec :: new( ) ) ) ,
2965- disconnect: Arc :: new( AtomicBool :: new( false ) ) ,
2966- } ;
2973+ let mut fd_a = FileDescriptor :: new( $id + ctr * 3 ) ;
29672974 let addr_a = SocketAddress :: TcpIpV4 { addr: [ 127 , 0 , 0 , 1 ] , port: 1000 } ;
2968- let mut fd_b = FileDescriptor {
2969- fd: $id + ctr * 3 , outbound_data: Arc :: new( Mutex :: new( Vec :: new( ) ) ) ,
2970- disconnect: Arc :: new( AtomicBool :: new( false ) ) ,
2971- } ;
2975+ let mut fd_b = FileDescriptor :: new( $id + ctr * 3 ) ;
29722976 let addr_b = SocketAddress :: TcpIpV4 { addr: [ 127 , 0 , 0 , 1 ] , port: 1001 } ;
29732977 let initial_data = peers[ 1 ] . new_outbound_connection( id_a, fd_b. clone( ) , Some ( addr_a. clone( ) ) ) . unwrap( ) ;
29742978 peers[ 0 ] . new_inbound_connection( fd_a. clone( ) , Some ( addr_b. clone( ) ) ) . unwrap( ) ;
@@ -3032,15 +3036,9 @@ mod tests {
30323036 let peer_pairs = [ ( & peers[ 0 ] , & incompatible_peers[ 0 ] ) , ( & incompatible_peers[ 1 ] , & peers[ 1 ] ) ] ;
30333037 for ( peer_a, peer_b) in peer_pairs. iter ( ) {
30343038 let id_a = peer_a. node_signer . get_node_id ( Recipient :: Node ) . unwrap ( ) ;
3035- let mut fd_a = FileDescriptor {
3036- fd : 1 , outbound_data : Arc :: new ( Mutex :: new ( Vec :: new ( ) ) ) ,
3037- disconnect : Arc :: new ( AtomicBool :: new ( false ) ) ,
3038- } ;
3039+ let mut fd_a = FileDescriptor :: new ( 1 ) ;
30393040 let addr_a = SocketAddress :: TcpIpV4 { addr : [ 127 , 0 , 0 , 1 ] , port : 1000 } ;
3040- let mut fd_b = FileDescriptor {
3041- fd : 1 , outbound_data : Arc :: new ( Mutex :: new ( Vec :: new ( ) ) ) ,
3042- disconnect : Arc :: new ( AtomicBool :: new ( false ) ) ,
3043- } ;
3041+ let mut fd_b = FileDescriptor :: new ( 1 ) ;
30443042 let addr_b = SocketAddress :: TcpIpV4 { addr : [ 127 , 0 , 0 , 1 ] , port : 1001 } ;
30453043 let initial_data = peer_b. new_outbound_connection ( id_a, fd_b. clone ( ) , Some ( addr_a. clone ( ) ) ) . unwrap ( ) ;
30463044 peer_a. new_inbound_connection ( fd_a. clone ( ) , Some ( addr_b. clone ( ) ) ) . unwrap ( ) ;
@@ -3068,15 +3066,9 @@ mod tests {
30683066 let peer_pairs = [ ( & peers[ 0 ] , & incompatible_peers[ 0 ] ) , ( & incompatible_peers[ 1 ] , & peers[ 1 ] ) ] ;
30693067 for ( peer_a, peer_b) in peer_pairs. iter ( ) {
30703068 let id_a = peer_a. node_signer . get_node_id ( Recipient :: Node ) . unwrap ( ) ;
3071- let mut fd_a = FileDescriptor {
3072- fd : 1 , outbound_data : Arc :: new ( Mutex :: new ( Vec :: new ( ) ) ) ,
3073- disconnect : Arc :: new ( AtomicBool :: new ( false ) ) ,
3074- } ;
3069+ let mut fd_a = FileDescriptor :: new ( 1 ) ;
30753070 let addr_a = SocketAddress :: TcpIpV4 { addr : [ 127 , 0 , 0 , 1 ] , port : 1000 } ;
3076- let mut fd_b = FileDescriptor {
3077- fd : 1 , outbound_data : Arc :: new ( Mutex :: new ( Vec :: new ( ) ) ) ,
3078- disconnect : Arc :: new ( AtomicBool :: new ( false ) ) ,
3079- } ;
3071+ let mut fd_b = FileDescriptor :: new ( 1 ) ;
30803072 let addr_b = SocketAddress :: TcpIpV4 { addr : [ 127 , 0 , 0 , 1 ] , port : 1001 } ;
30813073 let initial_data = peer_b. new_outbound_connection ( id_a, fd_b. clone ( ) , Some ( addr_a. clone ( ) ) ) . unwrap ( ) ;
30823074 peer_a. new_inbound_connection ( fd_a. clone ( ) , Some ( addr_b. clone ( ) ) ) . unwrap ( ) ;
@@ -3150,10 +3142,7 @@ mod tests {
31503142 let cfgs = create_peermgr_cfgs ( 2 ) ;
31513143 let peers = create_network ( 2 , & cfgs) ;
31523144
3153- let mut fd_dup = FileDescriptor {
3154- fd : 3 , outbound_data : Arc :: new ( Mutex :: new ( Vec :: new ( ) ) ) ,
3155- disconnect : Arc :: new ( AtomicBool :: new ( false ) ) ,
3156- } ;
3145+ let mut fd_dup = FileDescriptor :: new ( 3 ) ;
31573146 let addr_dup = SocketAddress :: TcpIpV4 { addr : [ 127 , 0 , 0 , 1 ] , port : 1003 } ;
31583147 let id_a = cfgs[ 0 ] . node_signer . get_node_id ( Recipient :: Node ) . unwrap ( ) ;
31593148 peers[ 0 ] . new_inbound_connection ( fd_dup. clone ( ) , Some ( addr_dup. clone ( ) ) ) . unwrap ( ) ;
@@ -3257,14 +3246,8 @@ mod tests {
32573246 let peers = create_network ( 2 , & cfgs) ;
32583247
32593248 let a_id = peers[ 0 ] . node_signer . get_node_id ( Recipient :: Node ) . unwrap ( ) ;
3260- let mut fd_a = FileDescriptor {
3261- fd : 1 , outbound_data : Arc :: new ( Mutex :: new ( Vec :: new ( ) ) ) ,
3262- disconnect : Arc :: new ( AtomicBool :: new ( false ) ) ,
3263- } ;
3264- let mut fd_b = FileDescriptor {
3265- fd : 1 , outbound_data : Arc :: new ( Mutex :: new ( Vec :: new ( ) ) ) ,
3266- disconnect : Arc :: new ( AtomicBool :: new ( false ) ) ,
3267- } ;
3249+ let mut fd_a = FileDescriptor :: new ( 1 ) ;
3250+ let mut fd_b = FileDescriptor :: new ( 1 ) ;
32683251 let initial_data = peers[ 1 ] . new_outbound_connection ( a_id, fd_b. clone ( ) , None ) . unwrap ( ) ;
32693252 peers[ 0 ] . new_inbound_connection ( fd_a. clone ( ) , None ) . unwrap ( ) ;
32703253
@@ -3310,14 +3293,8 @@ mod tests {
33103293 } , 0 , & [ 1 ; 32 ] , & logger, & node_signer_b) ;
33113294
33123295 let a_id = node_signer_a. get_node_id ( Recipient :: Node ) . unwrap ( ) ;
3313- let mut fd_a = FileDescriptor {
3314- fd : 1 , outbound_data : Arc :: new ( Mutex :: new ( Vec :: new ( ) ) ) ,
3315- disconnect : Arc :: new ( AtomicBool :: new ( false ) ) ,
3316- } ;
3317- let mut fd_b = FileDescriptor {
3318- fd : 1 , outbound_data : Arc :: new ( Mutex :: new ( Vec :: new ( ) ) ) ,
3319- disconnect : Arc :: new ( AtomicBool :: new ( false ) ) ,
3320- } ;
3296+ let mut fd_a = FileDescriptor :: new ( 1 ) ;
3297+ let mut fd_b = FileDescriptor :: new ( 1 ) ;
33213298
33223299 // Exchange messages with both peers until they both complete the init handshake.
33233300 let act_one = peer_b. new_outbound_connection ( a_id, fd_b. clone ( ) , None ) . unwrap ( ) ;
0 commit comments