@@ -497,11 +497,15 @@ mod test {
497
497
async fn test_get_region_by_key ( ) -> Result < ( ) > {
498
498
let retry_client = Arc :: new ( MockRetryClient :: default ( ) ) ;
499
499
let cache = RegionCache :: new ( retry_client. clone ( ) ) ;
500
+ let leader = Some ( metapb:: Peer {
501
+ store_id : 1 ,
502
+ ..Default :: default ( )
503
+ } ) ;
500
504
501
- let region1 = region ( 1 , vec ! [ ] , vec ! [ 10 ] ) ;
502
- let region2 = region ( 2 , vec ! [ 10 ] , vec ! [ 20 ] ) ;
505
+ let region1 = region_with_leader ( 1 , vec ! [ ] , vec ! [ 10 ] , leader . clone ( ) ) ;
506
+ let region2 = region_with_leader ( 2 , vec ! [ 10 ] , vec ! [ 20 ] , leader . clone ( ) ) ;
503
507
let region3 = region ( 3 , vec ! [ 30 ] , vec ! [ 40 ] ) ;
504
- let region4 = region ( 4 , vec ! [ 50 ] , vec ! [ ] ) ;
508
+ let region4 = region_with_leader ( 4 , vec ! [ 50 ] , vec ! [ ] , leader . clone ( ) ) ;
505
509
cache. add_region ( region1. clone ( ) ) . await ;
506
510
cache. add_region ( region2. clone ( ) ) . await ;
507
511
cache. add_region ( region3. clone ( ) ) . await ;
@@ -521,6 +525,8 @@ mod test {
521
525
) ;
522
526
assert ! ( cache. get_region_by_key( & vec![ 20 ] . into( ) ) . await . is_err( ) ) ;
523
527
assert ! ( cache. get_region_by_key( & vec![ 25 ] . into( ) ) . await . is_err( ) ) ;
528
+ // region3 in cache has no leader, the cache is invalid.
529
+ assert ! ( cache. get_region_by_key( & vec![ 35 ] . into( ) ) . await . is_err( ) ) ;
524
530
assert_eq ! ( cache. get_region_by_key( & vec![ 60 ] . into( ) ) . await ?, region4) ;
525
531
Ok ( ( ) )
526
532
}
@@ -557,6 +563,26 @@ mod test {
557
563
region
558
564
}
559
565
566
+ fn region_with_leader (
567
+ id : RegionId ,
568
+ start_key : Vec < u8 > ,
569
+ end_key : Vec < u8 > ,
570
+ leader : Option < metapb:: Peer > ,
571
+ ) -> RegionWithLeader {
572
+ let mut region = RegionWithLeader :: default ( ) ;
573
+ region. region . id = id;
574
+ region. region . start_key = start_key;
575
+ region. region . end_key = end_key;
576
+ region. region . region_epoch = Some ( RegionEpoch {
577
+ conf_ver : 0 ,
578
+ version : 0 ,
579
+ } ) ;
580
+ // We don't care about other fields here
581
+
582
+ region. leader = leader;
583
+ region
584
+ }
585
+
560
586
#[ test]
561
587
fn test_is_valid_tikv_store ( ) {
562
588
let mut store = metapb:: Store :: default ( ) ;
0 commit comments