diff --git a/pom.xml b/pom.xml index 0dfc817cee..95ddc18bd3 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.data spring-data-relational-parent - 2.1.0-SNAPSHOT + 2.1.0-DATAJDBC-573-SNAPSHOT pom Spring Data Relational Parent diff --git a/spring-data-jdbc-distribution/pom.xml b/spring-data-jdbc-distribution/pom.xml index d38dbf88d5..3a5aeeedb1 100644 --- a/spring-data-jdbc-distribution/pom.xml +++ b/spring-data-jdbc-distribution/pom.xml @@ -14,7 +14,7 @@ org.springframework.data spring-data-relational-parent - 2.1.0-SNAPSHOT + 2.1.0-DATAJDBC-573-SNAPSHOT ../pom.xml diff --git a/spring-data-jdbc/pom.xml b/spring-data-jdbc/pom.xml index 6ebeb3c553..f9803d4a90 100644 --- a/spring-data-jdbc/pom.xml +++ b/spring-data-jdbc/pom.xml @@ -6,7 +6,7 @@ 4.0.0 spring-data-jdbc - 2.1.0-SNAPSHOT + 2.1.0-DATAJDBC-573-SNAPSHOT Spring Data JDBC Spring Data module for JDBC repositories. @@ -15,7 +15,7 @@ org.springframework.data spring-data-relational-parent - 2.1.0-SNAPSHOT + 2.1.0-DATAJDBC-573-SNAPSHOT diff --git a/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/testing/DataSourceConfiguration.java b/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/testing/DataSourceConfiguration.java index ac5cff1cad..16730614d2 100644 --- a/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/testing/DataSourceConfiguration.java +++ b/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/testing/DataSourceConfiguration.java @@ -17,15 +17,24 @@ import javax.sql.DataSource; +import org.awaitility.Awaitility; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.Environment; import org.springframework.core.io.ClassPathResource; +import org.springframework.jdbc.datasource.DriverManagerDataSource; import org.springframework.jdbc.datasource.init.DataSourceInitializer; import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator; +import java.sql.Connection; +import java.util.concurrent.TimeUnit; + +import static org.awaitility.pollinterval.FibonacciPollInterval.*; + /** * Basic configuration expecting subclasses to provide a {@link DataSource} via {@link #createDataSource()} to be * exposed to the {@link ApplicationContext}. @@ -36,12 +45,17 @@ @Configuration abstract class DataSourceConfiguration { + private static final Logger LOG = LoggerFactory.getLogger(DataSourceConfiguration.class); + + @Autowired Class testClass; @Autowired Environment environment; @Bean DataSource dataSource() { - return createDataSource(); + DataSource dataSource = createDataSource(); + verifyConnection(dataSource); + return dataSource; } @Bean @@ -76,4 +90,21 @@ DataSourceInitializer initializer() { * @param populator will never be {@literal null}. */ protected void customizePopulator(ResourceDatabasePopulator populator) {} + + private void verifyConnection(DataSource dataSource) { + + Awaitility.await() // + .atMost(5L, TimeUnit.MINUTES) // + .pollInterval(fibonacci(TimeUnit.SECONDS)) // + .ignoreExceptions() // + .until(() -> { + + LOG.debug("connectivity verifying ..."); + try (Connection connection = dataSource.getConnection()) { + return true; + } + }); + + LOG.info("connectivity verified"); + } } diff --git a/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/testing/Db2DataSourceConfiguration.java b/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/testing/Db2DataSourceConfiguration.java index 3dfa0d2de8..28914b7d7d 100644 --- a/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/testing/Db2DataSourceConfiguration.java +++ b/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/testing/Db2DataSourceConfiguration.java @@ -32,6 +32,8 @@ import org.testcontainers.containers.Db2Container; +import static org.awaitility.pollinterval.FibonacciPollInterval.*; + /** * {@link DataSource} setup for DB2. * @@ -66,18 +68,6 @@ protected DataSource createDataSource() { DriverManagerDataSource dataSource = new DriverManagerDataSource(DB_2_CONTAINER.getJdbcUrl(), DB_2_CONTAINER.getUsername(), DB_2_CONTAINER.getPassword()); - // DB2 container says its ready but it's like with a cat that denies service and still wants food although it had - // its food. Therefore, we make sure that we can properly establish a connection instead of trusting the cat - // ...err... DB2. - Awaitility.await().ignoreException(SQLException.class).until(() -> { - - try (Connection connection = dataSource.getConnection()) { - return true; - } - }); - - LOG.info("DB2 connectivity verified"); - return dataSource; } diff --git a/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/testing/OracleDataSourceConfiguration.java b/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/testing/OracleDataSourceConfiguration.java index 83d19536f8..001f088dea 100644 --- a/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/testing/OracleDataSourceConfiguration.java +++ b/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/testing/OracleDataSourceConfiguration.java @@ -15,23 +15,14 @@ */ package org.springframework.data.jdbc.testing; -import static org.awaitility.pollinterval.FibonacciPollInterval.*; - -import java.sql.Connection; -import java.sql.SQLException; -import java.util.concurrent.TimeUnit; - import javax.sql.DataSource; -import org.awaitility.Awaitility; import org.slf4j.Logger; import org.slf4j.LoggerFactory; - import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; import org.springframework.jdbc.datasource.DriverManagerDataSource; import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator; - import org.testcontainers.containers.OracleContainer; /** @@ -61,8 +52,10 @@ protected DataSource createDataSource() { if (ORACLE_CONTAINER == null) { + LOG.info("Oracle starting..."); OracleContainer container = new OracleContainer("springci/spring-data-oracle-xe-prebuild:18.4.0").withReuse(true); container.start(); + LOG.info("Oracle started"); ORACLE_CONTAINER = container; } @@ -72,17 +65,6 @@ protected DataSource createDataSource() { DataSource dataSource = new DriverManagerDataSource(jdbcUrl, ORACLE_CONTAINER.getUsername(), ORACLE_CONTAINER.getPassword()); - // Oracle container says its ready but it's like with a cat that denies service and still wants food although it had - // its food. Therefore, we make sure that we can properly establish a connection instead of trusting the cat - // ...err... Oracle. - Awaitility.await().atMost(5L, TimeUnit.MINUTES).pollInterval(fibonacci(TimeUnit.SECONDS)) - .ignoreException(SQLException.class).until(() -> { - - try (Connection connection = dataSource.getConnection()) { - return true; - } - }); - return dataSource; } diff --git a/spring-data-relational/pom.xml b/spring-data-relational/pom.xml index 5ff3aef680..2220877d61 100644 --- a/spring-data-relational/pom.xml +++ b/spring-data-relational/pom.xml @@ -6,7 +6,7 @@ 4.0.0 spring-data-relational - 2.1.0-SNAPSHOT + 2.1.0-DATAJDBC-573-SNAPSHOT Spring Data Relational Spring Data Relational support @@ -14,7 +14,7 @@ org.springframework.data spring-data-relational-parent - 2.1.0-SNAPSHOT + 2.1.0-DATAJDBC-573-SNAPSHOT