@@ -590,10 +590,98 @@ async fn raw_write_million() -> Result<()> {
590
590
assert_eq ! ( res. len( ) , 2usize . pow( NUM_BITS_KEY_PER_TXN ) ) ;
591
591
}
592
592
593
- // test scan
594
- let limit = 10 ;
595
- let res = client. scan ( vec ! [ ] .., limit) . await ?;
596
- assert_eq ! ( res. len( ) , limit as usize ) ;
593
+ // test scan, key range from [0,0,0,0] to [255.0.0.0]
594
+ let mut limit = 2000 ;
595
+ let mut r = client. scan ( .., limit) . await ?;
596
+ assert_eq ! ( r. len( ) , 256 ) ;
597
+ for ( i, val) in r. iter ( ) . enumerate ( ) {
598
+ let k: Vec < u8 > = val. 0 . clone ( ) . into ( ) ;
599
+ assert_eq ! ( k[ 0 ] , i as u8 ) ;
600
+ }
601
+ r = client. scan ( vec ! [ 100 , 0 , 0 , 0 ] .., limit) . await ?;
602
+ assert_eq ! ( r. len( ) , 156 ) ;
603
+ for ( i, val) in r. iter ( ) . enumerate ( ) {
604
+ let k: Vec < u8 > = val. 0 . clone ( ) . into ( ) ;
605
+ assert_eq ! ( k[ 0 ] , i as u8 + 100 ) ;
606
+ }
607
+ r = client
608
+ . scan ( vec ! [ 5 , 0 , 0 , 0 ] ..vec ! [ 200 , 0 , 0 , 0 ] , limit)
609
+ . await ?;
610
+ assert_eq ! ( r. len( ) , 195 ) ;
611
+ for ( i, val) in r. iter ( ) . enumerate ( ) {
612
+ let k: Vec < u8 > = val. 0 . clone ( ) . into ( ) ;
613
+ assert_eq ! ( k[ 0 ] , i as u8 + 5 ) ;
614
+ }
615
+ r = client
616
+ . scan ( vec ! [ 5 , 0 , 0 , 0 ] ..=vec ! [ 200 , 0 , 0 , 0 ] , limit)
617
+ . await ?;
618
+ assert_eq ! ( r. len( ) , 196 ) ;
619
+ for ( i, val) in r. iter ( ) . enumerate ( ) {
620
+ let k: Vec < u8 > = val. 0 . clone ( ) . into ( ) ;
621
+ assert_eq ! ( k[ 0 ] , i as u8 + 5 ) ;
622
+ }
623
+ r = client
624
+ . scan ( vec ! [ 5 , 0 , 0 , 0 ] ..=vec ! [ 255 , 10 , 0 , 0 ] , limit)
625
+ . await ?;
626
+ assert_eq ! ( r. len( ) , 251 ) ;
627
+ for ( i, val) in r. iter ( ) . enumerate ( ) {
628
+ let k: Vec < u8 > = val. 0 . clone ( ) . into ( ) ;
629
+ assert_eq ! ( k[ 0 ] , i as u8 + 5 ) ;
630
+ }
631
+ r = client
632
+ . scan ( vec ! [ 255 , 1 , 0 , 0 ] ..=vec ! [ 255 , 10 , 0 , 0 ] , limit)
633
+ . await ?;
634
+ assert_eq ! ( r. len( ) , 0 ) ;
635
+ r = client. scan ( ..vec ! [ 0 , 0 , 0 , 0 ] , limit) . await ?;
636
+ assert_eq ! ( r. len( ) , 0 ) ;
637
+
638
+ limit = 3 ;
639
+ let mut r = client. scan ( .., limit) . await ?;
640
+ assert_eq ! ( r. len( ) , limit as usize ) ;
641
+ for ( i, val) in r. iter ( ) . enumerate ( ) {
642
+ let k: Vec < u8 > = val. 0 . clone ( ) . into ( ) ;
643
+ assert_eq ! ( k[ 0 ] , i as u8 ) ;
644
+ }
645
+ r = client. scan ( vec ! [ 100 , 0 , 0 , 0 ] .., limit) . await ?;
646
+ assert_eq ! ( r. len( ) , limit as usize ) ;
647
+ for ( i, val) in r. iter ( ) . enumerate ( ) {
648
+ let k: Vec < u8 > = val. 0 . clone ( ) . into ( ) ;
649
+ assert_eq ! ( k[ 0 ] , i as u8 + 100 ) ;
650
+ }
651
+ r = client
652
+ . scan ( vec ! [ 5 , 0 , 0 , 0 ] ..vec ! [ 200 , 0 , 0 , 0 ] , limit)
653
+ . await ?;
654
+ assert_eq ! ( r. len( ) , limit as usize ) ;
655
+ for ( i, val) in r. iter ( ) . enumerate ( ) {
656
+ let k: Vec < u8 > = val. 0 . clone ( ) . into ( ) ;
657
+ assert_eq ! ( k[ 0 ] , i as u8 + 5 ) ;
658
+ }
659
+ r = client
660
+ . scan ( vec ! [ 5 , 0 , 0 , 0 ] ..=vec ! [ 200 , 0 , 0 , 0 ] , limit)
661
+ . await ?;
662
+ assert_eq ! ( r. len( ) , limit as usize ) ;
663
+ for ( i, val) in r. iter ( ) . enumerate ( ) {
664
+ let k: Vec < u8 > = val. 0 . clone ( ) . into ( ) ;
665
+ assert_eq ! ( k[ 0 ] , i as u8 + 5 ) ;
666
+ }
667
+ r = client
668
+ . scan ( vec ! [ 5 , 0 , 0 , 0 ] ..=vec ! [ 255 , 10 , 0 , 0 ] , limit)
669
+ . await ?;
670
+ assert_eq ! ( r. len( ) , limit as usize ) ;
671
+ for ( i, val) in r. iter ( ) . enumerate ( ) {
672
+ let k: Vec < u8 > = val. 0 . clone ( ) . into ( ) ;
673
+ assert_eq ! ( k[ 0 ] , i as u8 + 5 ) ;
674
+ }
675
+ r = client
676
+ . scan ( vec ! [ 255 , 1 , 0 , 0 ] ..=vec ! [ 255 , 10 , 0 , 0 ] , limit)
677
+ . await ?;
678
+ assert_eq ! ( r. len( ) , 0 ) ;
679
+ r = client. scan ( ..vec ! [ 0 , 0 , 0 , 0 ] , limit) . await ?;
680
+ assert_eq ! ( r. len( ) , 0 ) ;
681
+
682
+ limit = 0 ;
683
+ r = client. scan ( .., limit) . await ?;
684
+ assert_eq ! ( r. len( ) , limit as usize ) ;
597
685
598
686
// test batch_scan
599
687
for batch_num in 1 ..4 {
0 commit comments