From 1f52fd222881fdb15427dcd0bfdcc5c3cdc9fad1 Mon Sep 17 00:00:00 2001 From: salaboy Date: Tue, 22 Jul 2025 09:12:38 +0100 Subject: [PATCH 1/5] adding app health check parameters Signed-off-by: salaboy --- .../io/dapr/testcontainers/DaprContainer.java | 44 +++++++++++++++++++ .../testcontainers/DaprContainerTest.java | 28 +++++++++++- 2 files changed, 71 insertions(+), 1 deletion(-) diff --git a/testcontainers-dapr/src/main/java/io/dapr/testcontainers/DaprContainer.java b/testcontainers-dapr/src/main/java/io/dapr/testcontainers/DaprContainer.java index 3ed80f0a29..fbce6234d0 100644 --- a/testcontainers-dapr/src/main/java/io/dapr/testcontainers/DaprContainer.java +++ b/testcontainers-dapr/src/main/java/io/dapr/testcontainers/DaprContainer.java @@ -77,6 +77,9 @@ public class DaprContainer extends GenericContainer { private String appName; private Integer appPort; private String appHealthCheckPath; + private Integer appHealthCheckProbeInterval = 5; //default from docs + private Integer appHealthCheckProbeTimeout = 500; //default from docs + private Integer appHealthCheckThreshold = 3; //default from docs private boolean shouldReusePlacement; private boolean shouldReuseScheduler; @@ -133,6 +136,21 @@ public DaprContainer withAppHealthCheckPath(String appHealthCheckPath) { return this; } + public DaprContainer withAppHealthCheckProbeInterval(Integer appHealthCheckProbeInterval) { + this.appHealthCheckProbeInterval = appHealthCheckProbeInterval; + return this; + } + + public DaprContainer withAppHealthCheckProbeTimeout(Integer appHealthCheckProbeTimeout){ + this.appHealthCheckProbeTimeout = appHealthCheckProbeTimeout; + return this; + } + + public DaprContainer withAppHealthCheckThreshold(Integer appHealthCheckThreshold ){ + this.appHealthCheckThreshold = appHealthCheckThreshold; + return this; + } + public DaprContainer withConfiguration(Configuration configuration) { this.configuration = configuration; return this; @@ -311,6 +329,16 @@ protected void configure() { cmds.add("--enable-app-health-check"); cmds.add("--app-health-check-path"); cmds.add(appHealthCheckPath); + + cmds.add("--app-health-probe-interval"); + cmds.add(Integer.toString(appHealthCheckProbeInterval)); + + cmds.add("--app-health-probe-timeout"); + cmds.add(Integer.toString(appHealthCheckProbeTimeout)); + + cmds.add("--app-health-threshold"); + cmds.add(Integer.toString(appHealthCheckThreshold)); + } if (configuration != null) { @@ -385,6 +413,22 @@ public Integer getAppPort() { return appPort; } + public String getAppHealthCheckPath() { + return appHealthCheckPath; + } + + public Integer getAppHealthCheckProbeInterval() { + return appHealthCheckProbeInterval; + } + + public Integer getAppHealthCheckProbeTimeout() { + return appHealthCheckProbeTimeout; + } + + public Integer getAppHealthCheckThreshold() { + return appHealthCheckThreshold; + } + public String getAppChannelAddress() { return appChannelAddress; } diff --git a/testcontainers-dapr/src/test/java/io/dapr/testcontainers/DaprContainerTest.java b/testcontainers-dapr/src/test/java/io/dapr/testcontainers/DaprContainerTest.java index 87cfeda6e9..4636c65477 100644 --- a/testcontainers-dapr/src/test/java/io/dapr/testcontainers/DaprContainerTest.java +++ b/testcontainers-dapr/src/test/java/io/dapr/testcontainers/DaprContainerTest.java @@ -5,7 +5,7 @@ import static io.dapr.testcontainers.DaprContainerConstants.DAPR_RUNTIME_IMAGE_TAG; import static io.dapr.testcontainers.DaprContainerConstants.DAPR_VERSION; -import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.*; public class DaprContainerTest { @@ -44,4 +44,30 @@ public void schedulerAndPlacementCustomImagesStringTest() { assertEquals("daprio/scheduler:" + DAPR_VERSION, dapr.getSchedulerDockerImageName().asCanonicalNameString()); } + + @Test + public void appHealthParametersTest(){ + DaprContainer dapr = new DaprContainer(DAPR_RUNTIME_IMAGE_TAG) + .withAppName("dapr-app") + .withAppPort(8081) + .withAppHealthCheckProbeInterval(10) + .withAppHealthCheckProbeTimeout(600) + .withAppHealthCheckThreshold(7); + + assertEquals(10, dapr.getAppHealthCheckProbeInterval()); + assertEquals(600, dapr.getAppHealthCheckProbeTimeout()); + assertEquals(7, dapr.getAppHealthCheckThreshold()); + + + //Check that the defaults are set by default + DaprContainer dapr2 = new DaprContainer(DAPR_RUNTIME_IMAGE_TAG) + .withAppName("dapr2-app") + .withAppPort(8082); + + assertEquals(5, dapr2.getAppHealthCheckProbeInterval()); + assertEquals(500, dapr2.getAppHealthCheckProbeTimeout()); + assertEquals(3, dapr2.getAppHealthCheckThreshold()); + + + } } From bbfd258553550ca3afe3101dc060c64c4dc22a09 Mon Sep 17 00:00:00 2001 From: salaboy Date: Tue, 22 Jul 2025 09:26:21 +0100 Subject: [PATCH 2/5] fixing style Signed-off-by: salaboy --- .../src/main/java/io/dapr/testcontainers/DaprContainer.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/testcontainers-dapr/src/main/java/io/dapr/testcontainers/DaprContainer.java b/testcontainers-dapr/src/main/java/io/dapr/testcontainers/DaprContainer.java index fbce6234d0..a743745f0d 100644 --- a/testcontainers-dapr/src/main/java/io/dapr/testcontainers/DaprContainer.java +++ b/testcontainers-dapr/src/main/java/io/dapr/testcontainers/DaprContainer.java @@ -141,12 +141,12 @@ public DaprContainer withAppHealthCheckProbeInterval(Integer appHealthCheckProbe return this; } - public DaprContainer withAppHealthCheckProbeTimeout(Integer appHealthCheckProbeTimeout){ + public DaprContainer withAppHealthCheckProbeTimeout(Integer appHealthCheckProbeTimeout) { this.appHealthCheckProbeTimeout = appHealthCheckProbeTimeout; return this; } - public DaprContainer withAppHealthCheckThreshold(Integer appHealthCheckThreshold ){ + public DaprContainer withAppHealthCheckThreshold(Integer appHealthCheckThreshold) { this.appHealthCheckThreshold = appHealthCheckThreshold; return this; } From a19d2207c600288ca764925c32f7b0dbda7f0060 Mon Sep 17 00:00:00 2001 From: salaboy Date: Tue, 22 Jul 2025 10:47:32 +0100 Subject: [PATCH 3/5] testing with configure for coverage Signed-off-by: salaboy --- .../java/io/dapr/testcontainers/DaprContainerTest.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/testcontainers-dapr/src/test/java/io/dapr/testcontainers/DaprContainerTest.java b/testcontainers-dapr/src/test/java/io/dapr/testcontainers/DaprContainerTest.java index 4636c65477..e3f08ec604 100644 --- a/testcontainers-dapr/src/test/java/io/dapr/testcontainers/DaprContainerTest.java +++ b/testcontainers-dapr/src/test/java/io/dapr/testcontainers/DaprContainerTest.java @@ -50,13 +50,17 @@ public void appHealthParametersTest(){ DaprContainer dapr = new DaprContainer(DAPR_RUNTIME_IMAGE_TAG) .withAppName("dapr-app") .withAppPort(8081) + .withAppHealthCheckPath("/test") .withAppHealthCheckProbeInterval(10) .withAppHealthCheckProbeTimeout(600) .withAppHealthCheckThreshold(7); + dapr.configure(); + assertEquals(10, dapr.getAppHealthCheckProbeInterval()); assertEquals(600, dapr.getAppHealthCheckProbeTimeout()); assertEquals(7, dapr.getAppHealthCheckThreshold()); + assertEquals("/test", dapr.getAppHealthCheckPath()); //Check that the defaults are set by default @@ -64,10 +68,13 @@ public void appHealthParametersTest(){ .withAppName("dapr2-app") .withAppPort(8082); + dapr2.configure(); + assertEquals(5, dapr2.getAppHealthCheckProbeInterval()); assertEquals(500, dapr2.getAppHealthCheckProbeTimeout()); assertEquals(3, dapr2.getAppHealthCheckThreshold()); + } } From dd581e465c63d07e896bcef884f7018bbc9ba82c Mon Sep 17 00:00:00 2001 From: salaboy Date: Tue, 22 Jul 2025 13:00:49 +0100 Subject: [PATCH 4/5] updating sched api on DaprContainer (#1462) Signed-off-by: salaboy --- .../springboot/examples/consumer/DaprTestContainersConfig.java | 1 + .../src/main/java/io/dapr/testcontainers/DaprContainer.java | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/spring-boot-examples/consumer-app/src/test/java/io/dapr/springboot/examples/consumer/DaprTestContainersConfig.java b/spring-boot-examples/consumer-app/src/test/java/io/dapr/springboot/examples/consumer/DaprTestContainersConfig.java index 9afafae26c..fb3d6b5479 100644 --- a/spring-boot-examples/consumer-app/src/test/java/io/dapr/springboot/examples/consumer/DaprTestContainersConfig.java +++ b/spring-boot-examples/consumer-app/src/test/java/io/dapr/springboot/examples/consumer/DaprTestContainersConfig.java @@ -97,6 +97,7 @@ public DaprContainer daprContainer(Network daprNetwork, RabbitMQContainer rabbit .withLogConsumer(outputFrame -> System.out.println(outputFrame.getUtf8String())) .withAppPort(8081).withAppChannelAddress("host.testcontainers.internal") .withReusablePlacement(reuse) + .withReusableScheduler(reuse) .withAppHealthCheckPath("/actuator/health") .dependsOn(rabbitMQContainer); } diff --git a/testcontainers-dapr/src/main/java/io/dapr/testcontainers/DaprContainer.java b/testcontainers-dapr/src/main/java/io/dapr/testcontainers/DaprContainer.java index a743745f0d..51dce6f076 100644 --- a/testcontainers-dapr/src/main/java/io/dapr/testcontainers/DaprContainer.java +++ b/testcontainers-dapr/src/main/java/io/dapr/testcontainers/DaprContainer.java @@ -211,7 +211,7 @@ public DaprContainer withReusablePlacement(boolean shouldReusePlacement) { return this; } - public DaprContainer withReuseScheduler(boolean shouldReuseScheduler) { + public DaprContainer withReusableScheduler(boolean shouldReuseScheduler) { this.shouldReuseScheduler = shouldReuseScheduler; return this; } From 485fca93f0efcbb3c90b35e526c0f337d3d20350 Mon Sep 17 00:00:00 2001 From: salaboy Date: Tue, 22 Jul 2025 14:04:18 +0100 Subject: [PATCH 5/5] fix Artur comments Signed-off-by: salaboy --- .../java/io/dapr/testcontainers/DaprContainerTest.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/testcontainers-dapr/src/test/java/io/dapr/testcontainers/DaprContainerTest.java b/testcontainers-dapr/src/test/java/io/dapr/testcontainers/DaprContainerTest.java index e3f08ec604..c930e98511 100644 --- a/testcontainers-dapr/src/test/java/io/dapr/testcontainers/DaprContainerTest.java +++ b/testcontainers-dapr/src/test/java/io/dapr/testcontainers/DaprContainerTest.java @@ -5,7 +5,7 @@ import static io.dapr.testcontainers.DaprContainerConstants.DAPR_RUNTIME_IMAGE_TAG; import static io.dapr.testcontainers.DaprContainerConstants.DAPR_VERSION; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; public class DaprContainerTest { @@ -62,7 +62,10 @@ public void appHealthParametersTest(){ assertEquals(7, dapr.getAppHealthCheckThreshold()); assertEquals("/test", dapr.getAppHealthCheckPath()); + } + @Test + public void appHealthParametersDefaultsTest(){ //Check that the defaults are set by default DaprContainer dapr2 = new DaprContainer(DAPR_RUNTIME_IMAGE_TAG) .withAppName("dapr2-app") @@ -74,7 +77,5 @@ public void appHealthParametersTest(){ assertEquals(500, dapr2.getAppHealthCheckProbeTimeout()); assertEquals(3, dapr2.getAppHealthCheckThreshold()); - - } }