@@ -491,8 +491,12 @@ impl kvapi::TestSuite {
491
491
let responses = & reply. responses ;
492
492
assert_eq ! ( responses. len( ) , expected. len( ) ) ;
493
493
494
+ let responses = normalize_txn_response ( responses. clone ( ) ) ;
495
+ let expected = normalize_txn_response ( expected. to_vec ( ) ) ;
496
+
494
497
for i in 0 ..responses. len ( ) {
495
498
let resp = & responses[ i] ;
499
+
496
500
let expect_resp = & expected[ i] ;
497
501
498
502
assert_eq ! ( resp, expect_resp, "{}-th response" , i) ;
@@ -521,6 +525,7 @@ impl kvapi::TestSuite {
521
525
response: Some ( txn_op_response:: Response :: Put ( TxnPutResponse {
522
526
key: txn_key. clone( ) ,
523
527
prev_value: None ,
528
+ current: Some ( pb:: SeqV :: new( 1 , b"new_v1" . to_vec( ) ) ) ,
524
529
} ) ) ,
525
530
} ] ;
526
531
@@ -659,6 +664,7 @@ impl kvapi::TestSuite {
659
664
response: Some ( txn_op_response:: Response :: Put ( TxnPutResponse {
660
665
key: txn_key. clone( ) ,
661
666
prev_value: Some ( pb:: SeqV :: from( SeqV :: new( 1 , val1. clone( ) ) ) ) ,
667
+ current: Some ( pb:: SeqV :: new( 2 , b( "new_v1" ) ) ) ,
662
668
} ) ) ,
663
669
} ] ;
664
670
@@ -766,14 +772,16 @@ impl kvapi::TestSuite {
766
772
TxnOpResponse {
767
773
response: Some ( txn_op_response:: Response :: Put ( TxnPutResponse {
768
774
key: txn_key1. clone( ) ,
769
- prev_value: Some ( pb:: SeqV :: from( SeqV :: new( 4 , val1. clone( ) ) ) ) ,
775
+ prev_value: Some ( pb:: SeqV :: new( 4 , val1. clone( ) ) ) ,
776
+ current: Some ( pb:: SeqV :: new( 6 , val1_new. clone( ) ) ) ,
770
777
} ) ) ,
771
778
} ,
772
779
// change k2
773
780
TxnOpResponse {
774
781
response: Some ( txn_op_response:: Response :: Put ( TxnPutResponse {
775
782
key: txn_key2. clone( ) ,
776
- prev_value: Some ( pb:: SeqV :: from( SeqV :: new( 5 , val2. clone( ) ) ) ) ,
783
+ prev_value: Some ( pb:: SeqV :: new( 5 , val2. clone( ) ) ) ,
784
+ current: Some ( pb:: SeqV :: new( 7 , b( "new_v2" ) . clone( ) ) ) ,
777
785
} ) ) ,
778
786
} ,
779
787
// get k1
@@ -813,35 +821,6 @@ impl kvapi::TestSuite {
813
821
814
822
// 4th case: get one key by value and set key transaction
815
823
{
816
- /// Convert Some(KvMeta{ expire: None }) to None to simplify the comparison
817
- fn norm ( vs : Vec < TxnOpResponse > ) -> Vec < TxnOpResponse > {
818
- vs. into_iter ( )
819
- . map ( |mut v| {
820
- //
821
- match & mut v. response {
822
- Some ( Response :: Get ( TxnGetResponse {
823
- value : Some ( pb:: SeqV { meta, .. } ) ,
824
- ..
825
- } ) ) => {
826
- if * meta == Some ( pb:: KvMeta { expire_at : None } ) {
827
- * meta = None ;
828
- }
829
- }
830
- Some ( Response :: Put ( TxnPutResponse {
831
- prev_value : Some ( pb:: SeqV { meta, .. } ) ,
832
- ..
833
- } ) ) => {
834
- if * meta == Some ( pb:: KvMeta { expire_at : None } ) {
835
- * meta = None ;
836
- }
837
- }
838
- _ => { }
839
- }
840
- v
841
- } )
842
- . collect ( )
843
- }
844
-
845
824
let k1 = "txn_4_K1" ;
846
825
847
826
kv. upsert_kv ( UpsertKV :: update ( k1, b"v1" ) ) . await ?;
@@ -872,12 +851,19 @@ impl kvapi::TestSuite {
872
851
let resp = kv. transaction ( txn) . await ?;
873
852
874
853
let expected: Vec < TxnOpResponse > = vec ! [
875
- TxnOpResponse :: put( k1, Some ( pb:: SeqV :: new( 8 , b( "v1" ) ) ) ) ,
854
+ TxnOpResponse :: put(
855
+ k1,
856
+ Some ( pb:: SeqV :: new( 8 , b( "v1" ) ) ) ,
857
+ Some ( pb:: SeqV :: new( 9 , b( "v2" ) ) ) ,
858
+ ) ,
876
859
TxnOpResponse :: get( k1, Some ( SeqV :: new( 9 , b( "v2" ) ) ) ) ,
877
860
] ;
878
861
879
862
assert_eq ! ( resp. success, true ) ;
880
- assert_eq ! ( norm( resp. responses) , norm( expected) ) ;
863
+ assert_eq ! (
864
+ normalize_txn_response( resp. responses) ,
865
+ normalize_txn_response( expected)
866
+ ) ;
881
867
882
868
// Test less than value: success = false
883
869
@@ -893,7 +879,10 @@ impl kvapi::TestSuite {
893
879
vec ! [ TxnOpResponse :: get( k1, Some ( SeqV :: new( 9 , b( "v2" ) ) ) ) ] ;
894
880
895
881
assert_eq ! ( resp. success, false ) ;
896
- assert_eq ! ( norm( resp. responses) , norm( expected) ) ;
882
+ assert_eq ! (
883
+ normalize_txn_response( resp. responses) ,
884
+ normalize_txn_response( expected)
885
+ ) ;
897
886
898
887
// Test less than value: success = true
899
888
@@ -906,12 +895,19 @@ impl kvapi::TestSuite {
906
895
let resp = kv. transaction ( txn) . await ?;
907
896
908
897
let expected: Vec < TxnOpResponse > = vec ! [
909
- TxnOpResponse :: put( k1, Some ( pb:: SeqV :: new( 9 , b( "v2" ) ) ) ) ,
898
+ TxnOpResponse :: put(
899
+ k1,
900
+ Some ( pb:: SeqV :: new( 9 , b( "v2" ) ) ) ,
901
+ Some ( pb:: SeqV :: new( 10 , b( "v3" ) ) ) ,
902
+ ) ,
910
903
TxnOpResponse :: get( k1, Some ( SeqV :: new( 10 , b( "v3" ) ) ) ) ,
911
904
] ;
912
905
913
906
assert_eq ! ( resp. success, true ) ;
914
- assert_eq ! ( norm( resp. responses) , norm( expected) ) ;
907
+ assert_eq ! (
908
+ normalize_txn_response( resp. responses) ,
909
+ normalize_txn_response( expected)
910
+ ) ;
915
911
916
912
// Test less equal value: success = false
917
913
@@ -927,7 +923,10 @@ impl kvapi::TestSuite {
927
923
vec ! [ TxnOpResponse :: get( k1, Some ( SeqV :: new( 10 , b( "v3" ) ) ) ) ] ;
928
924
929
925
assert_eq ! ( resp. success, false ) ;
930
- assert_eq ! ( norm( resp. responses) , norm( expected) ) ;
926
+ assert_eq ! (
927
+ normalize_txn_response( resp. responses) ,
928
+ normalize_txn_response( expected)
929
+ ) ;
931
930
932
931
// Test less equal value: success = true
933
932
@@ -940,12 +939,19 @@ impl kvapi::TestSuite {
940
939
let resp = kv. transaction ( txn) . await ?;
941
940
942
941
let expected: Vec < TxnOpResponse > = vec ! [
943
- TxnOpResponse :: put( k1, Some ( pb:: SeqV :: new( 10 , b( "v3" ) ) ) ) ,
942
+ TxnOpResponse :: put(
943
+ k1,
944
+ Some ( pb:: SeqV :: new( 10 , b( "v3" ) ) ) ,
945
+ Some ( pb:: SeqV :: new( 11 , b( "v4" ) ) ) ,
946
+ ) ,
944
947
TxnOpResponse :: get( k1, Some ( SeqV :: new( 11 , b( "v4" ) ) ) ) ,
945
948
] ;
946
949
947
950
assert_eq ! ( resp. success, true ) ;
948
- assert_eq ! ( norm( resp. responses) , norm( expected) ) ;
951
+ assert_eq ! (
952
+ normalize_txn_response( resp. responses) ,
953
+ normalize_txn_response( expected)
954
+ ) ;
949
955
950
956
// Test greater than value: success = false
951
957
@@ -961,7 +967,10 @@ impl kvapi::TestSuite {
961
967
vec ! [ TxnOpResponse :: get( k1, Some ( SeqV :: new( 11 , b( "v4" ) ) ) ) ] ;
962
968
963
969
assert_eq ! ( resp. success, false ) ;
964
- assert_eq ! ( norm( resp. responses) , norm( expected) ) ;
970
+ assert_eq ! (
971
+ normalize_txn_response( resp. responses) ,
972
+ normalize_txn_response( expected)
973
+ ) ;
965
974
966
975
// Test greater than value: success = true
967
976
@@ -974,12 +983,19 @@ impl kvapi::TestSuite {
974
983
let resp = kv. transaction ( txn) . await ?;
975
984
976
985
let expected: Vec < TxnOpResponse > = vec ! [
977
- TxnOpResponse :: put( k1, Some ( pb:: SeqV :: new( 11 , b( "v4" ) ) ) ) ,
986
+ TxnOpResponse :: put(
987
+ k1,
988
+ Some ( pb:: SeqV :: new( 11 , b( "v4" ) ) ) ,
989
+ Some ( pb:: SeqV :: new( 12 , b( "v5" ) ) ) ,
990
+ ) ,
978
991
TxnOpResponse :: get( k1, Some ( SeqV :: new( 12 , b( "v5" ) ) ) ) ,
979
992
] ;
980
993
981
994
assert_eq ! ( resp. success, true ) ;
982
- assert_eq ! ( norm( resp. responses) , norm( expected) ) ;
995
+ assert_eq ! (
996
+ normalize_txn_response( resp. responses) ,
997
+ normalize_txn_response( expected)
998
+ ) ;
983
999
984
1000
// Test greater equal value: success = false
985
1001
@@ -995,7 +1011,10 @@ impl kvapi::TestSuite {
995
1011
vec ! [ TxnOpResponse :: get( k1, Some ( SeqV :: new( 12 , b( "v5" ) ) ) ) ] ;
996
1012
997
1013
assert_eq ! ( resp. success, false ) ;
998
- assert_eq ! ( norm( resp. responses) , norm( expected) ) ;
1014
+ assert_eq ! (
1015
+ normalize_txn_response( resp. responses) ,
1016
+ normalize_txn_response( expected)
1017
+ ) ;
999
1018
1000
1019
// Test greater equal value: success = true
1001
1020
@@ -1008,12 +1027,19 @@ impl kvapi::TestSuite {
1008
1027
let resp = kv. transaction ( txn) . await ?;
1009
1028
1010
1029
let expected: Vec < TxnOpResponse > = vec ! [
1011
- TxnOpResponse :: put( k1, Some ( pb:: SeqV :: new( 12 , b( "v5" ) ) ) ) ,
1030
+ TxnOpResponse :: put(
1031
+ k1,
1032
+ Some ( pb:: SeqV :: new( 12 , b( "v5" ) ) ) ,
1033
+ Some ( pb:: SeqV :: new( 13 , b( "v6" ) ) ) ,
1034
+ ) ,
1012
1035
TxnOpResponse :: get( k1, Some ( SeqV :: new( 13 , b( "v6" ) ) ) ) ,
1013
1036
] ;
1014
1037
1015
1038
assert_eq ! ( resp. success, true ) ;
1016
- assert_eq ! ( norm( resp. responses) , norm( expected) ) ;
1039
+ assert_eq ! (
1040
+ normalize_txn_response( resp. responses) ,
1041
+ normalize_txn_response( expected)
1042
+ ) ;
1017
1043
}
1018
1044
Ok ( ( ) )
1019
1045
}
@@ -1410,6 +1436,48 @@ impl kvapi::TestSuite {
1410
1436
}
1411
1437
}
1412
1438
1439
+ /// Convert Some(KvMeta{ expire: None }) to None to simplify the comparison
1440
+ fn normalize_txn_response ( vs : Vec < TxnOpResponse > ) -> Vec < TxnOpResponse > {
1441
+ vs. into_iter ( )
1442
+ . map ( |mut v| {
1443
+ //
1444
+ match & mut v. response {
1445
+ Some ( Response :: Get ( TxnGetResponse {
1446
+ value : Some ( pb:: SeqV { meta, .. } ) ,
1447
+ ..
1448
+ } ) ) => {
1449
+ if * meta == Some ( pb:: KvMeta { expire_at : None } ) {
1450
+ * meta = None ;
1451
+ }
1452
+ }
1453
+ Some ( Response :: Put ( TxnPutResponse {
1454
+ prev_value : Some ( pb:: SeqV { meta, .. } ) ,
1455
+ ..
1456
+ } ) ) => {
1457
+ if * meta == Some ( pb:: KvMeta { expire_at : None } ) {
1458
+ * meta = None ;
1459
+ }
1460
+ }
1461
+ _ => { }
1462
+ }
1463
+
1464
+ match & mut v. response {
1465
+ Some ( Response :: Put ( TxnPutResponse {
1466
+ current : Some ( pb:: SeqV { meta, .. } ) ,
1467
+ ..
1468
+ } ) ) => {
1469
+ if * meta == Some ( pb:: KvMeta { expire_at : None } ) {
1470
+ * meta = None ;
1471
+ }
1472
+ }
1473
+ _ => { }
1474
+ }
1475
+
1476
+ v
1477
+ } )
1478
+ . collect ( )
1479
+ }
1480
+
1413
1481
fn b ( x : impl ToString ) -> Vec < u8 > {
1414
1482
x. to_string ( ) . as_bytes ( ) . to_vec ( )
1415
1483
}
0 commit comments