Skip to content

Commit b1bcbcd

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 26bb720 commit b1bcbcd

File tree

1 file changed

+82
-14
lines changed

1 file changed

+82
-14
lines changed

scylla-rust-wrapper/src/cluster.rs

Lines changed: 82 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -942,12 +942,7 @@ mod tests {
942942
{
943943
cass_cluster_set_token_aware_routing(cluster_raw, 0);
944944
assert_cass_error_eq!(
945-
cass_cluster_set_load_balance_dc_aware(
946-
cluster_raw,
947-
"eu\0".as_ptr() as *const i8,
948-
0,
949-
0
950-
),
945+
cass_cluster_set_load_balance_dc_aware(cluster_raw, c"eu".as_ptr(), 0, 0),
951946
CassError::CASS_OK
952947
);
953948
cass_cluster_set_latency_aware_routing(cluster_raw, 1);
@@ -972,25 +967,98 @@ mod tests {
972967
}
973968
assert!(!cluster.load_balancing_config.token_awareness_enabled);
974969
assert!(cluster.load_balancing_config.latency_awareness_enabled);
970+
971+
// set preferred rack+dc
972+
assert_cass_error_eq!(
973+
cass_cluster_set_load_balance_rack_aware(
974+
cluster_raw,
975+
c"eu-east".as_ptr(),
976+
c"rack1".as_ptr(),
977+
),
978+
CassError::CASS_OK
979+
);
980+
981+
let node_location_preference =
982+
&cluster.load_balancing_config.node_location_preference;
983+
match node_location_preference {
984+
NodeLocationPreference::DatacenterAndRack {
985+
local_dc,
986+
local_rack,
987+
} => {
988+
assert_eq!(local_dc, "eu-east");
989+
assert_eq!(local_rack, "rack1");
990+
}
991+
_ => panic!("Expected preferred dc and rack"),
992+
}
993+
994+
// set back to preferred dc
995+
assert_cass_error_eq!(
996+
cass_cluster_set_load_balance_dc_aware(cluster_raw, c"eu".as_ptr(), 0, 0),
997+
CassError::CASS_OK
998+
);
999+
1000+
let node_location_preference =
1001+
&cluster.load_balancing_config.node_location_preference;
1002+
match node_location_preference {
1003+
NodeLocationPreference::Datacenter { local_dc } => {
1004+
assert_eq!(local_dc, "eu")
1005+
}
1006+
_ => panic!("Expected preferred dc"),
1007+
}
9751008
}
9761009
/* Test invalid configurations */
9771010
{
9781011
// Nonzero deprecated parameters
9791012
assert_cass_error_eq!(
980-
cass_cluster_set_load_balance_dc_aware(
1013+
cass_cluster_set_load_balance_dc_aware(cluster_raw, c"eu".as_ptr(), 1, 0),
1014+
CassError::CASS_ERROR_LIB_BAD_PARAMS
1015+
);
1016+
assert_cass_error_eq!(
1017+
cass_cluster_set_load_balance_dc_aware(cluster_raw, c"eu".as_ptr(), 0, 1),
1018+
CassError::CASS_ERROR_LIB_BAD_PARAMS
1019+
);
1020+
1021+
// null pointers
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+
c"eu".as_ptr(),
1030+
std::ptr::null(),
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+
std::ptr::null(),
1038+
c"rack".as_ptr(),
1039+
),
1040+
CassError::CASS_ERROR_LIB_BAD_PARAMS
1041+
);
1042+
1043+
// empty strings
1044+
let empty_str = "\0".as_ptr() as *const i8;
1045+
assert_cass_error_eq!(
1046+
cass_cluster_set_load_balance_dc_aware(cluster_raw, std::ptr::null(), 0, 0),
1047+
CassError::CASS_ERROR_LIB_BAD_PARAMS
1048+
);
1049+
assert_cass_error_eq!(
1050+
cass_cluster_set_load_balance_rack_aware(
9811051
cluster_raw,
982-
"eu\0".as_ptr() as *const i8,
983-
1,
984-
0
1052+
c"eu".as_ptr(),
1053+
empty_str,
9851054
),
9861055
CassError::CASS_ERROR_LIB_BAD_PARAMS
9871056
);
9881057
assert_cass_error_eq!(
989-
cass_cluster_set_load_balance_dc_aware(
1058+
cass_cluster_set_load_balance_rack_aware(
9901059
cluster_raw,
991-
"eu\0".as_ptr() as *const i8,
992-
0,
993-
1
1060+
empty_str,
1061+
c"rack".as_ptr(),
9941062
),
9951063
CassError::CASS_ERROR_LIB_BAD_PARAMS
9961064
);

0 commit comments

Comments
 (0)