This is an automated email from the ASF dual-hosted git repository.

david-streamlio pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar-connectors.git


The following commit(s) were added to refs/heads/master by this push:
     new 52e3415a [improve][test] Bound container startup in all Testcontainers 
tests (#103)
52e3415a is described below

commit 52e3415a77dc7c46b19298fd4ed16abddf46b2f2
Author: David Kjerrumgaard <[email protected]>
AuthorDate: Fri Jul 10 14:50:53 2026 -0700

    [improve][test] Bound container startup in all Testcontainers tests (#103)
    
    Add an explicit withStartupTimeout to every Testcontainers container
    started in @BeforeClass/@BeforeMethod so a stalled image pull or container
    start fails fast instead of hanging the CI job until its 45-minute limit.
    
    A @Test(timeOut=...) only bounds the test method, not the container start
    in @BeforeClass/@BeforeMethod, so without withStartupTimeout a stuck start
    could cancel unrelated PRs' CI at the job limit (see #89; fixed for MQTT in
    #91). This applies the same bound to the remaining Testcontainers tests.
    
    N=3 for a single normal container; N=5 for the Debezium source tests
    (DB + Pulsar container) and for large/slow images (ClickHouse, LocalStack,
    Pulsar). Only the startup timeout is added; no test logic is changed.
---
 .../org/apache/pulsar/io/cassandra/CassandraStringSinkTest.java    | 4 +++-
 .../org/apache/pulsar/io/debezium/PulsarSchemaHistoryTest.java     | 4 +++-
 .../pulsar/io/debezium/mariadb/DebeziumMariaDbSourceTest.java      | 7 +++++--
 .../pulsar/io/debezium/mongodb/DebeziumMongoDbSourceTest.java      | 7 +++++--
 .../apache/pulsar/io/debezium/mysql/DebeziumMysqlSourceTest.java   | 7 +++++--
 .../pulsar/io/debezium/postgres/DebeziumPostgresSourceTest.java    | 7 +++++--
 .../apache/pulsar/io/dynamodb/DynamoDBSourceIntegrationTest.java   | 4 +++-
 .../io/influxdb/v1/InfluxDBGenericRecordSinkIntegrationTest.java   | 4 +++-
 .../apache/pulsar/io/influxdb/v2/InfluxDBSinkIntegrationTest.java  | 4 +++-
 .../apache/pulsar/io/jdbc/ClickHouseJdbcSinkIntegrationTest.java   | 4 +++-
 .../org/apache/pulsar/io/jdbc/MariadbJdbcSinkIntegrationTest.java  | 4 +++-
 .../test/java/org/apache/pulsar/io/kinesis/KinesisSinkTest.java    | 4 +++-
 .../java/org/apache/pulsar/io/mongodb/MongoSinkContainerTest.java  | 4 +++-
 .../java/org/apache/pulsar/io/nsq/NSQSourceIntegrationTest.java    | 7 +++++--
 .../java/org/apache/pulsar/io/rabbitmq/RabbitMQBrokerManager.java  | 2 ++
 15 files changed, 54 insertions(+), 19 deletions(-)

diff --git 
a/cassandra/src/test/java/org/apache/pulsar/io/cassandra/CassandraStringSinkTest.java
 
b/cassandra/src/test/java/org/apache/pulsar/io/cassandra/CassandraStringSinkTest.java
index 4839ad4c..7735f5ce 100644
--- 
a/cassandra/src/test/java/org/apache/pulsar/io/cassandra/CassandraStringSinkTest.java
+++ 
b/cassandra/src/test/java/org/apache/pulsar/io/cassandra/CassandraStringSinkTest.java
@@ -23,6 +23,7 @@ import static org.testng.Assert.assertEquals;
 import com.datastax.driver.core.Cluster;
 import com.datastax.driver.core.Row;
 import com.datastax.driver.core.Session;
+import java.time.Duration;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -49,7 +50,8 @@ public class CassandraStringSinkTest {
 
     @BeforeMethod
     public void setUp() {
-        cassandraContainer = new CassandraContainer<>("cassandra:4.1");
+        cassandraContainer = new CassandraContainer<>("cassandra:4.1")
+                .withStartupTimeout(Duration.ofMinutes(3));
         cassandraContainer.start();
 
         // Create keyspace and table
diff --git 
a/debezium/core/src/test/java/org/apache/pulsar/io/debezium/PulsarSchemaHistoryTest.java
 
b/debezium/core/src/test/java/org/apache/pulsar/io/debezium/PulsarSchemaHistoryTest.java
index 0856cc1e..ba98cdf7 100644
--- 
a/debezium/core/src/test/java/org/apache/pulsar/io/debezium/PulsarSchemaHistoryTest.java
+++ 
b/debezium/core/src/test/java/org/apache/pulsar/io/debezium/PulsarSchemaHistoryTest.java
@@ -30,6 +30,7 @@ import io.debezium.relational.history.SchemaHistory;
 import io.debezium.relational.history.SchemaHistoryListener;
 import io.debezium.text.ParsingException;
 import io.debezium.util.Collect;
+import java.time.Duration;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
@@ -64,7 +65,8 @@ public class PulsarSchemaHistoryTest {
 
     @BeforeMethod
     protected void setup() throws Exception {
-        pulsarContainer = new 
PulsarContainer(DockerImageName.parse(PULSAR_IMAGE));
+        pulsarContainer = new 
PulsarContainer(DockerImageName.parse(PULSAR_IMAGE))
+                .withStartupTimeout(Duration.ofMinutes(5));
         pulsarContainer.start();
 
         pulsarClient = PulsarClient.builder()
diff --git 
a/debezium/mariadb/src/test/java/org/apache/pulsar/io/debezium/mariadb/DebeziumMariaDbSourceTest.java
 
b/debezium/mariadb/src/test/java/org/apache/pulsar/io/debezium/mariadb/DebeziumMariaDbSourceTest.java
index cc60d488..c1cdc364 100644
--- 
a/debezium/mariadb/src/test/java/org/apache/pulsar/io/debezium/mariadb/DebeziumMariaDbSourceTest.java
+++ 
b/debezium/mariadb/src/test/java/org/apache/pulsar/io/debezium/mariadb/DebeziumMariaDbSourceTest.java
@@ -26,6 +26,7 @@ import static org.testng.Assert.assertTrue;
 import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.Statement;
+import java.time.Duration;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
@@ -71,10 +72,12 @@ public class DebeziumMariaDbSourceTest {
                         "--binlog-format=ROW",
                         "--server-id=1"
                 )
-                .waitingFor(Wait.forLogMessage(".*ready for connections.*\\s", 
2));
+                .waitingFor(Wait.forLogMessage(".*ready for connections.*\\s", 
2))
+                .withStartupTimeout(Duration.ofMinutes(5));
         mariadbContainer.start();
 
-        pulsarContainer = new 
PulsarContainer(DockerImageName.parse(PULSAR_IMAGE));
+        pulsarContainer = new 
PulsarContainer(DockerImageName.parse(PULSAR_IMAGE))
+                .withStartupTimeout(Duration.ofMinutes(5));
         pulsarContainer.start();
 
         pulsarClient = PulsarClient.builder()
diff --git 
a/debezium/mongodb/src/test/java/org/apache/pulsar/io/debezium/mongodb/DebeziumMongoDbSourceTest.java
 
b/debezium/mongodb/src/test/java/org/apache/pulsar/io/debezium/mongodb/DebeziumMongoDbSourceTest.java
index fb6e0b6e..876d3bd4 100644
--- 
a/debezium/mongodb/src/test/java/org/apache/pulsar/io/debezium/mongodb/DebeziumMongoDbSourceTest.java
+++ 
b/debezium/mongodb/src/test/java/org/apache/pulsar/io/debezium/mongodb/DebeziumMongoDbSourceTest.java
@@ -26,6 +26,7 @@ import static org.testng.Assert.assertNotNull;
 import com.mongodb.client.MongoClient;
 import com.mongodb.client.MongoClients;
 import com.mongodb.client.MongoCollection;
+import java.time.Duration;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.ExecutorService;
@@ -68,10 +69,12 @@ public class DebeziumMongoDbSourceTest {
         readerExecutor = Executors.newSingleThreadExecutor();
         // MongoDBContainer starts a single-node replica set, which Debezium 
requires
         // for change streams.
-        mongoContainer = new 
MongoDBContainer(DockerImageName.parse("mongo:7.0"));
+        mongoContainer = new 
MongoDBContainer(DockerImageName.parse("mongo:7.0"))
+                .withStartupTimeout(Duration.ofMinutes(5));
         mongoContainer.start();
 
-        pulsarContainer = new 
PulsarContainer(DockerImageName.parse(PULSAR_IMAGE));
+        pulsarContainer = new 
PulsarContainer(DockerImageName.parse(PULSAR_IMAGE))
+                .withStartupTimeout(Duration.ofMinutes(5));
         pulsarContainer.start();
 
         pulsarClient = PulsarClient.builder()
diff --git 
a/debezium/mysql/src/test/java/org/apache/pulsar/io/debezium/mysql/DebeziumMysqlSourceTest.java
 
b/debezium/mysql/src/test/java/org/apache/pulsar/io/debezium/mysql/DebeziumMysqlSourceTest.java
index fa8f4f9a..dd932042 100644
--- 
a/debezium/mysql/src/test/java/org/apache/pulsar/io/debezium/mysql/DebeziumMysqlSourceTest.java
+++ 
b/debezium/mysql/src/test/java/org/apache/pulsar/io/debezium/mysql/DebeziumMysqlSourceTest.java
@@ -26,6 +26,7 @@ import static org.testng.Assert.assertNotNull;
 import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.Statement;
+import java.time.Duration;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.ExecutorService;
@@ -86,10 +87,12 @@ readerExecutor = Executors.newSingleThreadExecutor(r -> {
                         "--gtid-mode=ON",
                         "--enforce-gtid-consistency=ON"
                 )
-                .waitingFor(Wait.forLogMessage(".*ready for connections.*\\s", 
2));
+                .waitingFor(Wait.forLogMessage(".*ready for connections.*\\s", 
2))
+                .withStartupTimeout(Duration.ofMinutes(5));
         mysqlContainer.start();
 
-        pulsarContainer = new 
PulsarContainer(DockerImageName.parse(PULSAR_IMAGE));
+        pulsarContainer = new 
PulsarContainer(DockerImageName.parse(PULSAR_IMAGE))
+                .withStartupTimeout(Duration.ofMinutes(5));
         pulsarContainer.start();
 
         pulsarClient = PulsarClient.builder()
diff --git 
a/debezium/postgres/src/test/java/org/apache/pulsar/io/debezium/postgres/DebeziumPostgresSourceTest.java
 
b/debezium/postgres/src/test/java/org/apache/pulsar/io/debezium/postgres/DebeziumPostgresSourceTest.java
index f550d8e9..f753e9d7 100644
--- 
a/debezium/postgres/src/test/java/org/apache/pulsar/io/debezium/postgres/DebeziumPostgresSourceTest.java
+++ 
b/debezium/postgres/src/test/java/org/apache/pulsar/io/debezium/postgres/DebeziumPostgresSourceTest.java
@@ -26,6 +26,7 @@ import static org.testng.Assert.assertNotNull;
 import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.Statement;
+import java.time.Duration;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.ExecutorService;
@@ -72,10 +73,12 @@ public class DebeziumPostgresSourceTest {
                 .withCommand("postgres",
                         "-c", "wal_level=logical",
                         "-c", "max_wal_senders=4",
-                        "-c", "max_replication_slots=4");
+                        "-c", "max_replication_slots=4")
+                .withStartupTimeout(Duration.ofMinutes(5));
         postgresContainer.start();
 
-        pulsarContainer = new 
PulsarContainer(DockerImageName.parse(PULSAR_IMAGE));
+        pulsarContainer = new 
PulsarContainer(DockerImageName.parse(PULSAR_IMAGE))
+                .withStartupTimeout(Duration.ofMinutes(5));
         pulsarContainer.start();
 
         pulsarClient = PulsarClient.builder()
diff --git 
a/dynamodb/src/test/java/org/apache/pulsar/io/dynamodb/DynamoDBSourceIntegrationTest.java
 
b/dynamodb/src/test/java/org/apache/pulsar/io/dynamodb/DynamoDBSourceIntegrationTest.java
index d6600b28..0f8fff8c 100644
--- 
a/dynamodb/src/test/java/org/apache/pulsar/io/dynamodb/DynamoDBSourceIntegrationTest.java
+++ 
b/dynamodb/src/test/java/org/apache/pulsar/io/dynamodb/DynamoDBSourceIntegrationTest.java
@@ -37,6 +37,7 @@ import 
com.amazonaws.services.dynamodbv2.model.ScalarAttributeType;
 import com.amazonaws.services.dynamodbv2.model.StreamSpecification;
 import com.amazonaws.services.dynamodbv2.model.StreamViewType;
 import java.net.URI;
+import java.time.Duration;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.ExecutorService;
@@ -82,7 +83,8 @@ public class DynamoDBSourceIntegrationTest {
             new 
LocalStackContainer(DockerImageName.parse("localstack/localstack:4.0.3"))
                     .withServices(
                             LocalStackContainer.Service.DYNAMODB,
-                            LocalStackContainer.Service.CLOUDWATCH);
+                            LocalStackContainer.Service.CLOUDWATCH)
+                    .withStartupTimeout(Duration.ofMinutes(5));
 
     private AmazonDynamoDB dynamoDB;
     private String streamArn;
diff --git 
a/influxdb/src/test/java/org/apache/pulsar/io/influxdb/v1/InfluxDBGenericRecordSinkIntegrationTest.java
 
b/influxdb/src/test/java/org/apache/pulsar/io/influxdb/v1/InfluxDBGenericRecordSinkIntegrationTest.java
index a6c7bf9b..3508f578 100644
--- 
a/influxdb/src/test/java/org/apache/pulsar/io/influxdb/v1/InfluxDBGenericRecordSinkIntegrationTest.java
+++ 
b/influxdb/src/test/java/org/apache/pulsar/io/influxdb/v1/InfluxDBGenericRecordSinkIntegrationTest.java
@@ -20,6 +20,7 @@ package org.apache.pulsar.io.influxdb.v1;
 
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertNotNull;
+import java.time.Duration;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -95,7 +96,8 @@ public class InfluxDBGenericRecordSinkIntegrationTest {
                 .withEnv("INFLUXDB_ADMIN_USER", USERNAME)
                 .withEnv("INFLUXDB_ADMIN_PASSWORD", PASSWORD)
                 .withEnv("INFLUXDB_HTTP_AUTH_ENABLED", "true")
-                
.waitingFor(Wait.forHttp("/ping").forPort(INFLUXDB_PORT).forStatusCode(204));
+                
.waitingFor(Wait.forHttp("/ping").forPort(INFLUXDB_PORT).forStatusCode(204))
+                .withStartupTimeout(Duration.ofMinutes(3));
         influxdbContainer.start();
 
         influxdbUrl = "http://"; + influxdbContainer.getHost() + ":"
diff --git 
a/influxdb/src/test/java/org/apache/pulsar/io/influxdb/v2/InfluxDBSinkIntegrationTest.java
 
b/influxdb/src/test/java/org/apache/pulsar/io/influxdb/v2/InfluxDBSinkIntegrationTest.java
index db6b8a52..f2d00657 100644
--- 
a/influxdb/src/test/java/org/apache/pulsar/io/influxdb/v2/InfluxDBSinkIntegrationTest.java
+++ 
b/influxdb/src/test/java/org/apache/pulsar/io/influxdb/v2/InfluxDBSinkIntegrationTest.java
@@ -24,6 +24,7 @@ import com.influxdb.client.InfluxDBClient;
 import com.influxdb.client.InfluxDBClientFactory;
 import com.influxdb.query.FluxRecord;
 import com.influxdb.query.FluxTable;
+import java.time.Duration;
 import java.time.Instant;
 import java.util.HashMap;
 import java.util.List;
@@ -98,7 +99,8 @@ public class InfluxDBSinkIntegrationTest {
                 .withEnv("DOCKER_INFLUXDB_INIT_ORG", ORG)
                 .withEnv("DOCKER_INFLUXDB_INIT_BUCKET", BUCKET)
                 .withEnv("DOCKER_INFLUXDB_INIT_ADMIN_TOKEN", TOKEN)
-                
.waitingFor(Wait.forHttp("/health").forPort(INFLUXDB_PORT).forStatusCode(200));
+                
.waitingFor(Wait.forHttp("/health").forPort(INFLUXDB_PORT).forStatusCode(200))
+                .withStartupTimeout(Duration.ofMinutes(3));
         influxdbContainer.start();
 
         influxdbUrl = "http://"; + influxdbContainer.getHost() + ":"
diff --git 
a/jdbc/clickhouse/src/test/java/org/apache/pulsar/io/jdbc/ClickHouseJdbcSinkIntegrationTest.java
 
b/jdbc/clickhouse/src/test/java/org/apache/pulsar/io/jdbc/ClickHouseJdbcSinkIntegrationTest.java
index 8269b4b5..8203518b 100644
--- 
a/jdbc/clickhouse/src/test/java/org/apache/pulsar/io/jdbc/ClickHouseJdbcSinkIntegrationTest.java
+++ 
b/jdbc/clickhouse/src/test/java/org/apache/pulsar/io/jdbc/ClickHouseJdbcSinkIntegrationTest.java
@@ -25,6 +25,7 @@ import java.io.OutputStream;
 import java.net.HttpURLConnection;
 import java.net.URL;
 import java.nio.charset.StandardCharsets;
+import java.time.Duration;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.CompletableFuture;
@@ -91,7 +92,8 @@ public class ClickHouseJdbcSinkIntegrationTest {
 
     @BeforeClass(alwaysRun = true)
     public void setUp() throws Exception {
-        clickhouse = new ClickHouseContainer(CLICKHOUSE_IMAGE);
+        clickhouse = new ClickHouseContainer(CLICKHOUSE_IMAGE)
+                .withStartupTimeout(Duration.ofMinutes(5));
         clickhouse.start();
 
         // Create the destination table over the HTTP interface (ClickHouse 
requires an explicit
diff --git 
a/jdbc/mariadb/src/test/java/org/apache/pulsar/io/jdbc/MariadbJdbcSinkIntegrationTest.java
 
b/jdbc/mariadb/src/test/java/org/apache/pulsar/io/jdbc/MariadbJdbcSinkIntegrationTest.java
index 1039dc1c..45ccb811 100644
--- 
a/jdbc/mariadb/src/test/java/org/apache/pulsar/io/jdbc/MariadbJdbcSinkIntegrationTest.java
+++ 
b/jdbc/mariadb/src/test/java/org/apache/pulsar/io/jdbc/MariadbJdbcSinkIntegrationTest.java
@@ -25,6 +25,7 @@ import java.sql.DriverManager;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.Statement;
+import java.time.Duration;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.CompletableFuture;
@@ -82,7 +83,8 @@ public class MariadbJdbcSinkIntegrationTest {
 
     @BeforeClass(alwaysRun = true)
     public void setUp() throws Exception {
-        mariadb = new MariaDBContainer<>(MARIADB_IMAGE);
+        mariadb = new MariaDBContainer<>(MARIADB_IMAGE)
+                .withStartupTimeout(Duration.ofMinutes(3));
         mariadb.start();
 
         // Create the destination table over plain JDBC.
diff --git 
a/kinesis/src/test/java/org/apache/pulsar/io/kinesis/KinesisSinkTest.java 
b/kinesis/src/test/java/org/apache/pulsar/io/kinesis/KinesisSinkTest.java
index 332cd4a8..66c31c33 100644
--- a/kinesis/src/test/java/org/apache/pulsar/io/kinesis/KinesisSinkTest.java
+++ b/kinesis/src/test/java/org/apache/pulsar/io/kinesis/KinesisSinkTest.java
@@ -24,6 +24,7 @@ import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertTrue;
 import java.net.URI;
 import java.nio.charset.StandardCharsets;
+import java.time.Duration;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Optional;
@@ -59,7 +60,8 @@ public class KinesisSinkTest {
     public static final LocalStackContainer LOCAL_STACK_CONTAINER =
             new 
LocalStackContainer(DockerImageName.parse("localstack/localstack:4.0.3"))
                     .withServices(LocalStackContainer.Service.KINESIS, 
LocalStackContainer.Service.STS)
-                    .withEnv("KINESIS_PROVIDER", "kinesalite");
+                    .withEnv("KINESIS_PROVIDER", "kinesalite")
+                    .withStartupTimeout(Duration.ofMinutes(5));
 
     @BeforeClass(alwaysRun = true)
     public void beforeClass() throws Exception {
diff --git 
a/mongo/src/test/java/org/apache/pulsar/io/mongodb/MongoSinkContainerTest.java 
b/mongo/src/test/java/org/apache/pulsar/io/mongodb/MongoSinkContainerTest.java
index 93f79a9e..2184c251 100644
--- 
a/mongo/src/test/java/org/apache/pulsar/io/mongodb/MongoSinkContainerTest.java
+++ 
b/mongo/src/test/java/org/apache/pulsar/io/mongodb/MongoSinkContainerTest.java
@@ -22,6 +22,7 @@ import static org.mockito.Mockito.mock;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertNotNull;
 import java.nio.charset.StandardCharsets;
+import java.time.Duration;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -50,7 +51,8 @@ public class MongoSinkContainerTest {
 
     @BeforeMethod
     public void setUp() {
-        mongoContainer = new MongoDBContainer("mongo:6.0");
+        mongoContainer = new MongoDBContainer("mongo:6.0")
+                .withStartupTimeout(Duration.ofMinutes(3));
         mongoContainer.start();
         sink = new MongoSink();
     }
diff --git 
a/nsq/src/test/java/org/apache/pulsar/io/nsq/NSQSourceIntegrationTest.java 
b/nsq/src/test/java/org/apache/pulsar/io/nsq/NSQSourceIntegrationTest.java
index 874f2442..57773285 100644
--- a/nsq/src/test/java/org/apache/pulsar/io/nsq/NSQSourceIntegrationTest.java
+++ b/nsq/src/test/java/org/apache/pulsar/io/nsq/NSQSourceIntegrationTest.java
@@ -32,6 +32,7 @@ import java.net.ServerSocket;
 import java.net.HttpURLConnection;
 import java.net.URL;
 import java.nio.charset.StandardCharsets;
+import java.time.Duration;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
@@ -106,7 +107,8 @@ public class NSQSourceIntegrationTest {
                 .withNetworkAliases("nsqlookupd")
                 .withCommand("/nsqlookupd")
                 .withExposedPorts(LOOKUPD_TCP_PORT, LOOKUPD_HTTP_PORT)
-                .waitingFor(Wait.forHttp("/ping").forPort(LOOKUPD_HTTP_PORT));
+                .waitingFor(Wait.forHttp("/ping").forPort(LOOKUPD_HTTP_PORT))
+                .withStartupTimeout(Duration.ofMinutes(3));
         nsqlookupd.start();
 
         nsqd = new GenericContainer<>(NSQ_IMAGE)
@@ -134,7 +136,8 @@ public class NSQSourceIntegrationTest {
                             Ports.Binding.bindPort(nsqdTcpPort));
                     hostConfig.withPortBindings(portBindings);
                 })
-                .waitingFor(Wait.forHttp("/ping").forPort(NSQD_HTTP_PORT));
+                .waitingFor(Wait.forHttp("/ping").forPort(NSQD_HTTP_PORT))
+                .withStartupTimeout(Duration.ofMinutes(3));
         nsqd.start();
 
         log.info("nsqlookupd http {}:{}, nsqd http {}:{}, nsqd tcp {}:{}",
diff --git 
a/rabbitmq/src/test/java/org/apache/pulsar/io/rabbitmq/RabbitMQBrokerManager.java
 
b/rabbitmq/src/test/java/org/apache/pulsar/io/rabbitmq/RabbitMQBrokerManager.java
index ef69608e..24e5fa01 100644
--- 
a/rabbitmq/src/test/java/org/apache/pulsar/io/rabbitmq/RabbitMQBrokerManager.java
+++ 
b/rabbitmq/src/test/java/org/apache/pulsar/io/rabbitmq/RabbitMQBrokerManager.java
@@ -18,6 +18,7 @@
  */
 package org.apache.pulsar.io.rabbitmq;
 
+import java.time.Duration;
 import org.testcontainers.containers.RabbitMQContainer;
 import org.testcontainers.utility.DockerImageName;
 
@@ -27,6 +28,7 @@ public class RabbitMQBrokerManager {
     public void startBroker() throws Exception {
         rabbitMQContainer = new 
RabbitMQContainer(DockerImageName.parse("rabbitmq:3.7.25-management-alpine"));
         rabbitMQContainer.withVhost("default");
+        rabbitMQContainer.withStartupTimeout(Duration.ofMinutes(3));
         rabbitMQContainer.start();
     }
 

Reply via email to