@@ -497,11 +497,15 @@ mod test {
497497    async  fn  test_get_region_by_key ( )  -> Result < ( ) >  { 
498498        let  retry_client = Arc :: new ( MockRetryClient :: default ( ) ) ; 
499499        let  cache = RegionCache :: new ( retry_client. clone ( ) ) ; 
500+         let  leader = Some ( metapb:: Peer  { 
501+             store_id :  1 , 
502+             ..Default :: default ( ) 
503+         } ) ; 
500504
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 ( ) ) ; 
503507        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 ( ) ) ; 
505509        cache. add_region ( region1. clone ( ) ) . await ; 
506510        cache. add_region ( region2. clone ( ) ) . await ; 
507511        cache. add_region ( region3. clone ( ) ) . await ; 
@@ -521,6 +525,8 @@ mod test {
521525        ) ; 
522526        assert ! ( cache. get_region_by_key( & vec![ 20 ] . into( ) ) . await . is_err( ) ) ; 
523527        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( ) ) ; 
524530        assert_eq ! ( cache. get_region_by_key( & vec![ 60 ] . into( ) ) . await ?,  region4) ; 
525531        Ok ( ( ) ) 
526532    } 
@@ -557,6 +563,26 @@ mod test {
557563        region
558564    } 
559565
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+ 
560586    #[ test]  
561587    fn  test_is_valid_tikv_store ( )  { 
562588        let  mut  store = metapb:: Store :: default ( ) ; 
0 commit comments