diff --git a/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/integration/MirrorConnectorsIntegrationBaseTest.java b/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/integration/MirrorConnectorsIntegrationBaseTest.java index e6bdb9679d64d..a5b47a7456640 100644 --- a/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/integration/MirrorConnectorsIntegrationBaseTest.java +++ b/connect/mirror/src/test/java/org/apache/kafka/connect/mirror/integration/MirrorConnectorsIntegrationBaseTest.java @@ -17,6 +17,7 @@ package org.apache.kafka.connect.mirror.integration; import org.apache.kafka.clients.admin.Admin; +import org.apache.kafka.clients.admin.AdminClientConfig; import org.apache.kafka.clients.admin.Config; import org.apache.kafka.clients.admin.DescribeConfigsResult; import org.apache.kafka.clients.consumer.Consumer; @@ -84,6 +85,7 @@ public abstract class MirrorConnectorsIntegrationBaseTest { private static final int RECORD_CONSUME_DURATION_MS = 20_000; private static final int OFFSET_SYNC_DURATION_MS = 30_000; private static final int TOPIC_SYNC_DURATION_MS = 30_000; + private static final int REQUEST_TIMEOUT_DURATION_MS = 60_000; private static final int NUM_WORKERS = 3; private static final Duration CONSUMER_POLL_TIMEOUT_MS = Duration.ofMillis(500); protected static final String PRIMARY_CLUSTER_ALIAS = "primary"; @@ -602,13 +604,19 @@ private static Map basicMM2Config() { private void createTopics() { // to verify topic config will be sync-ed across clusters Map topicConfig = Collections.singletonMap(TopicConfig.CLEANUP_POLICY_CONFIG, TopicConfig.CLEANUP_POLICY_COMPACT); + Map emptyMap = Collections.emptyMap(); + + // increase admin client request timeout value to make the tests reliable. + Properties adminClientConfig = new Properties(); + adminClientConfig.put(AdminClientConfig.REQUEST_TIMEOUT_MS_CONFIG, REQUEST_TIMEOUT_DURATION_MS); + // create these topics before starting the connectors so we don't need to wait for discovery - primary.kafka().createTopic("test-topic-1", NUM_PARTITIONS, 1, topicConfig); - primary.kafka().createTopic("backup.test-topic-1", 1); - primary.kafka().createTopic("heartbeats", 1); - backup.kafka().createTopic("test-topic-1", NUM_PARTITIONS); - backup.kafka().createTopic("primary.test-topic-1", 1); - backup.kafka().createTopic("heartbeats", 1); + primary.kafka().createTopic("test-topic-1", NUM_PARTITIONS, 1, topicConfig, adminClientConfig); + primary.kafka().createTopic("backup.test-topic-1", 1, 1, emptyMap, adminClientConfig); + primary.kafka().createTopic("heartbeats", 1, 1, emptyMap, adminClientConfig); + backup.kafka().createTopic("test-topic-1", NUM_PARTITIONS, 1, emptyMap, adminClientConfig); + backup.kafka().createTopic("primary.test-topic-1", 1, 1, emptyMap, adminClientConfig); + backup.kafka().createTopic("heartbeats", 1, 1, emptyMap, adminClientConfig); } /* diff --git a/connect/runtime/src/test/java/org/apache/kafka/connect/util/clusters/EmbeddedKafkaCluster.java b/connect/runtime/src/test/java/org/apache/kafka/connect/util/clusters/EmbeddedKafkaCluster.java index a8328c5069460..0568a7928dfb2 100644 --- a/connect/runtime/src/test/java/org/apache/kafka/connect/util/clusters/EmbeddedKafkaCluster.java +++ b/connect/runtime/src/test/java/org/apache/kafka/connect/util/clusters/EmbeddedKafkaCluster.java @@ -337,18 +337,19 @@ public void createTopic(String topic) { * @param topic The name of the topic. */ public void createTopic(String topic, int partitions) { - createTopic(topic, partitions, 1, new HashMap<>()); + createTopic(topic, partitions, 1, new HashMap<>(), new Properties()); } /** * Create a Kafka topic with the given parameters. * - * @param topic The name of the topic. - * @param partitions The number of partitions for this topic. - * @param replication The replication factor for (partitions of) this topic. - * @param topicConfig Additional topic-level configuration settings. + * @param topic The name of the topic. + * @param partitions The number of partitions for this topic. + * @param replication The replication factor for (partitions of) this topic. + * @param topicConfig Additional topic-level configuration settings. + * @param adminClientConfig Additional admin client configuration settings. */ - public void createTopic(String topic, int partitions, int replication, Map topicConfig) { + public void createTopic(String topic, int partitions, int replication, Map topicConfig, Properties adminClientConfig) { if (replication > brokers.length) { throw new InvalidReplicationFactorException("Insufficient brokers (" + brokers.length + ") for desired replication (" + replication + ")"); @@ -359,7 +360,7 @@ public void createTopic(String topic, int partitions, int replication, Map