Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package org.testcontainers.containers;
- import org.testcontainers.containers.wait.LogMessageWaitStrategy;
- import java.time.Duration;
- import static java.time.temporal.ChronoUnit.SECONDS;
- /**
- * @author richardnorth
- */
- public class PostgreSQLContainer<SELF extends PostgreSQLContainer<SELF>> extends JdbcDatabaseContainer<SELF> {
- static final String NAME = "postgresql";
- static final String IMAGE = "postgres";
- public static final Integer POSTGRESQL_PORT = 5432;
- private String databaseName = "test";
- private String username = "test";
- private String password = "test";
- public PostgreSQLContainer() {
- this(IMAGE + ":latest");
- }
- public PostgreSQLContainer(final String dockerImageName) {
- super(dockerImageName);
- this.waitStrategy = new LogMessageWaitStrategy()
- .withRegEx(".*database system is ready to accept connections.*\\s")
- .withTimes(2)
- .withStartupTimeout(Duration.of(60, SECONDS));
- }
- @Override
- protected Integer getLivenessCheckPort() {
- return getMappedPort(POSTGRESQL_PORT);
- }
- @Override
- protected void configure() {
- addExposedPort(POSTGRESQL_PORT);
- addEnv("POSTGRES_DB", databaseName);
- addEnv("POSTGRES_USER", username);
- addEnv("POSTGRES_PASSWORD", password);
- setCommand("postgres");
- }
- @Override
- public String getDriverClassName() {
- return "org.postgresql.Driver";
- }
- @Override
- public String getJdbcUrl() {
- return "jdbc:postgresql://" + getContainerIpAddress() + ":" + getMappedPort(POSTGRESQL_PORT) + "/" + databaseName;
- }
- @Override
- public String getUsername() {
- return username;
- }
- @Override
- public String getPassword() {
- return password;
- }
- @Override
- public String getTestQueryString() {
- return "SELECT 1";
- }
- public SELF withDatabaseName(final String databaseName) {
- this.databaseName = databaseName;
- return self();
- }
- public SELF withUsername(final String username) {
- this.username = username;
- return self();
- }
- public SELF withPassword(final String password) {
- this.password = password;
- return self();
- }
- @Override
- protected void waitUntilContainerStarted() {
- getWaitStrategy().waitUntilReady(this);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement