Skip to content

Commit 75c66de

Browse files
committed
Add custom timeouts as container performance can differ based on system
Signed-off-by: Kyle Aure <[email protected]>
1 parent 097c76c commit 75c66de

File tree

5 files changed

+42
-5
lines changed

5 files changed

+42
-5
lines changed

README.md

+6
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,12 @@ mvn clean install
5656

5757
NOTE: The first run will take longer due to downloading required container layers. Subsequent runs will be faster.
5858

59+
NOTE: If a container is consistantly timing out on your system you can set a longer timeout (in seconds) with the system property
60+
`microshed.testing.startup.timeout` default value is 60 seconds.
61+
62+
NOTE: If a mockserver has started, but HTTP calls are consistantly timint out on your system you can set a longer timeout (in milliseconds)
63+
with the system property `mockserver.maxSocketTimeout` default value is 120000 milliseconds.
64+
5965
### Tested with:
6066
- OpenLiberty
6167
- Wildfly

sample-apps/everything-app/src/test/java/org/example/app/AppContainerConfig.java

+12-2
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
*/
1919
package org.example.app;
2020

21+
import java.time.Duration;
22+
2123
import org.microshed.testing.SharedContainerConfiguration;
2224
import org.microshed.testing.testcontainers.ApplicationContainer;
2325
import org.testcontainers.containers.GenericContainer;
@@ -27,6 +29,12 @@
2729

2830
public class AppContainerConfig implements SharedContainerConfiguration {
2931

32+
public static final Duration TIMEOUT = Duration.ofSeconds(
33+
Long.parseLong(
34+
System.getProperty("microshed.testing.startup.timeout", "60")
35+
)
36+
);
37+
3038
@Container
3139
public static ApplicationContainer app = new ApplicationContainer()
3240
.withAppContextRoot("/myservice")
@@ -40,11 +48,13 @@ public class AppContainerConfig implements SharedContainerConfiguration {
4048

4149
@Container
4250
public static MockServerContainer mockServer = new MockServerContainer(MOCK_SERVER_IMAGE_NAME)
43-
.withNetworkAliases("mockserver");
51+
.withNetworkAliases("mockserver")
52+
.withStartupTimeout(TIMEOUT);
4453

4554
@Container
4655
public static GenericContainer<?> mongo = new GenericContainer<>("mongo:3.4")
47-
.withNetworkAliases("testmongo");
56+
.withNetworkAliases("testmongo")
57+
.withStartupTimeout(TIMEOUT);
4858

4959
@Override
5060
public void startContainers() {

sample-apps/everything-jakarta-app/src/test/java/org/example/app/AppContainerConfig.java

+12-2
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
*/
1919
package org.example.app;
2020

21+
import java.time.Duration;
22+
2123
import org.microshed.testing.SharedContainerConfiguration;
2224
import org.microshed.testing.testcontainers.ApplicationContainer;
2325
import org.testcontainers.containers.GenericContainer;
@@ -27,6 +29,12 @@
2729

2830
public class AppContainerConfig implements SharedContainerConfiguration {
2931

32+
public static final Duration TIMEOUT = Duration.ofSeconds(
33+
Long.parseLong(
34+
System.getProperty("microshed.testing.startup.timeout", "60")
35+
)
36+
);
37+
3038
@Container
3139
public static ApplicationContainer app = new ApplicationContainer()
3240
.withAppContextRoot("/myservice")
@@ -40,11 +48,13 @@ public class AppContainerConfig implements SharedContainerConfiguration {
4048

4149
@Container
4250
public static MockServerContainer mockServer = new MockServerContainer(MOCK_SERVER_IMAGE_NAME)
43-
.withNetworkAliases("mockserver");
51+
.withNetworkAliases("mockserver")
52+
.withStartupTimeout(TIMEOUT);
4453

4554
@Container
4655
public static GenericContainer<?> mongo = new GenericContainer<>("mongo:3.4")
47-
.withNetworkAliases("testmongo");
56+
.withNetworkAliases("testmongo")
57+
.withStartupTimeout(TIMEOUT);
4858

4959
@Override
5060
public void startContainers() {

sample-apps/kafka-app/src/test/java/org/example/app/AppContainerConfig.java

+10-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
*/
1919
package org.example.app;
2020

21+
import java.time.Duration;
22+
2123
import org.microshed.testing.SharedContainerConfiguration;
2224
import org.microshed.testing.testcontainers.ApplicationContainer;
2325
import org.testcontainers.containers.KafkaContainer;
@@ -27,6 +29,12 @@
2729

2830
public class AppContainerConfig implements SharedContainerConfiguration {
2931

32+
public static final Duration TIMEOUT = Duration.ofSeconds(
33+
Long.parseLong(
34+
System.getProperty("microshed.testing.startup.timeout", "60")
35+
)
36+
);
37+
3038
private static Network network = Network.newNetwork();
3139

3240
private static final DockerImageName KAFKA_IMAGE_NAME =
@@ -35,7 +43,8 @@ public class AppContainerConfig implements SharedContainerConfiguration {
3543
@Container
3644
public static KafkaContainer kafka = new KafkaContainer(KAFKA_IMAGE_NAME)
3745
.withNetworkAliases("kafka")
38-
.withNetwork(network);
46+
.withNetwork(network)
47+
.withStartupTimeout(TIMEOUT);
3948

4049
@Container
4150
public static ApplicationContainer app = new ApplicationContainer()

sample-apps/quarkus-app/src/test/java/org/example/app/it/QuarkusTestEnvironment.java

+2
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
*/
1919
package org.example.app.it;
2020

21+
import java.time.Duration;
22+
2123
import org.microshed.testing.SharedContainerConfiguration;
2224
import org.testcontainers.containers.GenericContainer;
2325
import org.testcontainers.containers.PostgreSQLContainer;

0 commit comments

Comments
 (0)