Skip to content

Commit 84a0560

Browse files
committed
tests: additional unit test cases for lbp config
Added test cases for rack-awareness, and extended dc-awareness tests by empty and nullptr parameters checks.
1 parent 558decd commit 84a0560

File tree

1 file changed

+82
-14
lines changed

1 file changed

+82
-14
lines changed

scylla-rust-wrapper/src/cluster.rs

+82-14
Original file line numberDiff line numberDiff line change
@@ -899,12 +899,7 @@ mod tests {
899899
{
900900
cass_cluster_set_token_aware_routing(cluster_raw, 0);
901901
assert_cass_error_eq!(
902-
cass_cluster_set_load_balance_dc_aware(
903-
cluster_raw,
904-
"eu\0".as_ptr() as *const i8,
905-
0,
906-
0
907-
),
902+
cass_cluster_set_load_balance_dc_aware(cluster_raw, c"eu".as_ptr(), 0, 0),
908903
CassError::CASS_OK
909904
);
910905
cass_cluster_set_latency_aware_routing(cluster_raw, 1);
@@ -929,25 +924,98 @@ mod tests {
929924
}
930925
assert!(!cluster.load_balancing_config.token_awareness_enabled);
931926
assert!(cluster.load_balancing_config.latency_awareness_enabled);
927+
928+
// set preferred rack+dc
929+
assert_cass_error_eq!(
930+
cass_cluster_set_load_balance_rack_aware(
931+
cluster_raw,
932+
c"eu-east".as_ptr(),
933+
c"rack1".as_ptr(),
934+
),
935+
CassError::CASS_OK
936+
);
937+
938+
let node_location_preference =
939+
&cluster.load_balancing_config.node_location_preference;
940+
match node_location_preference {
941+
NodeLocationPreference::DatacenterAndRack {
942+
local_dc,
943+
local_rack,
944+
} => {
945+
assert_eq!(local_dc, "eu-east");
946+
assert_eq!(local_rack, "rack1");
947+
}
948+
_ => panic!("Expected preferred dc and rack"),
949+
}
950+
951+
// set back to preferred dc
952+
assert_cass_error_eq!(
953+
cass_cluster_set_load_balance_dc_aware(cluster_raw, c"eu".as_ptr(), 0, 0),
954+
CassError::CASS_OK
955+
);
956+
957+
let node_location_preference =
958+
&cluster.load_balancing_config.node_location_preference;
959+
match node_location_preference {
960+
NodeLocationPreference::Datacenter { local_dc } => {
961+
assert_eq!(local_dc, "eu")
962+
}
963+
_ => panic!("Expected preferred dc"),
964+
}
932965
}
933966
/* Test invalid configurations */
934967
{
935968
// Nonzero deprecated parameters
936969
assert_cass_error_eq!(
937-
cass_cluster_set_load_balance_dc_aware(
970+
cass_cluster_set_load_balance_dc_aware(cluster_raw, c"eu".as_ptr(), 1, 0),
971+
CassError::CASS_ERROR_LIB_BAD_PARAMS
972+
);
973+
assert_cass_error_eq!(
974+
cass_cluster_set_load_balance_dc_aware(cluster_raw, c"eu".as_ptr(), 0, 1),
975+
CassError::CASS_ERROR_LIB_BAD_PARAMS
976+
);
977+
978+
// null pointers
979+
assert_cass_error_eq!(
980+
cass_cluster_set_load_balance_dc_aware(cluster_raw, std::ptr::null(), 0, 0),
981+
CassError::CASS_ERROR_LIB_BAD_PARAMS
982+
);
983+
assert_cass_error_eq!(
984+
cass_cluster_set_load_balance_rack_aware(
985+
cluster_raw,
986+
c"eu".as_ptr(),
987+
std::ptr::null(),
988+
),
989+
CassError::CASS_ERROR_LIB_BAD_PARAMS
990+
);
991+
assert_cass_error_eq!(
992+
cass_cluster_set_load_balance_rack_aware(
993+
cluster_raw,
994+
std::ptr::null(),
995+
c"rack".as_ptr(),
996+
),
997+
CassError::CASS_ERROR_LIB_BAD_PARAMS
998+
);
999+
1000+
// empty strings
1001+
let empty_str = "\0".as_ptr() as *const i8;
1002+
assert_cass_error_eq!(
1003+
cass_cluster_set_load_balance_dc_aware(cluster_raw, std::ptr::null(), 0, 0),
1004+
CassError::CASS_ERROR_LIB_BAD_PARAMS
1005+
);
1006+
assert_cass_error_eq!(
1007+
cass_cluster_set_load_balance_rack_aware(
9381008
cluster_raw,
939-
"eu\0".as_ptr() as *const i8,
940-
1,
941-
0
1009+
c"eu".as_ptr(),
1010+
empty_str,
9421011
),
9431012
CassError::CASS_ERROR_LIB_BAD_PARAMS
9441013
);
9451014
assert_cass_error_eq!(
946-
cass_cluster_set_load_balance_dc_aware(
1015+
cass_cluster_set_load_balance_rack_aware(
9471016
cluster_raw,
948-
"eu\0".as_ptr() as *const i8,
949-
0,
950-
1
1017+
empty_str,
1018+
c"rack".as_ptr(),
9511019
),
9521020
CassError::CASS_ERROR_LIB_BAD_PARAMS
9531021
);

0 commit comments

Comments
 (0)