@@ -1330,7 +1330,7 @@ mod tests {
13301330 use n0_watcher:: Watcher ;
13311331 use quinn:: ConnectionError ;
13321332 use rand:: SeedableRng ;
1333- use tokio:: sync:: oneshot;
1333+ use tokio:: sync:: { mpsc , oneshot} ;
13341334 use tracing:: { Instrument , debug, error_span, info, info_span, instrument} ;
13351335 use tracing_test:: traced_test;
13361336
@@ -2526,13 +2526,26 @@ mod tests {
25262526 // and waits for the connection to be closed.
25272527 let server_task = tokio:: spawn (
25282528 async move {
2529+ let ( tx, mut rx) = mpsc:: channel ( 4 ) ;
2530+ let accept_task = tokio:: task:: spawn ( {
2531+ let server = server. clone ( ) ;
2532+ async move {
2533+ for i in 0 .. {
2534+ info ! ( "wait for connection {i}" ) ;
2535+ let incoming =
2536+ server. accept ( ) . await . context ( "server endpoint closed" ) ?;
2537+ let tx = tx. clone ( ) ;
2538+ tokio:: task:: spawn ( async move {
2539+ let conn = incoming. await ?;
2540+ tx. send ( conn) . await . ok ( ) ;
2541+ n0_error:: Ok ( ( ) )
2542+ } ) ;
2543+ }
2544+ n0_error:: Ok ( ( ) )
2545+ }
2546+ } ) ;
25292547 for i in 0 ..count {
2530- info ! ( "wait for connection {i}" ) ;
2531- let conn = server
2532- . accept ( )
2533- . await
2534- . context ( "server endpoint closed" ) ?
2535- . await ?;
2548+ let conn = rx. recv ( ) . await . context ( "sender dropped" ) ?;
25362549 info ! ( "accepted" ) ;
25372550 let mut s = conn. open_uni ( ) . await . anyerr ( ) ?;
25382551 s. write_all ( b"hi" ) . await . anyerr ( ) ?;
@@ -2541,6 +2554,7 @@ mod tests {
25412554 conn. closed ( ) . await ;
25422555 info ! ( "connection {i} complete" ) ;
25432556 }
2557+ accept_task. abort ( ) ;
25442558 server. close ( ) . await ;
25452559 n0_error:: Ok ( ( ) )
25462560 }
0 commit comments