@@ -886,11 +886,13 @@ mod tests {
886
886
let cluster = ptr_to_ref ( cluster_raw) ;
887
887
{
888
888
assert_matches ! ( cluster. load_balancing_config. dc_awareness, None ) ;
889
+ assert_matches ! ( cluster. load_balancing_config. rack_awareness, None ) ;
889
890
assert ! ( cluster. load_balancing_config. token_awareness_enabled) ;
890
891
assert ! ( !cluster. load_balancing_config. latency_awareness_enabled) ;
891
892
}
892
893
{
893
894
cass_cluster_set_token_aware_routing ( cluster_raw, 0 ) ;
895
+ // Just for the test purposes we enable both dc and rack+dc awareness.
894
896
assert_cass_error_eq ! (
895
897
cass_cluster_set_load_balance_dc_aware(
896
898
cluster_raw,
@@ -900,6 +902,14 @@ mod tests {
900
902
) ,
901
903
CassError :: CASS_OK
902
904
) ;
905
+ assert_cass_error_eq ! (
906
+ cass_cluster_set_load_balance_rack_aware(
907
+ cluster_raw,
908
+ "eu-east\0 " . as_ptr( ) as * const i8 ,
909
+ "rack1\0 " . as_ptr( ) as * const i8 ,
910
+ ) ,
911
+ CassError :: CASS_OK
912
+ ) ;
903
913
cass_cluster_set_latency_aware_routing ( cluster_raw, 1 ) ;
904
914
// These values cannot currently be tested to be set properly in the latency awareness builder,
905
915
// but at least we test that the function completed successfully.
@@ -914,6 +924,13 @@ mod tests {
914
924
915
925
let dc_awareness = cluster. load_balancing_config . dc_awareness . as_ref ( ) . unwrap ( ) ;
916
926
assert_eq ! ( dc_awareness. local_dc, "eu" ) ;
927
+ let rack_awareness = cluster
928
+ . load_balancing_config
929
+ . rack_awareness
930
+ . as_ref ( )
931
+ . unwrap ( ) ;
932
+ assert_eq ! ( rack_awareness. local_dc, "eu-east" ) ;
933
+ assert_eq ! ( rack_awareness. local_rack, "rack1" ) ;
917
934
assert ! ( !cluster. load_balancing_config. token_awareness_enabled) ;
918
935
assert ! ( cluster. load_balancing_config. latency_awareness_enabled) ;
919
936
}
@@ -938,6 +955,51 @@ mod tests {
938
955
) ,
939
956
CassError :: CASS_ERROR_LIB_BAD_PARAMS
940
957
) ;
958
+
959
+ // null pointers
960
+ assert_cass_error_eq ! (
961
+ cass_cluster_set_load_balance_dc_aware( cluster_raw, std:: ptr:: null( ) , 0 , 0 ) ,
962
+ CassError :: CASS_ERROR_LIB_BAD_PARAMS
963
+ ) ;
964
+ assert_cass_error_eq ! (
965
+ cass_cluster_set_load_balance_rack_aware(
966
+ cluster_raw,
967
+ "eu\0 " . as_ptr( ) as * const i8 ,
968
+ std:: ptr:: null( ) ,
969
+ ) ,
970
+ CassError :: CASS_ERROR_LIB_BAD_PARAMS
971
+ ) ;
972
+ assert_cass_error_eq ! (
973
+ cass_cluster_set_load_balance_rack_aware(
974
+ cluster_raw,
975
+ std:: ptr:: null( ) ,
976
+ "rack\0 " . as_ptr( ) as * const i8 ,
977
+ ) ,
978
+ CassError :: CASS_ERROR_LIB_BAD_PARAMS
979
+ ) ;
980
+
981
+ // empty strings
982
+ let empty_str = "\0 " . as_ptr ( ) as * const i8 ;
983
+ assert_cass_error_eq ! (
984
+ cass_cluster_set_load_balance_dc_aware( cluster_raw, std:: ptr:: null( ) , 0 , 0 ) ,
985
+ CassError :: CASS_ERROR_LIB_BAD_PARAMS
986
+ ) ;
987
+ assert_cass_error_eq ! (
988
+ cass_cluster_set_load_balance_rack_aware(
989
+ cluster_raw,
990
+ "eu\0 " . as_ptr( ) as * const i8 ,
991
+ empty_str,
992
+ ) ,
993
+ CassError :: CASS_ERROR_LIB_BAD_PARAMS
994
+ ) ;
995
+ assert_cass_error_eq ! (
996
+ cass_cluster_set_load_balance_rack_aware(
997
+ cluster_raw,
998
+ empty_str,
999
+ "rack\0 " . as_ptr( ) as * const i8 ,
1000
+ ) ,
1001
+ CassError :: CASS_ERROR_LIB_BAD_PARAMS
1002
+ ) ;
941
1003
}
942
1004
}
943
1005
0 commit comments