85
85
run_fut ( run_test ( builder, Self :: last_membership_in_log_multi_step) ) ?;
86
86
run_fut ( run_test ( builder, Self :: get_membership_initial) ) ?;
87
87
run_fut ( run_test ( builder, Self :: get_membership_from_log_and_empty_sm) ) ?;
88
- run_fut ( run_test ( builder, Self :: get_membership_from_log_and_sm) ) ?;
88
+ run_fut ( run_test ( builder, Self :: get_membership_from_empty_log_and_sm) ) ?;
89
+ run_fut ( run_test ( builder, Self :: get_membership_from_log_le_sm_last_applied) ) ?;
90
+ run_fut ( run_test ( builder, Self :: get_membership_from_log_gt_sm_last_applied_1) ) ?;
91
+ run_fut ( run_test ( builder, Self :: get_membership_from_log_gt_sm_last_applied_2) ) ?;
89
92
run_fut ( run_test ( builder, Self :: get_initial_state_without_init) ) ?;
90
93
run_fut ( run_test ( builder, Self :: get_initial_state_membership_from_log_and_sm) ) ?;
91
94
run_fut ( run_test ( builder, Self :: get_initial_state_with_state) ) ?;
@@ -259,7 +262,10 @@ where
259
262
Ok ( ( ) )
260
263
}
261
264
262
- pub async fn get_membership_from_log_and_sm ( mut store : LS , mut sm : SM ) -> Result < ( ) , StorageError < C :: NodeId > > {
265
+ pub async fn get_membership_from_empty_log_and_sm (
266
+ mut store : LS ,
267
+ mut sm : SM ,
268
+ ) -> Result < ( ) , StorageError < C :: NodeId > > {
263
269
tracing:: info!( "--- no log, read membership from state machine" ) ;
264
270
{
265
271
apply ( & mut sm, [
@@ -279,10 +285,31 @@ where
279
285
mem_state. effective( ) . membership( ) ,
280
286
) ;
281
287
}
288
+ Ok ( ( ) )
289
+ }
282
290
291
+ pub async fn get_membership_from_log_le_sm_last_applied (
292
+ mut store : LS ,
293
+ mut sm : SM ,
294
+ ) -> Result < ( ) , StorageError < C :: NodeId > > {
283
295
tracing:: info!( "--- membership presents in log, but smaller than last_applied, read from state machine" ) ;
284
296
{
285
- append ( & mut store, [ membership_ent_0 :: < C > ( 1 , 1 , btreeset ! { 1 , 2 , 3 } ) ] ) . await ?;
297
+ apply ( & mut sm, [
298
+ blank_ent_0 :: < C > ( 1 , 1 ) ,
299
+ membership_ent_0 :: < C > ( 1 , 2 , btreeset ! { 3 , 4 , 5 } ) ,
300
+ blank_ent_0 :: < C > ( 1 , 3 ) ,
301
+ blank_ent_0 :: < C > ( 1 , 4 ) ,
302
+ ] )
303
+ . await ?;
304
+
305
+ // Intentionally append a membership entry that does not match the state machine,
306
+ // in order to see which membership is loaded.
307
+ append ( & mut store, [
308
+ blank_ent_0 :: < C > ( 1 , 1 ) ,
309
+ blank_ent_0 :: < C > ( 1 , 2 ) ,
310
+ membership_ent_0 :: < C > ( 1 , 3 , btreeset ! { 1 , 2 , 3 } ) ,
311
+ ] )
312
+ . await ?;
286
313
287
314
let mem_state = StorageHelper :: new ( & mut store, & mut sm) . get_membership ( ) . await ?;
288
315
@@ -295,10 +322,23 @@ where
295
322
mem_state. effective( ) . membership( ) ,
296
323
) ;
297
324
}
325
+ Ok ( ( ) )
326
+ }
298
327
328
+ pub async fn get_membership_from_log_gt_sm_last_applied_1 (
329
+ mut store : LS ,
330
+ mut sm : SM ,
331
+ ) -> Result < ( ) , StorageError < C :: NodeId > > {
299
332
tracing:: info!( "--- membership presents in log and > sm.last_applied, read from log" ) ;
300
333
{
334
+ apply ( & mut sm, [
335
+ blank_ent_0 :: < C > ( 1 , 1 ) ,
336
+ membership_ent_0 :: < C > ( 1 , 2 , btreeset ! { 3 , 4 , 5 } ) ,
337
+ ] )
338
+ . await ?;
339
+
301
340
append ( & mut store, [
341
+ membership_ent_0 :: < C > ( 1 , 1 , btreeset ! { 1 , 2 , 3 } ) ,
302
342
blank_ent_0 :: < C > ( 1 , 2 ) ,
303
343
membership_ent_0 :: < C > ( 1 , 3 , btreeset ! { 7 , 8 , 9 } ) ,
304
344
] )
@@ -315,10 +355,25 @@ where
315
355
mem_state. effective( ) . membership( ) ,
316
356
) ;
317
357
}
358
+ Ok ( ( ) )
359
+ }
318
360
361
+ pub async fn get_membership_from_log_gt_sm_last_applied_2 (
362
+ mut store : LS ,
363
+ mut sm : SM ,
364
+ ) -> Result < ( ) , StorageError < C :: NodeId > > {
319
365
tracing:: info!( "--- two membership present in log and > sm.last_applied, read 2 from log" ) ;
320
366
{
367
+ apply ( & mut sm, [
368
+ blank_ent_0 :: < C > ( 1 , 1 ) ,
369
+ membership_ent_0 :: < C > ( 1 , 2 , btreeset ! { 3 , 4 , 5 } ) ,
370
+ ] )
371
+ . await ?;
372
+
321
373
append ( & mut store, [
374
+ membership_ent_0 :: < C > ( 1 , 1 , btreeset ! { 1 , 2 , 3 } ) ,
375
+ blank_ent_0 :: < C > ( 1 , 2 ) ,
376
+ membership_ent_0 :: < C > ( 1 , 3 , btreeset ! { 7 , 8 , 9 } ) ,
322
377
blank_ent_0 :: < C > ( 1 , 4 ) ,
323
378
membership_ent_0 :: < C > ( 1 , 5 , btreeset ! { 10 , 11 } ) ,
324
379
] )
0 commit comments