@@ -2754,6 +2754,7 @@ mod tests {
2754
2754
#[ derive( Clone ) ]
2755
2755
struct FileDescriptor {
2756
2756
fd : u16 ,
2757
+ hang_writes : Arc < AtomicBool > ,
2757
2758
outbound_data : Arc < Mutex < Vec < u8 > > > ,
2758
2759
disconnect : Arc < AtomicBool > ,
2759
2760
}
@@ -2771,13 +2772,28 @@ mod tests {
2771
2772
2772
2773
impl SocketDescriptor for FileDescriptor {
2773
2774
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
+ }
2776
2781
}
2777
2782
2778
2783
fn disconnect_socket ( & mut self ) { self . disconnect . store ( true , Ordering :: Release ) ; }
2779
2784
}
2780
2785
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
+
2781
2797
struct PeerManagerCfg {
2782
2798
chan_handler : test_utils:: TestChannelMessageHandler ,
2783
2799
routing_handler : test_utils:: TestRoutingMessageHandler ,
@@ -2828,7 +2844,7 @@ mod tests {
2828
2844
cfgs. push (
2829
2845
PeerManagerCfg {
2830
2846
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 ( ) ) ,
2832
2848
routing_handler : test_utils:: TestRoutingMessageHandler :: new ( ) ,
2833
2849
custom_handler : TestCustomMessageHandler { features } ,
2834
2850
node_signer : test_utils:: TestNodeSigner :: new ( node_secret) ,
@@ -2902,19 +2918,13 @@ mod tests {
2902
2918
let fd = FD_COUNTER . fetch_add ( 1 , Ordering :: Relaxed ) as u16 ;
2903
2919
2904
2920
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) ;
2909
2922
let addr_a = SocketAddress :: TcpIpV4 { addr : [ 127 , 0 , 0 , 1 ] , port : 1000 } ;
2910
2923
2911
2924
let id_b = peer_b. node_signer . get_node_id ( Recipient :: Node ) . unwrap ( ) ;
2912
2925
let features_a = peer_a. init_features ( id_b) ;
2913
2926
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) ;
2918
2928
let addr_b = SocketAddress :: TcpIpV4 { addr : [ 127 , 0 , 0 , 1 ] , port : 1001 } ;
2919
2929
2920
2930
let initial_data = peer_b. new_outbound_connection ( id_a, fd_b. clone ( ) , Some ( addr_a. clone ( ) ) ) . unwrap ( ) ;
@@ -2960,15 +2970,9 @@ mod tests {
2960
2970
let mut ctr = 0 ;
2961
2971
while start_time. elapsed( ) < std:: time:: Duration :: from_secs( 1 ) {
2962
2972
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 ) ;
2967
2974
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 ) ;
2972
2976
let addr_b = SocketAddress :: TcpIpV4 { addr: [ 127 , 0 , 0 , 1 ] , port: 1001 } ;
2973
2977
let initial_data = peers[ 1 ] . new_outbound_connection( id_a, fd_b. clone( ) , Some ( addr_a. clone( ) ) ) . unwrap( ) ;
2974
2978
peers[ 0 ] . new_inbound_connection( fd_a. clone( ) , Some ( addr_b. clone( ) ) ) . unwrap( ) ;
@@ -3032,15 +3036,9 @@ mod tests {
3032
3036
let peer_pairs = [ ( & peers[ 0 ] , & incompatible_peers[ 0 ] ) , ( & incompatible_peers[ 1 ] , & peers[ 1 ] ) ] ;
3033
3037
for ( peer_a, peer_b) in peer_pairs. iter ( ) {
3034
3038
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 ) ;
3039
3040
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 ) ;
3044
3042
let addr_b = SocketAddress :: TcpIpV4 { addr : [ 127 , 0 , 0 , 1 ] , port : 1001 } ;
3045
3043
let initial_data = peer_b. new_outbound_connection ( id_a, fd_b. clone ( ) , Some ( addr_a. clone ( ) ) ) . unwrap ( ) ;
3046
3044
peer_a. new_inbound_connection ( fd_a. clone ( ) , Some ( addr_b. clone ( ) ) ) . unwrap ( ) ;
@@ -3068,15 +3066,9 @@ mod tests {
3068
3066
let peer_pairs = [ ( & peers[ 0 ] , & incompatible_peers[ 0 ] ) , ( & incompatible_peers[ 1 ] , & peers[ 1 ] ) ] ;
3069
3067
for ( peer_a, peer_b) in peer_pairs. iter ( ) {
3070
3068
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 ) ;
3075
3070
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 ) ;
3080
3072
let addr_b = SocketAddress :: TcpIpV4 { addr : [ 127 , 0 , 0 , 1 ] , port : 1001 } ;
3081
3073
let initial_data = peer_b. new_outbound_connection ( id_a, fd_b. clone ( ) , Some ( addr_a. clone ( ) ) ) . unwrap ( ) ;
3082
3074
peer_a. new_inbound_connection ( fd_a. clone ( ) , Some ( addr_b. clone ( ) ) ) . unwrap ( ) ;
@@ -3150,10 +3142,7 @@ mod tests {
3150
3142
let cfgs = create_peermgr_cfgs ( 2 ) ;
3151
3143
let peers = create_network ( 2 , & cfgs) ;
3152
3144
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 ) ;
3157
3146
let addr_dup = SocketAddress :: TcpIpV4 { addr : [ 127 , 0 , 0 , 1 ] , port : 1003 } ;
3158
3147
let id_a = cfgs[ 0 ] . node_signer . get_node_id ( Recipient :: Node ) . unwrap ( ) ;
3159
3148
peers[ 0 ] . new_inbound_connection ( fd_dup. clone ( ) , Some ( addr_dup. clone ( ) ) ) . unwrap ( ) ;
@@ -3257,14 +3246,8 @@ mod tests {
3257
3246
let peers = create_network ( 2 , & cfgs) ;
3258
3247
3259
3248
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 ) ;
3268
3251
let initial_data = peers[ 1 ] . new_outbound_connection ( a_id, fd_b. clone ( ) , None ) . unwrap ( ) ;
3269
3252
peers[ 0 ] . new_inbound_connection ( fd_a. clone ( ) , None ) . unwrap ( ) ;
3270
3253
@@ -3310,14 +3293,8 @@ mod tests {
3310
3293
} , 0 , & [ 1 ; 32 ] , & logger, & node_signer_b) ;
3311
3294
3312
3295
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 ) ;
3321
3298
3322
3299
// Exchange messages with both peers until they both complete the init handshake.
3323
3300
let act_one = peer_b. new_outbound_connection ( a_id, fd_b. clone ( ) , None ) . unwrap ( ) ;
0 commit comments