Skip to content

Commit ea3e77e

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 f8e9f3f commit ea3e77e

File tree

1 file changed

+88
-0
lines changed

1 file changed

+88
-0
lines changed

scylla-rust-wrapper/src/cluster.rs

+88
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)