Skip to content

Commit

Permalink
Fixes quarkusio#25682 postgres devservice not working with rancher-de…
Browse files Browse the repository at this point in the history
…sktop on mac arm architecture
  • Loading branch information
bpasson committed Mar 25, 2024
1 parent e7f2a1e commit a6294f9
Showing 1 changed file with 12 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
import org.jboss.logging.Logger;
import org.testcontainers.containers.PostgreSQLContainer;
import org.testcontainers.containers.wait.strategy.LogMessageWaitStrategy;
import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.containers.wait.strategy.WaitAllStrategy;
import org.testcontainers.utility.DockerImageName;

import io.quarkus.datasource.common.runtime.DataSourceUtil;
Expand Down Expand Up @@ -99,16 +101,23 @@ public QuarkusPostgreSQLContainer(Optional<String> imageName, OptionalInt fixedE
super(DockerImageName
.parse(imageName.orElseGet(() -> ConfigureUtil.getDefaultImageNameFor("postgresql")))
.asCompatibleSubstituteFor(DockerImageName.parse(PostgreSQLContainer.IMAGE)));

this.fixedExposedPort = fixedExposedPort;
this.useSharedNetwork = useSharedNetwork;

// Workaround for https://github.com/testcontainers/testcontainers-java/issues/4799.
// The motivation of this custom wait strategy is that Testcontainers fails to start a Postgresql database when it
// has been already initialized.
// This custom wait strategy will work fine regardless of the state of the Postgresql database.
// More information in the issue ticket in Testcontainers.
this.waitStrategy = new LogMessageWaitStrategy()
.withRegEx("(" + READY_REGEX + ")?(" + SKIPPING_INITIALIZATION_REGEX + ")?")
.withTimes(2)

// Added Wait.forListeningPort() for https://github.com/quarkusio/quarkus/issues/25682
// as suggested by https://github.com/testcontainers/testcontainers-java/pull/6309
this.waitStrategy = new WaitAllStrategy()
.withStrategy(new LogMessageWaitStrategy()
.withRegEx("(" + READY_REGEX + ")?(" + SKIPPING_INITIALIZATION_REGEX + ")?")
.withTimes(2))
.withStrategy(Wait.forListeningPort())
.withStartupTimeout(Duration.of(60L, ChronoUnit.SECONDS));
}

Expand Down

0 comments on commit a6294f9

Please sign in to comment.