@@ -2751,6 +2751,7 @@ mod tests {
2751
2751
#[ derive( Clone ) ]
2752
2752
struct FileDescriptor {
2753
2753
fd : u16 ,
2754
+ hang_writes : Arc < AtomicBool > ,
2754
2755
outbound_data : Arc < Mutex < Vec < u8 > > > ,
2755
2756
disconnect : Arc < AtomicBool > ,
2756
2757
}
@@ -2768,13 +2769,28 @@ mod tests {
2768
2769
2769
2770
impl SocketDescriptor for FileDescriptor {
2770
2771
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
+ }
2773
2778
}
2774
2779
2775
2780
fn disconnect_socket ( & mut self ) { self . disconnect . store ( true , Ordering :: Release ) ; }
2776
2781
}
2777
2782
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
+
2778
2794
struct PeerManagerCfg {
2779
2795
chan_handler : test_utils:: TestChannelMessageHandler ,
2780
2796
routing_handler : test_utils:: TestRoutingMessageHandler ,
@@ -2825,7 +2841,7 @@ mod tests {
2825
2841
cfgs. push (
2826
2842
PeerManagerCfg {
2827
2843
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 ( ) ) ,
2829
2845
routing_handler : test_utils:: TestRoutingMessageHandler :: new ( ) ,
2830
2846
custom_handler : TestCustomMessageHandler { features } ,
2831
2847
node_signer : test_utils:: TestNodeSigner :: new ( node_secret) ,
@@ -2899,19 +2915,13 @@ mod tests {
2899
2915
let fd = FD_COUNTER . fetch_add ( 1 , Ordering :: Relaxed ) as u16 ;
2900
2916
2901
2917
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) ;
2906
2919
let addr_a = SocketAddress :: TcpIpV4 { addr : [ 127 , 0 , 0 , 1 ] , port : 1000 } ;
2907
2920
2908
2921
let id_b = peer_b. node_signer . get_node_id ( Recipient :: Node ) . unwrap ( ) ;
2909
2922
let features_a = peer_a. init_features ( & id_b) ;
2910
2923
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) ;
2915
2925
let addr_b = SocketAddress :: TcpIpV4 { addr : [ 127 , 0 , 0 , 1 ] , port : 1001 } ;
2916
2926
2917
2927
let initial_data = peer_b. new_outbound_connection ( id_a, fd_b. clone ( ) , Some ( addr_a. clone ( ) ) ) . unwrap ( ) ;
@@ -2957,15 +2967,9 @@ mod tests {
2957
2967
let mut ctr = 0 ;
2958
2968
while start_time. elapsed( ) < std:: time:: Duration :: from_secs( 1 ) {
2959
2969
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 ) ;
2964
2971
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 ) ;
2969
2973
let addr_b = SocketAddress :: TcpIpV4 { addr: [ 127 , 0 , 0 , 1 ] , port: 1001 } ;
2970
2974
let initial_data = peers[ 1 ] . new_outbound_connection( id_a, fd_b. clone( ) , Some ( addr_a. clone( ) ) ) . unwrap( ) ;
2971
2975
peers[ 0 ] . new_inbound_connection( fd_a. clone( ) , Some ( addr_b. clone( ) ) ) . unwrap( ) ;
@@ -3029,15 +3033,9 @@ mod tests {
3029
3033
let peer_pairs = [ ( & peers[ 0 ] , & incompatible_peers[ 0 ] ) , ( & incompatible_peers[ 1 ] , & peers[ 1 ] ) ] ;
3030
3034
for ( peer_a, peer_b) in peer_pairs. iter ( ) {
3031
3035
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 ) ;
3036
3037
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 ) ;
3041
3039
let addr_b = SocketAddress :: TcpIpV4 { addr : [ 127 , 0 , 0 , 1 ] , port : 1001 } ;
3042
3040
let initial_data = peer_b. new_outbound_connection ( id_a, fd_b. clone ( ) , Some ( addr_a. clone ( ) ) ) . unwrap ( ) ;
3043
3041
peer_a. new_inbound_connection ( fd_a. clone ( ) , Some ( addr_b. clone ( ) ) ) . unwrap ( ) ;
@@ -3065,15 +3063,9 @@ mod tests {
3065
3063
let peer_pairs = [ ( & peers[ 0 ] , & incompatible_peers[ 0 ] ) , ( & incompatible_peers[ 1 ] , & peers[ 1 ] ) ] ;
3066
3064
for ( peer_a, peer_b) in peer_pairs. iter ( ) {
3067
3065
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 ) ;
3072
3067
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 ) ;
3077
3069
let addr_b = SocketAddress :: TcpIpV4 { addr : [ 127 , 0 , 0 , 1 ] , port : 1001 } ;
3078
3070
let initial_data = peer_b. new_outbound_connection ( id_a, fd_b. clone ( ) , Some ( addr_a. clone ( ) ) ) . unwrap ( ) ;
3079
3071
peer_a. new_inbound_connection ( fd_a. clone ( ) , Some ( addr_b. clone ( ) ) ) . unwrap ( ) ;
@@ -3147,10 +3139,7 @@ mod tests {
3147
3139
let cfgs = create_peermgr_cfgs ( 2 ) ;
3148
3140
let peers = create_network ( 2 , & cfgs) ;
3149
3141
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 ) ;
3154
3143
let addr_dup = SocketAddress :: TcpIpV4 { addr : [ 127 , 0 , 0 , 1 ] , port : 1003 } ;
3155
3144
let id_a = cfgs[ 0 ] . node_signer . get_node_id ( Recipient :: Node ) . unwrap ( ) ;
3156
3145
peers[ 0 ] . new_inbound_connection ( fd_dup. clone ( ) , Some ( addr_dup. clone ( ) ) ) . unwrap ( ) ;
@@ -3254,14 +3243,8 @@ mod tests {
3254
3243
let peers = create_network ( 2 , & cfgs) ;
3255
3244
3256
3245
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 ) ;
3265
3248
let initial_data = peers[ 1 ] . new_outbound_connection ( a_id, fd_b. clone ( ) , None ) . unwrap ( ) ;
3266
3249
peers[ 0 ] . new_inbound_connection ( fd_a. clone ( ) , None ) . unwrap ( ) ;
3267
3250
@@ -3307,14 +3290,8 @@ mod tests {
3307
3290
} , 0 , & [ 1 ; 32 ] , & logger, & node_signer_b) ;
3308
3291
3309
3292
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 ) ;
3318
3295
3319
3296
// Exchange messages with both peers until they both complete the init handshake.
3320
3297
let act_one = peer_b. new_outbound_connection ( a_id, fd_b. clone ( ) , None ) . unwrap ( ) ;
0 commit comments