From 52e35c8697be1f26d8ada787ad59225e3fd95187 Mon Sep 17 00:00:00 2001 From: salaboy Date: Fri, 28 Feb 2025 10:06:11 +0000 Subject: [PATCH] using awaitability to wait for placement --- .../it/testcontainers/DaprContainerIT.java | 33 +++++++++++++++---- 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/sdk-tests/src/test/java/io/dapr/it/testcontainers/DaprContainerIT.java b/sdk-tests/src/test/java/io/dapr/it/testcontainers/DaprContainerIT.java index bd33f9e47..ef9ee7787 100644 --- a/sdk-tests/src/test/java/io/dapr/it/testcontainers/DaprContainerIT.java +++ b/sdk-tests/src/test/java/io/dapr/it/testcontainers/DaprContainerIT.java @@ -30,9 +30,12 @@ import org.testcontainers.containers.wait.strategy.Wait; import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; +import static org.testcontainers.shaded.org.awaitility.Awaitility.await; +import org.testcontainers.shaded.org.awaitility.core.ConditionTimeoutException; import java.io.IOException; import java.util.Map; +import java.util.concurrent.TimeUnit; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; import static com.github.tomakehurst.wiremock.client.WireMock.any; @@ -48,6 +51,8 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.fail; + @Testcontainers @WireMockTest(httpPort = 8081) @@ -60,7 +65,6 @@ public class DaprContainerIT { private static final String KEY = "my-key"; private static final String PUBSUB_NAME = "pubsub"; private static final String PUBSUB_TOPIC_NAME = "topic"; - private static final String DAPR_INIT_RUNNING_MESSAGE_PATTERN = ".*Placement tables updated.*"; @Container private static final DaprContainer DAPR_CONTAINER = new DaprContainer("daprio/daprd") @@ -127,17 +131,34 @@ public void testStateStore() throws Exception { @Test public void testPlacement() throws Exception { - Wait.forLogMessage(DAPR_INIT_RUNNING_MESSAGE_PATTERN, 1).waitUntilReady(DAPR_CONTAINER); + try { + await().atMost(4, TimeUnit.SECONDS) + .pollDelay(400, TimeUnit.MILLISECONDS) + .pollInterval(400, TimeUnit.MILLISECONDS) + .until(() -> { + String metadata = checkSideCarMetadata(); + if (metadata.contains("placement: connected")) { + return true; + } else { + return false; + } + }); + } catch (ConditionTimeoutException timeoutException) { + fail("The placement server is not connected"); + } + + } + private String checkSideCarMetadata() throws IOException { OkHttpClient okHttpClient = new OkHttpClient.Builder() - .build(); + .build(); Request request = new Request.Builder() - .url(DAPR_CONTAINER.getHttpEndpoint() + "/v1.0/metadata") - .build(); + .url(DAPR_CONTAINER.getHttpEndpoint() + "/v1.0/metadata") + .build(); try (Response response = okHttpClient.newCall(request).execute()) { if (response.isSuccessful() && response.body() != null) { - assertTrue(response.body().string().contains("placement: connected")); + return response.body().string(); } else { throw new IOException("Unexpected response: " + response.code()); }