Skip to content

Commit 450db40

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 fd1aa4d commit 450db40

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
@@ -972,12 +972,7 @@ mod tests {
972972
{
973973
cass_cluster_set_token_aware_routing(cluster_raw, 0);
974974
assert_cass_error_eq!(
975-
cass_cluster_set_load_balance_dc_aware(
976-
cluster_raw,
977-
"eu\0".as_ptr() as *const i8,
978-
0,
979-
0
980-
),
975+
cass_cluster_set_load_balance_dc_aware(cluster_raw, c"eu".as_ptr(), 0, 0),
981976
CassError::CASS_OK
982977
);
983978
cass_cluster_set_latency_aware_routing(cluster_raw, 1);
@@ -1001,25 +996,98 @@ mod tests {
1001996
}
1002997
assert!(!cluster.load_balancing_config.token_awareness_enabled);
1003998
assert!(cluster.load_balancing_config.latency_awareness_enabled);
999+
1000+
// set preferred rack+dc
1001+
assert_cass_error_eq!(
1002+
cass_cluster_set_load_balance_rack_aware(
1003+
cluster_raw,
1004+
c"eu-east".as_ptr(),
1005+
c"rack1".as_ptr(),
1006+
),
1007+
CassError::CASS_OK
1008+
);
1009+
1010+
let node_location_preference =
1011+
&cluster.load_balancing_config.load_balancing_kind;
1012+
match node_location_preference {
1013+
Some(LoadBalancingKind::RackAware {
1014+
local_dc,
1015+
local_rack,
1016+
}) => {
1017+
assert_eq!(local_dc, "eu-east");
1018+
assert_eq!(local_rack, "rack1");
1019+
}
1020+
_ => panic!("Expected preferred dc and rack"),
1021+
}
1022+
1023+
// set back to preferred dc
1024+
assert_cass_error_eq!(
1025+
cass_cluster_set_load_balance_dc_aware(cluster_raw, c"eu".as_ptr(), 0, 0),
1026+
CassError::CASS_OK
1027+
);
1028+
1029+
let node_location_preference =
1030+
&cluster.load_balancing_config.load_balancing_kind;
1031+
match node_location_preference {
1032+
Some(LoadBalancingKind::DcAware { local_dc }) => {
1033+
assert_eq!(local_dc, "eu")
1034+
}
1035+
_ => panic!("Expected preferred dc"),
1036+
}
10041037
}
10051038
/* Test invalid configurations */
10061039
{
10071040
// Nonzero deprecated parameters
10081041
assert_cass_error_eq!(
1009-
cass_cluster_set_load_balance_dc_aware(
1042+
cass_cluster_set_load_balance_dc_aware(cluster_raw, c"eu".as_ptr(), 1, 0),
1043+
CassError::CASS_ERROR_LIB_BAD_PARAMS
1044+
);
1045+
assert_cass_error_eq!(
1046+
cass_cluster_set_load_balance_dc_aware(cluster_raw, c"eu".as_ptr(), 0, 1),
1047+
CassError::CASS_ERROR_LIB_BAD_PARAMS
1048+
);
1049+
1050+
// null pointers
1051+
assert_cass_error_eq!(
1052+
cass_cluster_set_load_balance_dc_aware(cluster_raw, std::ptr::null(), 0, 0),
1053+
CassError::CASS_ERROR_LIB_BAD_PARAMS
1054+
);
1055+
assert_cass_error_eq!(
1056+
cass_cluster_set_load_balance_rack_aware(
1057+
cluster_raw,
1058+
c"eu".as_ptr(),
1059+
std::ptr::null(),
1060+
),
1061+
CassError::CASS_ERROR_LIB_BAD_PARAMS
1062+
);
1063+
assert_cass_error_eq!(
1064+
cass_cluster_set_load_balance_rack_aware(
1065+
cluster_raw,
1066+
std::ptr::null(),
1067+
c"rack".as_ptr(),
1068+
),
1069+
CassError::CASS_ERROR_LIB_BAD_PARAMS
1070+
);
1071+
1072+
// empty strings
1073+
let empty_str = "\0".as_ptr() as *const i8;
1074+
assert_cass_error_eq!(
1075+
cass_cluster_set_load_balance_dc_aware(cluster_raw, std::ptr::null(), 0, 0),
1076+
CassError::CASS_ERROR_LIB_BAD_PARAMS
1077+
);
1078+
assert_cass_error_eq!(
1079+
cass_cluster_set_load_balance_rack_aware(
10101080
cluster_raw,
1011-
"eu\0".as_ptr() as *const i8,
1012-
1,
1013-
0
1081+
c"eu".as_ptr(),
1082+
empty_str,
10141083
),
10151084
CassError::CASS_ERROR_LIB_BAD_PARAMS
10161085
);
10171086
assert_cass_error_eq!(
1018-
cass_cluster_set_load_balance_dc_aware(
1087+
cass_cluster_set_load_balance_rack_aware(
10191088
cluster_raw,
1020-
"eu\0".as_ptr() as *const i8,
1021-
0,
1022-
1
1089+
empty_str,
1090+
c"rack".as_ptr(),
10231091
),
10241092
CassError::CASS_ERROR_LIB_BAD_PARAMS
10251093
);

0 commit comments

Comments
 (0)