From 8fbe7f605b61700943b1229d39a3e1914c53508f Mon Sep 17 00:00:00 2001 From: Artur Ciocanu Date: Sat, 31 Jan 2026 19:18:59 -0800 Subject: [PATCH 1/4] Replace old log based waits with DaprWait strategy. Signed-off-by: Artur Ciocanu --- .../dapr/it/spring/messaging/DaprSpringMessagingIT.java | 7 +++---- .../io/dapr/it/testcontainers/actors/DaprActorsIT.java | 8 ++------ .../testcontainers/pubsub/outbox/DaprPubSubOutboxIT.java | 7 ++----- .../dapr/springboot/examples/consumer/ConsumerAppIT.java | 7 +++---- .../dapr/springboot/examples/producer/ProducerAppIT.java | 9 +++------ 5 files changed, 13 insertions(+), 25 deletions(-) diff --git a/sdk-tests/src/test/java/io/dapr/it/spring/messaging/DaprSpringMessagingIT.java b/sdk-tests/src/test/java/io/dapr/it/spring/messaging/DaprSpringMessagingIT.java index 106519f8d2..26dc6b5db3 100644 --- a/sdk-tests/src/test/java/io/dapr/it/spring/messaging/DaprSpringMessagingIT.java +++ b/sdk-tests/src/test/java/io/dapr/it/spring/messaging/DaprSpringMessagingIT.java @@ -19,6 +19,7 @@ import io.dapr.testcontainers.Component; import io.dapr.testcontainers.DaprContainer; import io.dapr.testcontainers.DaprLogLevel; +import io.dapr.testcontainers.wait.strategy.DaprWait; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Tag; @@ -30,7 +31,6 @@ import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; import org.testcontainers.containers.Network; -import org.testcontainers.containers.wait.strategy.Wait; import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; @@ -54,10 +54,10 @@ public class DaprSpringMessagingIT { private static final Logger logger = LoggerFactory.getLogger(DaprSpringMessagingIT.class); + private static final String PUBSUB_NAME = "pubsub"; private static final String TOPIC = "mockTopic"; private static final Network DAPR_NETWORK = Network.newNetwork(); private static final int APP_PORT = 8080; - private static final String SUBSCRIPTION_MESSAGE_PATTERN = ".*app is subscribed to the following topics.*"; @Container @ServiceConnection @@ -84,8 +84,7 @@ public static void beforeAll(){ @BeforeEach public void beforeEach() { - // Ensure the subscriptions are registered - Wait.forLogMessage(SUBSCRIPTION_MESSAGE_PATTERN, 1).waitUntilReady(DAPR_CONTAINER); + DaprWait.forSubscription(PUBSUB_NAME, TOPIC).waitUntilReady(DAPR_CONTAINER); } @Test diff --git a/sdk-tests/src/test/java/io/dapr/it/testcontainers/actors/DaprActorsIT.java b/sdk-tests/src/test/java/io/dapr/it/testcontainers/actors/DaprActorsIT.java index f0ff24d8f0..96b7e512ec 100644 --- a/sdk-tests/src/test/java/io/dapr/it/testcontainers/actors/DaprActorsIT.java +++ b/sdk-tests/src/test/java/io/dapr/it/testcontainers/actors/DaprActorsIT.java @@ -23,11 +23,11 @@ import io.dapr.testcontainers.internal.DaprContainerFactory; import io.dapr.testcontainers.internal.DaprSidecarContainer; import io.dapr.testcontainers.internal.spring.DaprSpringBootTest; +import io.dapr.testcontainers.wait.strategy.DaprWait; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.testcontainers.containers.wait.strategy.Wait; import java.util.Map; import java.util.UUID; @@ -38,8 +38,6 @@ @Tag("testcontainers") public class DaprActorsIT { - private static final String ACTORS_MESSAGE_PATTERN = ".*Actor runtime started.*"; - @DaprSidecarContainer private static final DaprContainer DAPR_CONTAINER = DaprContainerFactory.createForSpringBootTest("actor-dapr-app") .withComponent(new Component("kvstore", "state.in-memory", "v1", @@ -57,9 +55,7 @@ public class DaprActorsIT { public void setUp() { org.testcontainers.Testcontainers.exposeHostPorts(DAPR_CONTAINER.getAppPort()); daprActorRuntime.registerActor(TestActorImpl.class); - - // Wait for actor runtime to start. - Wait.forLogMessage(ACTORS_MESSAGE_PATTERN, 1).waitUntilReady(DAPR_CONTAINER); + DaprWait.forActors().waitUntilReady(DAPR_CONTAINER); } @Test diff --git a/sdk-tests/src/test/java/io/dapr/it/testcontainers/pubsub/outbox/DaprPubSubOutboxIT.java b/sdk-tests/src/test/java/io/dapr/it/testcontainers/pubsub/outbox/DaprPubSubOutboxIT.java index 2aef82f14c..e740d87c20 100644 --- a/sdk-tests/src/test/java/io/dapr/it/testcontainers/pubsub/outbox/DaprPubSubOutboxIT.java +++ b/sdk-tests/src/test/java/io/dapr/it/testcontainers/pubsub/outbox/DaprPubSubOutboxIT.java @@ -21,11 +21,11 @@ import io.dapr.testcontainers.Component; import io.dapr.testcontainers.DaprContainer; import io.dapr.testcontainers.DaprLogLevel; +import io.dapr.testcontainers.wait.strategy.DaprWait; import org.assertj.core.api.Assertions; import org.awaitility.Awaitility; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.slf4j.Logger; @@ -35,7 +35,6 @@ import org.springframework.test.context.DynamicPropertyRegistry; import org.springframework.test.context.DynamicPropertySource; import org.testcontainers.containers.Network; -import org.testcontainers.containers.wait.strategy.Wait; import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; @@ -47,7 +46,6 @@ import static io.dapr.it.testcontainers.ContainerConstants.DAPR_RUNTIME_IMAGE_TAG; -@Disabled("Unclear why this test is failing intermittently in CI") @SpringBootTest( webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT, classes = { @@ -62,7 +60,6 @@ public class DaprPubSubOutboxIT { private static final Network DAPR_NETWORK = Network.newNetwork(); private static final Random RANDOM = new Random(); private static final int PORT = RANDOM.nextInt(1000) + 8000; - private static final String APP_FOUND_MESSAGE_PATTERN = ".*application discovered on port.*"; private static final String PUBSUB_APP_ID = "pubsub-dapr-app"; private static final String PUBSUB_NAME = "pubsub"; @@ -107,7 +104,7 @@ public static void beforeAll(){ @BeforeEach public void beforeEach() { - Wait.forLogMessage(APP_FOUND_MESSAGE_PATTERN, 1).waitUntilReady(DAPR_CONTAINER); + DaprWait.forSubscription(PUBSUB_NAME, TOPIC_PRODUCT_CREATED).waitUntilReady(DAPR_CONTAINER); } @Test diff --git a/spring-boot-examples/consumer-app/src/test/java/io/dapr/springboot/examples/consumer/ConsumerAppIT.java b/spring-boot-examples/consumer-app/src/test/java/io/dapr/springboot/examples/consumer/ConsumerAppIT.java index 5334f49520..155acf3ef2 100644 --- a/spring-boot-examples/consumer-app/src/test/java/io/dapr/springboot/examples/consumer/ConsumerAppIT.java +++ b/spring-boot-examples/consumer-app/src/test/java/io/dapr/springboot/examples/consumer/ConsumerAppIT.java @@ -17,6 +17,7 @@ import io.dapr.spring.messaging.DaprMessagingTemplate; import io.dapr.springboot.DaprAutoConfiguration; import io.dapr.testcontainers.DaprContainer; +import io.dapr.testcontainers.wait.strategy.DaprWait; import io.restassured.RestAssured; import io.restassured.http.ContentType; import org.junit.jupiter.api.BeforeAll; @@ -24,7 +25,6 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.testcontainers.containers.wait.strategy.Wait; import java.io.IOException; import java.time.Duration; @@ -39,8 +39,6 @@ webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT) class ConsumerAppIT { - private static final String SUBSCRIPTION_MESSAGE_PATTERN = ".*app is subscribed to the following topics.*"; - @Autowired private DaprMessagingTemplate messagingTemplate; @@ -61,7 +59,8 @@ public static void setup() { @BeforeEach void setUp() { RestAssured.baseURI = "http://localhost:" + 8081; - Wait.forLogMessage(SUBSCRIPTION_MESSAGE_PATTERN, 1).waitUntilReady(daprContainer); + + DaprWait.forSubscription("pubsub", "topic").waitUntilReady(daprContainer); } diff --git a/spring-boot-examples/producer-app/src/test/java/io/dapr/springboot/examples/producer/ProducerAppIT.java b/spring-boot-examples/producer-app/src/test/java/io/dapr/springboot/examples/producer/ProducerAppIT.java index a0c561b931..195fd032b5 100644 --- a/spring-boot-examples/producer-app/src/test/java/io/dapr/springboot/examples/producer/ProducerAppIT.java +++ b/spring-boot-examples/producer-app/src/test/java/io/dapr/springboot/examples/producer/ProducerAppIT.java @@ -19,6 +19,7 @@ import io.dapr.springboot.examples.producer.workflow.CustomerWorkflow; import io.dapr.springboot.examples.producer.workflow.RegisterCustomerActivity; import io.dapr.testcontainers.DaprContainer; +import io.dapr.testcontainers.wait.strategy.DaprWait; import io.restassured.RestAssured; import io.restassured.http.ContentType; import org.junit.jupiter.api.AfterEach; @@ -26,7 +27,6 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.testcontainers.containers.wait.strategy.Wait; import java.io.IOException; import java.time.Duration; @@ -43,8 +43,6 @@ webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT) class ProducerAppIT { - private static final String SUBSCRIPTION_MESSAGE_PATTERN = ".*app is subscribed to the following topics.*"; - @Autowired private TestSubscriberRestController controller; @@ -62,10 +60,9 @@ class ProducerAppIT { @BeforeEach void setUp() { RestAssured.baseURI = "http://localhost:" + 8080; - org.testcontainers.Testcontainers.exposeHostPorts(8080); - // Ensure the subscriptions are registered - Wait.forLogMessage(SUBSCRIPTION_MESSAGE_PATTERN, 1).waitUntilReady(daprContainer); + org.testcontainers.Testcontainers.exposeHostPorts(8080); + DaprWait.forSubscription("pubsub", "topic").waitUntilReady(daprContainer); } @AfterEach From 7fa73043c44de1e1447fba56ee654333a09679a0 Mon Sep 17 00:00:00 2001 From: Artur Ciocanu Date: Sat, 31 Jan 2026 19:51:02 -0800 Subject: [PATCH 2/4] Revert ConsumerAppIT to make tests pass. Signed-off-by: Artur Ciocanu --- .../io/dapr/springboot/examples/consumer/ConsumerAppIT.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/spring-boot-examples/consumer-app/src/test/java/io/dapr/springboot/examples/consumer/ConsumerAppIT.java b/spring-boot-examples/consumer-app/src/test/java/io/dapr/springboot/examples/consumer/ConsumerAppIT.java index 155acf3ef2..c502cc8b3b 100644 --- a/spring-boot-examples/consumer-app/src/test/java/io/dapr/springboot/examples/consumer/ConsumerAppIT.java +++ b/spring-boot-examples/consumer-app/src/test/java/io/dapr/springboot/examples/consumer/ConsumerAppIT.java @@ -17,8 +17,8 @@ import io.dapr.spring.messaging.DaprMessagingTemplate; import io.dapr.springboot.DaprAutoConfiguration; import io.dapr.testcontainers.DaprContainer; -import io.dapr.testcontainers.wait.strategy.DaprWait; import io.restassured.RestAssured; +import org.testcontainers.containers.wait.strategy.Wait; import io.restassured.http.ContentType; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; @@ -56,11 +56,13 @@ public static void setup() { org.testcontainers.Testcontainers.exposeHostPorts(8081); } + private static final String SUBSCRIPTION_MESSAGE_PATTERN = ".*app is subscribed to the following topics.*"; + @BeforeEach void setUp() { RestAssured.baseURI = "http://localhost:" + 8081; - DaprWait.forSubscription("pubsub", "topic").waitUntilReady(daprContainer); + Wait.forLogMessage(SUBSCRIPTION_MESSAGE_PATTERN, 1).waitUntilReady(daprContainer); } From 7182b37340b2b033911786ed7a20861afeb090f0 Mon Sep 17 00:00:00 2001 From: Artur Ciocanu Date: Sat, 31 Jan 2026 20:03:52 -0800 Subject: [PATCH 3/4] Revert ConsumerAppIT so there are no changes. Signed-off-by: Artur Ciocanu --- .../dapr/springboot/examples/consumer/ConsumerAppIT.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/spring-boot-examples/consumer-app/src/test/java/io/dapr/springboot/examples/consumer/ConsumerAppIT.java b/spring-boot-examples/consumer-app/src/test/java/io/dapr/springboot/examples/consumer/ConsumerAppIT.java index c502cc8b3b..5334f49520 100644 --- a/spring-boot-examples/consumer-app/src/test/java/io/dapr/springboot/examples/consumer/ConsumerAppIT.java +++ b/spring-boot-examples/consumer-app/src/test/java/io/dapr/springboot/examples/consumer/ConsumerAppIT.java @@ -18,13 +18,13 @@ import io.dapr.springboot.DaprAutoConfiguration; import io.dapr.testcontainers.DaprContainer; import io.restassured.RestAssured; -import org.testcontainers.containers.wait.strategy.Wait; import io.restassured.http.ContentType; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import org.testcontainers.containers.wait.strategy.Wait; import java.io.IOException; import java.time.Duration; @@ -39,6 +39,8 @@ webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT) class ConsumerAppIT { + private static final String SUBSCRIPTION_MESSAGE_PATTERN = ".*app is subscribed to the following topics.*"; + @Autowired private DaprMessagingTemplate messagingTemplate; @@ -56,12 +58,9 @@ public static void setup() { org.testcontainers.Testcontainers.exposeHostPorts(8081); } - private static final String SUBSCRIPTION_MESSAGE_PATTERN = ".*app is subscribed to the following topics.*"; - @BeforeEach void setUp() { RestAssured.baseURI = "http://localhost:" + 8081; - Wait.forLogMessage(SUBSCRIPTION_MESSAGE_PATTERN, 1).waitUntilReady(daprContainer); } From ace836a1cb350427cf033f6ad9ef72dd2eda5284 Mon Sep 17 00:00:00 2001 From: Artur Ciocanu Date: Sun, 1 Feb 2026 15:04:10 -0800 Subject: [PATCH 4/4] Disable the IT test for failing CI. Signed-off-by: Artur Ciocanu --- .../it/testcontainers/pubsub/outbox/DaprPubSubOutboxIT.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sdk-tests/src/test/java/io/dapr/it/testcontainers/pubsub/outbox/DaprPubSubOutboxIT.java b/sdk-tests/src/test/java/io/dapr/it/testcontainers/pubsub/outbox/DaprPubSubOutboxIT.java index e740d87c20..d4139bcf91 100644 --- a/sdk-tests/src/test/java/io/dapr/it/testcontainers/pubsub/outbox/DaprPubSubOutboxIT.java +++ b/sdk-tests/src/test/java/io/dapr/it/testcontainers/pubsub/outbox/DaprPubSubOutboxIT.java @@ -26,6 +26,7 @@ import org.awaitility.Awaitility; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.slf4j.Logger; @@ -46,6 +47,7 @@ import static io.dapr.it.testcontainers.ContainerConstants.DAPR_RUNTIME_IMAGE_TAG; +@Disabled("Unclear why this test is failing intermittently in CI") @SpringBootTest( webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT, classes = {