@@ -2995,7 +2995,7 @@ mod tests {
2995
2995
}
2996
2996
2997
2997
#[ instrument( skip_all, fields( me = %ep. endpoint. node_id( ) . fmt_short( ) ) ) ]
2998
- async fn echo_receiver ( ep : MagicStack ) -> Result < ( ) > {
2998
+ async fn echo_receiver ( ep : MagicStack , loss : ExpectedLoss ) -> Result < ( ) > {
2999
2999
info ! ( "accepting conn" ) ;
3000
3000
let conn = ep. endpoint . accept ( ) . await . expect ( "no conn" ) ;
3001
3001
@@ -3026,10 +3026,12 @@ mod tests {
3026
3026
let stats = conn. stats ( ) ;
3027
3027
info ! ( "stats: {:#?}" , stats) ;
3028
3028
// TODO: ensure panics in this function are reported ok
3029
- assert ! (
3030
- stats. path. lost_packets < 10 ,
3031
- "[receiver] should not loose many packets" ,
3032
- ) ;
3029
+ if matches ! ( loss, ExpectedLoss :: AlmostNone ) {
3030
+ assert ! (
3031
+ stats. path. lost_packets < 10 ,
3032
+ "[receiver] should not loose many packets" ,
3033
+ ) ;
3034
+ }
3033
3035
3034
3036
info ! ( "close" ) ;
3035
3037
conn. close ( 0u32 . into ( ) , b"done" ) ;
@@ -3040,7 +3042,12 @@ mod tests {
3040
3042
}
3041
3043
3042
3044
#[ instrument( skip_all, fields( me = %ep. endpoint. node_id( ) . fmt_short( ) ) ) ]
3043
- async fn echo_sender ( ep : MagicStack , dest_id : PublicKey , msg : & [ u8 ] ) -> Result < ( ) > {
3045
+ async fn echo_sender (
3046
+ ep : MagicStack ,
3047
+ dest_id : PublicKey ,
3048
+ msg : & [ u8 ] ,
3049
+ loss : ExpectedLoss ,
3050
+ ) -> Result < ( ) > {
3044
3051
info ! ( "connecting to {}" , dest_id. fmt_short( ) ) ;
3045
3052
let dest = NodeAddr :: new ( dest_id) ;
3046
3053
let conn = ep
@@ -3071,10 +3078,12 @@ mod tests {
3071
3078
3072
3079
let stats = conn. stats ( ) ;
3073
3080
info ! ( "stats: {:#?}" , stats) ;
3074
- assert ! (
3075
- stats. path. lost_packets < 10 ,
3076
- "[sender] should not loose many packets" ,
3077
- ) ;
3081
+ if matches ! ( loss, ExpectedLoss :: AlmostNone ) {
3082
+ assert ! (
3083
+ stats. path. lost_packets < 10 ,
3084
+ "[sender] should not loose many packets" ,
3085
+ ) ;
3086
+ }
3078
3087
3079
3088
info ! ( "close" ) ;
3080
3089
conn. close ( 0u32 . into ( ) , b"done" ) ;
@@ -3083,14 +3092,25 @@ mod tests {
3083
3092
Ok ( ( ) )
3084
3093
}
3085
3094
3095
+ #[ derive( Debug , Copy , Clone ) ]
3096
+ enum ExpectedLoss {
3097
+ AlmostNone ,
3098
+ YeahSure ,
3099
+ }
3100
+
3086
3101
/// Runs a roundtrip between the [`echo_sender`] and [`echo_receiver`].
3087
- async fn run_roundtrip ( sender : MagicStack , receiver : MagicStack , payload : & [ u8 ] ) {
3102
+ async fn run_roundtrip (
3103
+ sender : MagicStack ,
3104
+ receiver : MagicStack ,
3105
+ payload : & [ u8 ] ,
3106
+ loss : ExpectedLoss ,
3107
+ ) {
3088
3108
let send_node_id = sender. endpoint . node_id ( ) ;
3089
3109
let recv_node_id = receiver. endpoint . node_id ( ) ;
3090
3110
info ! ( "\n roundtrip: {send_node_id:#} -> {recv_node_id:#}" ) ;
3091
3111
3092
- let receiver_task = tokio:: spawn ( echo_receiver ( receiver) ) ;
3093
- let sender_res = echo_sender ( sender, recv_node_id, payload) . await ;
3112
+ let receiver_task = tokio:: spawn ( echo_receiver ( receiver, loss ) ) ;
3113
+ let sender_res = echo_sender ( sender, recv_node_id, payload, loss ) . await ;
3094
3114
let sender_is_err = match sender_res {
3095
3115
Ok ( ( ) ) => false ,
3096
3116
Err ( err) => {
@@ -3129,14 +3149,26 @@ mod tests {
3129
3149
3130
3150
for i in 0 ..5 {
3131
3151
info ! ( "\n -- round {i}" ) ;
3132
- run_roundtrip ( m1. clone ( ) , m2. clone ( ) , b"hello m1" ) . await ;
3133
- run_roundtrip ( m2. clone ( ) , m1. clone ( ) , b"hello m2" ) . await ;
3152
+ run_roundtrip (
3153
+ m1. clone ( ) ,
3154
+ m2. clone ( ) ,
3155
+ b"hello m1" ,
3156
+ ExpectedLoss :: AlmostNone ,
3157
+ )
3158
+ . await ;
3159
+ run_roundtrip (
3160
+ m2. clone ( ) ,
3161
+ m1. clone ( ) ,
3162
+ b"hello m2" ,
3163
+ ExpectedLoss :: AlmostNone ,
3164
+ )
3165
+ . await ;
3134
3166
3135
3167
info ! ( "\n -- larger data" ) ;
3136
3168
let mut data = vec ! [ 0u8 ; 10 * 1024 ] ;
3137
3169
rand:: thread_rng ( ) . fill_bytes ( & mut data) ;
3138
- run_roundtrip ( m1. clone ( ) , m2. clone ( ) , & data) . await ;
3139
- run_roundtrip ( m2. clone ( ) , m1. clone ( ) , & data) . await ;
3170
+ run_roundtrip ( m1. clone ( ) , m2. clone ( ) , & data, ExpectedLoss :: AlmostNone ) . await ;
3171
+ run_roundtrip ( m2. clone ( ) , m1. clone ( ) , & data, ExpectedLoss :: AlmostNone ) . await ;
3140
3172
}
3141
3173
3142
3174
Ok ( ( ) )
@@ -3223,14 +3255,14 @@ mod tests {
3223
3255
3224
3256
for i in 0 ..rounds {
3225
3257
println ! ( "-- [m1 changes] round {}" , i + 1 ) ;
3226
- run_roundtrip ( m1. clone ( ) , m2. clone ( ) , b"hello m1" ) . await ;
3227
- run_roundtrip ( m2. clone ( ) , m1. clone ( ) , b"hello m2" ) . await ;
3258
+ run_roundtrip ( m1. clone ( ) , m2. clone ( ) , b"hello m1" , ExpectedLoss :: YeahSure ) . await ;
3259
+ run_roundtrip ( m2. clone ( ) , m1. clone ( ) , b"hello m2" , ExpectedLoss :: YeahSure ) . await ;
3228
3260
3229
3261
println ! ( "-- [m1 changes] larger data" ) ;
3230
3262
let mut data = vec ! [ 0u8 ; 10 * 1024 ] ;
3231
3263
rand:: thread_rng ( ) . fill_bytes ( & mut data) ;
3232
- run_roundtrip ( m1. clone ( ) , m2. clone ( ) , & data) . await ;
3233
- run_roundtrip ( m2. clone ( ) , m1. clone ( ) , & data) . await ;
3264
+ run_roundtrip ( m1. clone ( ) , m2. clone ( ) , & data, ExpectedLoss :: YeahSure ) . await ;
3265
+ run_roundtrip ( m2. clone ( ) , m1. clone ( ) , & data, ExpectedLoss :: YeahSure ) . await ;
3234
3266
}
3235
3267
3236
3268
std:: mem:: drop ( m1_network_change_guard) ;
@@ -3252,14 +3284,14 @@ mod tests {
3252
3284
3253
3285
for i in 0 ..rounds {
3254
3286
println ! ( "-- [m2 changes] round {}" , i + 1 ) ;
3255
- run_roundtrip ( m1. clone ( ) , m2. clone ( ) , b"hello m1" ) . await ;
3256
- run_roundtrip ( m2. clone ( ) , m1. clone ( ) , b"hello m2" ) . await ;
3287
+ run_roundtrip ( m1. clone ( ) , m2. clone ( ) , b"hello m1" , ExpectedLoss :: YeahSure ) . await ;
3288
+ run_roundtrip ( m2. clone ( ) , m1. clone ( ) , b"hello m2" , ExpectedLoss :: YeahSure ) . await ;
3257
3289
3258
3290
println ! ( "-- [m2 changes] larger data" ) ;
3259
3291
let mut data = vec ! [ 0u8 ; 10 * 1024 ] ;
3260
3292
rand:: thread_rng ( ) . fill_bytes ( & mut data) ;
3261
- run_roundtrip ( m1. clone ( ) , m2. clone ( ) , & data) . await ;
3262
- run_roundtrip ( m2. clone ( ) , m1. clone ( ) , & data) . await ;
3293
+ run_roundtrip ( m1. clone ( ) , m2. clone ( ) , & data, ExpectedLoss :: YeahSure ) . await ;
3294
+ run_roundtrip ( m2. clone ( ) , m1. clone ( ) , & data, ExpectedLoss :: YeahSure ) . await ;
3263
3295
}
3264
3296
3265
3297
std:: mem:: drop ( m2_network_change_guard) ;
@@ -3282,14 +3314,14 @@ mod tests {
3282
3314
3283
3315
for i in 0 ..rounds {
3284
3316
println ! ( "-- [m1 & m2 changes] round {}" , i + 1 ) ;
3285
- run_roundtrip ( m1. clone ( ) , m2. clone ( ) , b"hello m1" ) . await ;
3286
- run_roundtrip ( m2. clone ( ) , m1. clone ( ) , b"hello m2" ) . await ;
3317
+ run_roundtrip ( m1. clone ( ) , m2. clone ( ) , b"hello m1" , ExpectedLoss :: YeahSure ) . await ;
3318
+ run_roundtrip ( m2. clone ( ) , m1. clone ( ) , b"hello m2" , ExpectedLoss :: YeahSure ) . await ;
3287
3319
3288
3320
println ! ( "-- [m1 & m2 changes] larger data" ) ;
3289
3321
let mut data = vec ! [ 0u8 ; 10 * 1024 ] ;
3290
3322
rand:: thread_rng ( ) . fill_bytes ( & mut data) ;
3291
- run_roundtrip ( m1. clone ( ) , m2. clone ( ) , & data) . await ;
3292
- run_roundtrip ( m2. clone ( ) , m1. clone ( ) , & data) . await ;
3323
+ run_roundtrip ( m1. clone ( ) , m2. clone ( ) , & data, ExpectedLoss :: YeahSure ) . await ;
3324
+ run_roundtrip ( m2. clone ( ) , m1. clone ( ) , & data, ExpectedLoss :: YeahSure ) . await ;
3293
3325
}
3294
3326
3295
3327
std:: mem:: drop ( m1_m2_network_change_guard) ;
0 commit comments