@@ -10,6 +10,7 @@ use crate::core::ServerState;
10
10
use crate :: log_id:: LogIdOptionExt ;
11
11
use crate :: metrics:: Wait ;
12
12
use crate :: metrics:: WaitError ;
13
+ use crate :: testing:: log_id;
13
14
use crate :: vote:: CommittedLeaderId ;
14
15
use crate :: LogId ;
15
16
use crate :: Membership ;
@@ -170,6 +171,24 @@ async fn test_wait() -> anyhow::Result<()> {
170
171
Ok ( ( ) )
171
172
}
172
173
174
+ #[ tokio:: test( flavor = "multi_thread" , worker_threads = 8 ) ]
175
+ async fn test_wait_purged ( ) -> anyhow:: Result < ( ) > {
176
+ let ( init, w, tx) = init_wait_test :: < u64 , ( ) > ( ) ;
177
+
178
+ let h = tokio:: spawn ( async move {
179
+ sleep ( Duration :: from_millis ( 10 ) ) . await ;
180
+ let mut update = init. clone ( ) ;
181
+ update. purged = Some ( log_id ( 1 , 2 , 3 ) ) ;
182
+ let rst = tx. send ( update) ;
183
+ assert ! ( rst. is_ok( ) ) ;
184
+ } ) ;
185
+ let got = w. purged ( Some ( log_id ( 1 , 2 , 3 ) ) , "purged" ) . await ?;
186
+ h. await ?;
187
+ assert_eq ! ( Some ( log_id( 1 , 2 , 3 ) ) , got. purged) ;
188
+
189
+ Ok ( ( ) )
190
+ }
191
+
173
192
pub ( crate ) type InitResult < NID , N > = ( RaftMetrics < NID , N > , Wait < NID , N > , watch:: Sender < RaftMetrics < NID , N > > ) ;
174
193
175
194
/// Build a initial state for testing of Wait:
0 commit comments