Skip to content

Commit

Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix tests with down shotover node
Browse files Browse the repository at this point in the history
rukai committed Oct 29, 2024
1 parent 8dd584d commit 46f1568
Showing 2 changed files with 33 additions and 8 deletions.
4 changes: 2 additions & 2 deletions shotover-proxy/tests/kafka_int_tests/mod.rs
Original file line number Diff line number Diff line change
@@ -485,7 +485,7 @@ async fn cluster_3_racks_multi_shotover_with_2_shotover_down(#[case] driver: Kaf

// create a new connection and produce and consume messages
let new_connection_builder = KafkaConnectionBuilder::new(driver, "localhost:9193");
test_cases::cluster_test_suite(&new_connection_builder).await;
test_cases::cluster_test_suite_with_lost_shotover_node(&new_connection_builder).await;

let mut expected_events = multi_shotover_events();
// The UP shotover node should detect the killed nodes at least once
@@ -537,7 +537,7 @@ async fn cluster_3_racks_multi_shotover_with_1_shotover_missing(#[case] driver:

// Send some produce and consume requests
let connection_builder = KafkaConnectionBuilder::new(driver, "localhost:9192");
test_cases::cluster_test_suite(&connection_builder).await;
test_cases::cluster_test_suite_with_lost_shotover_node(&connection_builder).await;

let mut expected_events = multi_shotover_events();
// Other shotover nodes should detect the missing node at least once
37 changes: 31 additions & 6 deletions shotover-proxy/tests/kafka_int_tests/test_cases.rs
Original file line number Diff line number Diff line change
@@ -1326,7 +1326,7 @@ async fn test_produce_consume_10_times(producer: &mut KafkaProducer, consumer: &
}
}

pub async fn standard_test_suite(connection_builder: &KafkaConnectionBuilder) {
async fn standard_test_suite_base(connection_builder: &KafkaConnectionBuilder) {
admin_setup(connection_builder).await;
produce_consume_partitions1(connection_builder, "partitions1").await;
produce_consume_partitions1(connection_builder, "unknown_topic").await;
@@ -1363,9 +1363,7 @@ pub async fn standard_test_suite(connection_builder: &KafkaConnectionBuilder) {
.await;
produce_consume_partitions1(connection_builder, "partitions1").await;

// rdkafka-rs doesnt support these methods
list_offsets(&admin).await;
list_groups(connection_builder, &admin).await;
}

produce_consume_acks0(connection_builder).await;
@@ -1439,7 +1437,8 @@ async fn list_offsets(admin: &KafkaAdmin) {
assert_eq!(results, expected);
}

async fn list_groups(connection_builder: &KafkaConnectionBuilder, admin: &KafkaAdmin) {
async fn list_groups(connection_builder: &KafkaConnectionBuilder) {
let admin = connection_builder.connect_admin().await;
let mut consumer = connection_builder
.connect_consumer(
ConsumerConfig::consume_from_topics(vec!["partitions1".to_owned()])
@@ -1461,8 +1460,7 @@ async fn list_groups(connection_builder: &KafkaConnectionBuilder, admin: &KafkaA
}
}

pub async fn cluster_test_suite(connection_builder: &KafkaConnectionBuilder) {
standard_test_suite(connection_builder).await;
async fn cluster_test_suite_base(connection_builder: &KafkaConnectionBuilder) {
let admin = connection_builder.connect_admin().await;
admin
.create_topics_and_wait(&[
@@ -1482,6 +1480,33 @@ pub async fn cluster_test_suite(connection_builder: &KafkaConnectionBuilder) {
produce_consume_partitions3(connection_builder, "partitions3_rf3", 1, 500).await;
}

pub async fn tests_requiring_all_shotover_nodes(connection_builder: &KafkaConnectionBuilder) {
// rdkafka-rs doesnt support these methods
#[allow(irrefutable_let_patterns)]
if let KafkaConnectionBuilder::Java(_) = connection_builder {
list_groups(connection_builder).await;
}
}

pub async fn standard_test_suite(connection_builder: &KafkaConnectionBuilder) {
tests_requiring_all_shotover_nodes(connection_builder).await;
standard_test_suite_base(connection_builder).await;
cluster_test_suite_base(connection_builder).await;
}

pub async fn cluster_test_suite(connection_builder: &KafkaConnectionBuilder) {
tests_requiring_all_shotover_nodes(connection_builder).await;
standard_test_suite_base(connection_builder).await;
cluster_test_suite_base(connection_builder).await;
}

pub async fn cluster_test_suite_with_lost_shotover_node(
connection_builder: &KafkaConnectionBuilder,
) {
standard_test_suite_base(connection_builder).await;
cluster_test_suite_base(connection_builder).await;
}

pub async fn setup_basic_user_acls(connection: &KafkaConnectionBuilder, username: &str) {
let admin = connection.connect_admin().await;
admin

0 comments on commit 46f1568

Please sign in to comment.