@@ -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