From fffadb283777425dbf6973aa364e363400f9bf8c Mon Sep 17 00:00:00 2001 From: Cristian Greco Date: Mon, 9 Jun 2025 13:44:33 +0100 Subject: [PATCH 1/3] Increase timeout for waiting for host ports --- .../generic-container/inspect-container-util-ports-exposed.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/testcontainers/src/generic-container/inspect-container-util-ports-exposed.ts b/packages/testcontainers/src/generic-container/inspect-container-util-ports-exposed.ts index e78a6550b..762154633 100644 --- a/packages/testcontainers/src/generic-container/inspect-container-util-ports-exposed.ts +++ b/packages/testcontainers/src/generic-container/inspect-container-util-ports-exposed.ts @@ -13,9 +13,9 @@ export async function inspectContainerUntilPortsExposed( inspectFn: () => Promise, ports: PortWithOptionalBinding[], containerId: string, - timeout = 5000 + timeout = 10_000 ): Promise { - const result = await new IntervalRetry(100).retryUntil( + const result = await new IntervalRetry(250).retryUntil( async () => { const inspectResult = await inspectFn(); const mappedInspectResult = mapInspectResult(inspectResult); From ea23dc967baf54bd66c5a290762a532eeb283f29 Mon Sep 17 00:00:00 2001 From: Cristian Greco Date: Mon, 9 Jun 2025 15:05:44 +0100 Subject: [PATCH 2/3] Fix flaky Kafka test --- packages/modules/kafka/src/kafka-container.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/modules/kafka/src/kafka-container.ts b/packages/modules/kafka/src/kafka-container.ts index 8b711e70e..a0b767200 100644 --- a/packages/modules/kafka/src/kafka-container.ts +++ b/packages/modules/kafka/src/kafka-container.ts @@ -64,6 +64,7 @@ export class KafkaContainer extends GenericContainer { constructor(image: string) { super(image); + // this.withWaitStrategy(Wait.forLogMessage(/Kafka startTimeMs/)); this.withExposedPorts(KAFKA_PORT).withStartupTimeout(180_000).withEnvironment({ KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: "BROKER:PLAINTEXT,PLAINTEXT:PLAINTEXT", KAFKA_INTER_BROKER_LISTENER_NAME: "BROKER", @@ -300,10 +301,17 @@ export class KafkaContainer extends GenericContainer { } private commandZookeeper(): string { - let command = "echo 'clientPort=" + DEFAULT_ZOOKEEPER_PORT + "' > zookeeper.properties\n"; + const port = DEFAULT_ZOOKEEPER_PORT; + + let command = `echo 'clientPort=${DEFAULT_ZOOKEEPER_PORT}' > zookeeper.properties\n`; command += "echo 'dataDir=/var/lib/zookeeper/data' >> zookeeper.properties\n"; command += "echo 'dataLogDir=/var/lib/zookeeper/log' >> zookeeper.properties\n"; command += "zookeeper-server-start zookeeper.properties &\n"; + + command += `echo "Waiting for ZooKeeper to be ready on port ${port}..."\n`; + command += `while ! (echo > /dev/tcp/localhost/${port}) &> /dev/null; do sleep 0.1; done\n`; + command += `echo "ZooKeeper is ready."\n`; + return command; } } From c43e91199989ae0c1f8c9dcb381eaefa80203bfd Mon Sep 17 00:00:00 2001 From: Cristian Greco Date: Mon, 9 Jun 2025 15:06:23 +0100 Subject: [PATCH 3/3] Remove comment --- packages/modules/kafka/src/kafka-container.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/modules/kafka/src/kafka-container.ts b/packages/modules/kafka/src/kafka-container.ts index a0b767200..9909b9749 100644 --- a/packages/modules/kafka/src/kafka-container.ts +++ b/packages/modules/kafka/src/kafka-container.ts @@ -64,7 +64,6 @@ export class KafkaContainer extends GenericContainer { constructor(image: string) { super(image); - // this.withWaitStrategy(Wait.forLogMessage(/Kafka startTimeMs/)); this.withExposedPorts(KAFKA_PORT).withStartupTimeout(180_000).withEnvironment({ KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: "BROKER:PLAINTEXT,PLAINTEXT:PLAINTEXT", KAFKA_INTER_BROKER_LISTENER_NAME: "BROKER",