Advertisement
Guest User

Untitled

a guest
Oct 12th, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.43 KB | None | 0 0
  1. package org.testcontainers.containers;
  2.  
  3. import org.testcontainers.containers.wait.LogMessageWaitStrategy;
  4.  
  5. import java.time.Duration;
  6.  
  7. import static java.time.temporal.ChronoUnit.SECONDS;
  8.  
  9. /**
  10. * @author richardnorth
  11. */
  12. public class PostgreSQLContainer<SELF extends PostgreSQLContainer<SELF>> extends JdbcDatabaseContainer<SELF> {
  13. static final String NAME = "postgresql";
  14. static final String IMAGE = "postgres";
  15. public static final Integer POSTGRESQL_PORT = 5432;
  16. private String databaseName = "test";
  17. private String username = "test";
  18. private String password = "test";
  19.  
  20. public PostgreSQLContainer() {
  21. this(IMAGE + ":latest");
  22. }
  23.  
  24. public PostgreSQLContainer(final String dockerImageName) {
  25. super(dockerImageName);
  26. this.waitStrategy = new LogMessageWaitStrategy()
  27. .withRegEx(".*database system is ready to accept connections.*\\s")
  28. .withTimes(2)
  29. .withStartupTimeout(Duration.of(60, SECONDS));
  30. }
  31.  
  32. @Override
  33. protected Integer getLivenessCheckPort() {
  34. return getMappedPort(POSTGRESQL_PORT);
  35. }
  36.  
  37. @Override
  38. protected void configure() {
  39.  
  40. addExposedPort(POSTGRESQL_PORT);
  41. addEnv("POSTGRES_DB", databaseName);
  42. addEnv("POSTGRES_USER", username);
  43. addEnv("POSTGRES_PASSWORD", password);
  44. setCommand("postgres");
  45. }
  46.  
  47. @Override
  48. public String getDriverClassName() {
  49. return "org.postgresql.Driver";
  50. }
  51.  
  52. @Override
  53. public String getJdbcUrl() {
  54. return "jdbc:postgresql://" + getContainerIpAddress() + ":" + getMappedPort(POSTGRESQL_PORT) + "/" + databaseName;
  55. }
  56.  
  57. @Override
  58. public String getUsername() {
  59. return username;
  60. }
  61.  
  62. @Override
  63. public String getPassword() {
  64. return password;
  65. }
  66.  
  67. @Override
  68. public String getTestQueryString() {
  69. return "SELECT 1";
  70. }
  71.  
  72. public SELF withDatabaseName(final String databaseName) {
  73. this.databaseName = databaseName;
  74. return self();
  75. }
  76.  
  77. public SELF withUsername(final String username) {
  78. this.username = username;
  79. return self();
  80. }
  81.  
  82. public SELF withPassword(final String password) {
  83. this.password = password;
  84. return self();
  85. }
  86.  
  87. @Override
  88. protected void waitUntilContainerStarted() {
  89. getWaitStrategy().waitUntilReady(this);
  90. }
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement