@@ -929,6 +929,49 @@ mod tests {
929
929
}
930
930
assert ! ( !cluster. load_balancing_config. token_awareness_enabled) ;
931
931
assert ! ( cluster. load_balancing_config. latency_awareness_enabled) ;
932
+
933
+ // set preferred rack+dc
934
+ assert_cass_error_eq ! (
935
+ cass_cluster_set_load_balance_rack_aware(
936
+ cluster_raw,
937
+ "eu-east\0 " . as_ptr( ) as * const i8 ,
938
+ "rack1\0 " . as_ptr( ) as * const i8 ,
939
+ ) ,
940
+ CassError :: CASS_OK
941
+ ) ;
942
+
943
+ let node_location_preference =
944
+ & cluster. load_balancing_config . node_location_preference ;
945
+ match node_location_preference {
946
+ NodeLocationPreference :: DatacenterAndRack {
947
+ local_dc,
948
+ local_rack,
949
+ } => {
950
+ assert_eq ! ( local_dc, "eu-east" ) ;
951
+ assert_eq ! ( local_rack, "rack1" ) ;
952
+ }
953
+ _ => panic ! ( "Expected preferred dc and rack" ) ,
954
+ }
955
+
956
+ // set back to preferred dc
957
+ assert_cass_error_eq ! (
958
+ cass_cluster_set_load_balance_dc_aware(
959
+ cluster_raw,
960
+ "eu\0 " . as_ptr( ) as * const i8 ,
961
+ 0 ,
962
+ 0
963
+ ) ,
964
+ CassError :: CASS_OK
965
+ ) ;
966
+
967
+ let node_location_preference =
968
+ & cluster. load_balancing_config . node_location_preference ;
969
+ match node_location_preference {
970
+ NodeLocationPreference :: Datacenter { local_dc } => {
971
+ assert_eq ! ( local_dc, "eu" )
972
+ }
973
+ _ => panic ! ( "Expected preferred dc" ) ,
974
+ }
932
975
}
933
976
/* Test invalid configurations */
934
977
{
@@ -951,6 +994,51 @@ mod tests {
951
994
) ,
952
995
CassError :: CASS_ERROR_LIB_BAD_PARAMS
953
996
) ;
997
+
998
+ // null pointers
999
+ assert_cass_error_eq ! (
1000
+ cass_cluster_set_load_balance_dc_aware( cluster_raw, std:: ptr:: null( ) , 0 , 0 ) ,
1001
+ CassError :: CASS_ERROR_LIB_BAD_PARAMS
1002
+ ) ;
1003
+ assert_cass_error_eq ! (
1004
+ cass_cluster_set_load_balance_rack_aware(
1005
+ cluster_raw,
1006
+ "eu\0 " . as_ptr( ) as * const i8 ,
1007
+ std:: ptr:: null( ) ,
1008
+ ) ,
1009
+ CassError :: CASS_ERROR_LIB_BAD_PARAMS
1010
+ ) ;
1011
+ assert_cass_error_eq ! (
1012
+ cass_cluster_set_load_balance_rack_aware(
1013
+ cluster_raw,
1014
+ std:: ptr:: null( ) ,
1015
+ "rack\0 " . as_ptr( ) as * const i8 ,
1016
+ ) ,
1017
+ CassError :: CASS_ERROR_LIB_BAD_PARAMS
1018
+ ) ;
1019
+
1020
+ // empty strings
1021
+ let empty_str = "\0 " . as_ptr ( ) as * const i8 ;
1022
+ assert_cass_error_eq ! (
1023
+ cass_cluster_set_load_balance_dc_aware( cluster_raw, std:: ptr:: null( ) , 0 , 0 ) ,
1024
+ CassError :: CASS_ERROR_LIB_BAD_PARAMS
1025
+ ) ;
1026
+ assert_cass_error_eq ! (
1027
+ cass_cluster_set_load_balance_rack_aware(
1028
+ cluster_raw,
1029
+ "eu\0 " . as_ptr( ) as * const i8 ,
1030
+ empty_str,
1031
+ ) ,
1032
+ CassError :: CASS_ERROR_LIB_BAD_PARAMS
1033
+ ) ;
1034
+ assert_cass_error_eq ! (
1035
+ cass_cluster_set_load_balance_rack_aware(
1036
+ cluster_raw,
1037
+ empty_str,
1038
+ "rack\0 " . as_ptr( ) as * const i8 ,
1039
+ ) ,
1040
+ CassError :: CASS_ERROR_LIB_BAD_PARAMS
1041
+ ) ;
954
1042
}
955
1043
}
956
1044
0 commit comments