@@ -929,6 +929,49 @@ mod tests {
929929 }
930930 assert ! ( !cluster. load_balancing_config. token_awareness_enabled) ;
931931 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+ }
932975 }
933976 /* Test invalid configurations */
934977 {
@@ -951,6 +994,51 @@ mod tests {
951994 ) ,
952995 CassError :: CASS_ERROR_LIB_BAD_PARAMS
953996 ) ;
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+ ) ;
9541042 }
9551043 }
9561044
0 commit comments