@@ -2750,6 +2750,7 @@ mod tests {
27502750 #[ derive( Clone ) ]
27512751 struct FileDescriptor {
27522752 fd : u16 ,
2753+ hang_writes : Arc < AtomicBool > ,
27532754 outbound_data : Arc < Mutex < Vec < u8 > > > ,
27542755 disconnect : Arc < AtomicBool > ,
27552756 }
@@ -2767,13 +2768,28 @@ mod tests {
27672768
27682769 impl SocketDescriptor for FileDescriptor {
27692770 fn send_data ( & mut self , data : & [ u8 ] , _resume_read : bool ) -> usize {
2770- self . outbound_data . lock ( ) . unwrap ( ) . extend_from_slice ( data) ;
2771- data. len ( )
2771+ if self . hang_writes . load ( Ordering :: Acquire ) {
2772+ 0
2773+ } else {
2774+ self . outbound_data . lock ( ) . unwrap ( ) . extend_from_slice ( data) ;
2775+ data. len ( )
2776+ }
27722777 }
27732778
27742779 fn disconnect_socket ( & mut self ) { self . disconnect . store ( true , Ordering :: Release ) ; }
27752780 }
27762781
2782+ impl FileDescriptor {
2783+ fn new ( fd : u16 ) -> Self {
2784+ Self {
2785+ fd,
2786+ hang_writes : Arc :: new ( AtomicBool :: new ( false ) ) ,
2787+ outbound_data : Arc :: new ( Mutex :: new ( Vec :: new ( ) ) ) ,
2788+ disconnect : Arc :: new ( AtomicBool :: new ( false ) ) ,
2789+ }
2790+ }
2791+ }
2792+
27772793 struct PeerManagerCfg {
27782794 chan_handler : test_utils:: TestChannelMessageHandler ,
27792795 routing_handler : test_utils:: TestRoutingMessageHandler ,
@@ -2824,7 +2840,7 @@ mod tests {
28242840 cfgs. push (
28252841 PeerManagerCfg {
28262842 chan_handler : test_utils:: TestChannelMessageHandler :: new ( ChainHash :: using_genesis_block ( Network :: Testnet ) ) ,
2827- logger : test_utils:: TestLogger :: new ( ) ,
2843+ logger : test_utils:: TestLogger :: with_id ( i . to_string ( ) ) ,
28282844 routing_handler : test_utils:: TestRoutingMessageHandler :: new ( ) ,
28292845 custom_handler : TestCustomMessageHandler { features } ,
28302846 node_signer : test_utils:: TestNodeSigner :: new ( node_secret) ,
@@ -2898,19 +2914,13 @@ mod tests {
28982914 let fd = FD_COUNTER . fetch_add ( 1 , Ordering :: Relaxed ) as u16 ;
28992915
29002916 let id_a = peer_a. node_signer . get_node_id ( Recipient :: Node ) . unwrap ( ) ;
2901- let mut fd_a = FileDescriptor {
2902- fd, outbound_data : Arc :: new ( Mutex :: new ( Vec :: new ( ) ) ) ,
2903- disconnect : Arc :: new ( AtomicBool :: new ( false ) ) ,
2904- } ;
2917+ let mut fd_a = FileDescriptor :: new ( fd) ;
29052918 let addr_a = SocketAddress :: TcpIpV4 { addr : [ 127 , 0 , 0 , 1 ] , port : 1000 } ;
29062919
29072920 let id_b = peer_b. node_signer . get_node_id ( Recipient :: Node ) . unwrap ( ) ;
29082921 let features_a = peer_a. init_features ( id_b) ;
29092922 let features_b = peer_b. init_features ( id_a) ;
2910- let mut fd_b = FileDescriptor {
2911- fd, outbound_data : Arc :: new ( Mutex :: new ( Vec :: new ( ) ) ) ,
2912- disconnect : Arc :: new ( AtomicBool :: new ( false ) ) ,
2913- } ;
2923+ let mut fd_b = FileDescriptor :: new ( fd) ;
29142924 let addr_b = SocketAddress :: TcpIpV4 { addr : [ 127 , 0 , 0 , 1 ] , port : 1001 } ;
29152925
29162926 let initial_data = peer_b. new_outbound_connection ( id_a, fd_b. clone ( ) , Some ( addr_a. clone ( ) ) ) . unwrap ( ) ;
@@ -2956,15 +2966,9 @@ mod tests {
29562966 let mut ctr = 0 ;
29572967 while start_time. elapsed( ) < std:: time:: Duration :: from_secs( 1 ) {
29582968 let id_a = peers[ 0 ] . node_signer. get_node_id( Recipient :: Node ) . unwrap( ) ;
2959- let mut fd_a = FileDescriptor {
2960- fd: $id + ctr * 3 , outbound_data: Arc :: new( Mutex :: new( Vec :: new( ) ) ) ,
2961- disconnect: Arc :: new( AtomicBool :: new( false ) ) ,
2962- } ;
2969+ let mut fd_a = FileDescriptor :: new( $id + ctr * 3 ) ;
29632970 let addr_a = SocketAddress :: TcpIpV4 { addr: [ 127 , 0 , 0 , 1 ] , port: 1000 } ;
2964- let mut fd_b = FileDescriptor {
2965- fd: $id + ctr * 3 , outbound_data: Arc :: new( Mutex :: new( Vec :: new( ) ) ) ,
2966- disconnect: Arc :: new( AtomicBool :: new( false ) ) ,
2967- } ;
2971+ let mut fd_b = FileDescriptor :: new( $id + ctr * 3 ) ;
29682972 let addr_b = SocketAddress :: TcpIpV4 { addr: [ 127 , 0 , 0 , 1 ] , port: 1001 } ;
29692973 let initial_data = peers[ 1 ] . new_outbound_connection( id_a, fd_b. clone( ) , Some ( addr_a. clone( ) ) ) . unwrap( ) ;
29702974 peers[ 0 ] . new_inbound_connection( fd_a. clone( ) , Some ( addr_b. clone( ) ) ) . unwrap( ) ;
@@ -3028,15 +3032,9 @@ mod tests {
30283032 let peer_pairs = [ ( & peers[ 0 ] , & incompatible_peers[ 0 ] ) , ( & incompatible_peers[ 1 ] , & peers[ 1 ] ) ] ;
30293033 for ( peer_a, peer_b) in peer_pairs. iter ( ) {
30303034 let id_a = peer_a. node_signer . get_node_id ( Recipient :: Node ) . unwrap ( ) ;
3031- let mut fd_a = FileDescriptor {
3032- fd : 1 , outbound_data : Arc :: new ( Mutex :: new ( Vec :: new ( ) ) ) ,
3033- disconnect : Arc :: new ( AtomicBool :: new ( false ) ) ,
3034- } ;
3035+ let mut fd_a = FileDescriptor :: new ( 1 ) ;
30353036 let addr_a = SocketAddress :: TcpIpV4 { addr : [ 127 , 0 , 0 , 1 ] , port : 1000 } ;
3036- let mut fd_b = FileDescriptor {
3037- fd : 1 , outbound_data : Arc :: new ( Mutex :: new ( Vec :: new ( ) ) ) ,
3038- disconnect : Arc :: new ( AtomicBool :: new ( false ) ) ,
3039- } ;
3037+ let mut fd_b = FileDescriptor :: new ( 1 ) ;
30403038 let addr_b = SocketAddress :: TcpIpV4 { addr : [ 127 , 0 , 0 , 1 ] , port : 1001 } ;
30413039 let initial_data = peer_b. new_outbound_connection ( id_a, fd_b. clone ( ) , Some ( addr_a. clone ( ) ) ) . unwrap ( ) ;
30423040 peer_a. new_inbound_connection ( fd_a. clone ( ) , Some ( addr_b. clone ( ) ) ) . unwrap ( ) ;
@@ -3064,15 +3062,9 @@ mod tests {
30643062 let peer_pairs = [ ( & peers[ 0 ] , & incompatible_peers[ 0 ] ) , ( & incompatible_peers[ 1 ] , & peers[ 1 ] ) ] ;
30653063 for ( peer_a, peer_b) in peer_pairs. iter ( ) {
30663064 let id_a = peer_a. node_signer . get_node_id ( Recipient :: Node ) . unwrap ( ) ;
3067- let mut fd_a = FileDescriptor {
3068- fd : 1 , outbound_data : Arc :: new ( Mutex :: new ( Vec :: new ( ) ) ) ,
3069- disconnect : Arc :: new ( AtomicBool :: new ( false ) ) ,
3070- } ;
3065+ let mut fd_a = FileDescriptor :: new ( 1 ) ;
30713066 let addr_a = SocketAddress :: TcpIpV4 { addr : [ 127 , 0 , 0 , 1 ] , port : 1000 } ;
3072- let mut fd_b = FileDescriptor {
3073- fd : 1 , outbound_data : Arc :: new ( Mutex :: new ( Vec :: new ( ) ) ) ,
3074- disconnect : Arc :: new ( AtomicBool :: new ( false ) ) ,
3075- } ;
3067+ let mut fd_b = FileDescriptor :: new ( 1 ) ;
30763068 let addr_b = SocketAddress :: TcpIpV4 { addr : [ 127 , 0 , 0 , 1 ] , port : 1001 } ;
30773069 let initial_data = peer_b. new_outbound_connection ( id_a, fd_b. clone ( ) , Some ( addr_a. clone ( ) ) ) . unwrap ( ) ;
30783070 peer_a. new_inbound_connection ( fd_a. clone ( ) , Some ( addr_b. clone ( ) ) ) . unwrap ( ) ;
@@ -3146,10 +3138,7 @@ mod tests {
31463138 let cfgs = create_peermgr_cfgs ( 2 ) ;
31473139 let peers = create_network ( 2 , & cfgs) ;
31483140
3149- let mut fd_dup = FileDescriptor {
3150- fd : 3 , outbound_data : Arc :: new ( Mutex :: new ( Vec :: new ( ) ) ) ,
3151- disconnect : Arc :: new ( AtomicBool :: new ( false ) ) ,
3152- } ;
3141+ let mut fd_dup = FileDescriptor :: new ( 3 ) ;
31533142 let addr_dup = SocketAddress :: TcpIpV4 { addr : [ 127 , 0 , 0 , 1 ] , port : 1003 } ;
31543143 let id_a = cfgs[ 0 ] . node_signer . get_node_id ( Recipient :: Node ) . unwrap ( ) ;
31553144 peers[ 0 ] . new_inbound_connection ( fd_dup. clone ( ) , Some ( addr_dup. clone ( ) ) ) . unwrap ( ) ;
@@ -3253,14 +3242,8 @@ mod tests {
32533242 let peers = create_network ( 2 , & cfgs) ;
32543243
32553244 let a_id = peers[ 0 ] . node_signer . get_node_id ( Recipient :: Node ) . unwrap ( ) ;
3256- let mut fd_a = FileDescriptor {
3257- fd : 1 , outbound_data : Arc :: new ( Mutex :: new ( Vec :: new ( ) ) ) ,
3258- disconnect : Arc :: new ( AtomicBool :: new ( false ) ) ,
3259- } ;
3260- let mut fd_b = FileDescriptor {
3261- fd : 1 , outbound_data : Arc :: new ( Mutex :: new ( Vec :: new ( ) ) ) ,
3262- disconnect : Arc :: new ( AtomicBool :: new ( false ) ) ,
3263- } ;
3245+ let mut fd_a = FileDescriptor :: new ( 1 ) ;
3246+ let mut fd_b = FileDescriptor :: new ( 1 ) ;
32643247 let initial_data = peers[ 1 ] . new_outbound_connection ( a_id, fd_b. clone ( ) , None ) . unwrap ( ) ;
32653248 peers[ 0 ] . new_inbound_connection ( fd_a. clone ( ) , None ) . unwrap ( ) ;
32663249
@@ -3306,14 +3289,8 @@ mod tests {
33063289 } , 0 , & [ 1 ; 32 ] , & logger, & node_signer_b) ;
33073290
33083291 let a_id = node_signer_a. get_node_id ( Recipient :: Node ) . unwrap ( ) ;
3309- let mut fd_a = FileDescriptor {
3310- fd : 1 , outbound_data : Arc :: new ( Mutex :: new ( Vec :: new ( ) ) ) ,
3311- disconnect : Arc :: new ( AtomicBool :: new ( false ) ) ,
3312- } ;
3313- let mut fd_b = FileDescriptor {
3314- fd : 1 , outbound_data : Arc :: new ( Mutex :: new ( Vec :: new ( ) ) ) ,
3315- disconnect : Arc :: new ( AtomicBool :: new ( false ) ) ,
3316- } ;
3292+ let mut fd_a = FileDescriptor :: new ( 1 ) ;
3293+ let mut fd_b = FileDescriptor :: new ( 1 ) ;
33173294
33183295 // Exchange messages with both peers until they both complete the init handshake.
33193296 let act_one = peer_b. new_outbound_connection ( a_id, fd_b. clone ( ) , None ) . unwrap ( ) ;
0 commit comments