Skip to content

Commit

Permalink
Change PostgreSQLContainer to use WaitingConsumer for waiting instead…
Browse files Browse the repository at this point in the history
… of SQL query (testcontainers#317)

Fix testcontainers#317
  • Loading branch information
Kevin Wittek committed Apr 12, 2017
1 parent 7f9ccb1 commit d1de096
Showing 1 changed file with 26 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
package org.testcontainers.containers;

import org.testcontainers.containers.output.OutputFrame;
import org.testcontainers.containers.output.WaitingConsumer;

import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import java.util.function.Predicate;

/**
* @author richardnorth
*/
Expand Down Expand Up @@ -73,4 +80,23 @@ public SELF withPassword(final String password) {
this.password = password;
return self();
}

@Override
protected void waitUntilContainerStarted() {
String regEx = ".*database system is ready to accept connections.*\\s";
logger().info("Waiting for database to log '{}'", regEx);

WaitingConsumer waitingConsumer = new WaitingConsumer();
this.followOutput(waitingConsumer);


Predicate<OutputFrame> waitPredicate = outputFrame ->
outputFrame.getUtf8String().matches(regEx);

try {
waitingConsumer.waitUntil(waitPredicate, 120, TimeUnit.SECONDS, 2);
} catch (TimeoutException e) {
throw new ContainerLaunchException("Timed out waiting for log output matching '" + regEx + "'");
}
}
}

0 comments on commit d1de096

Please sign in to comment.