@@ -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