From 6a39b497ad898f431bedf7aa5fdc78e9e675e1a6 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Thu, 4 May 2023 17:05:20 +0100 Subject: [PATCH] Make Oracle Docker Compose integration tests more robust Closes gh-35285 --- .../spring-boot-docker-compose/build.gradle | 9 +++++---- ...eConnectionDetailsFactoryIntegrationTests.java | 10 +++++++--- ...eConnectionDetailsFactoryIntegrationTests.java | 15 +++++++++------ 3 files changed, 21 insertions(+), 13 deletions(-) diff --git a/spring-boot-project/spring-boot-docker-compose/build.gradle b/spring-boot-project/spring-boot-docker-compose/build.gradle index fa33f0f806..371a0d2073 100644 --- a/spring-boot-project/spring-boot-docker-compose/build.gradle +++ b/spring-boot-project/spring-boot-docker-compose/build.gradle @@ -22,12 +22,13 @@ dependencies { testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support")) testImplementation(project(":spring-boot-project:spring-boot-test")) + testImplementation("ch.qos.logback:logback-classic") + testImplementation("org.assertj:assertj-core") + testImplementation("org.awaitility:awaitility") + testImplementation("org.junit.jupiter:junit-jupiter") + testImplementation("org.mockito:mockito-core") testImplementation("org.springframework:spring-core-test") testImplementation("org.springframework:spring-test") - testImplementation("org.assertj:assertj-core") - testImplementation("org.mockito:mockito-core") - testImplementation("ch.qos.logback:logback-classic") - testImplementation("org.junit.jupiter:junit-jupiter") testRuntimeOnly("com.microsoft.sqlserver:mssql-jdbc") testRuntimeOnly("com.oracle.database.r2dbc:oracle-r2dbc") diff --git a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/oracle/OracleJdbcDockerComposeConnectionDetailsFactoryIntegrationTests.java b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/oracle/OracleJdbcDockerComposeConnectionDetailsFactoryIntegrationTests.java index 31b3baadc3..43666f3b54 100644 --- a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/oracle/OracleJdbcDockerComposeConnectionDetailsFactoryIntegrationTests.java +++ b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/oracle/OracleJdbcDockerComposeConnectionDetailsFactoryIntegrationTests.java @@ -17,7 +17,9 @@ package org.springframework.boot.docker.compose.service.connection.oracle; import java.sql.Driver; +import java.time.Duration; +import org.awaitility.Awaitility; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.OS; @@ -57,9 +59,11 @@ class OracleJdbcDockerComposeConnectionDetailsFactoryIntegrationTests extends Ab dataSource.setPassword(connectionDetails.getPassword()); dataSource.setDriverClass((Class) ClassUtils.forName(connectionDetails.getDriverClassName(), getClass().getClassLoader())); - JdbcTemplate template = new JdbcTemplate(dataSource); - assertThat(template.queryForObject(DatabaseDriver.ORACLE.getValidationQuery(), String.class)) - .isEqualTo("Hello"); + Awaitility.await().atMost(Duration.ofMinutes(1)).ignoreExceptions().untilAsserted(() -> { + JdbcTemplate template = new JdbcTemplate(dataSource); + assertThat(template.queryForObject(DatabaseDriver.ORACLE.getValidationQuery(), String.class)) + .isEqualTo("Hello"); + }); } } diff --git a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/oracle/OracleR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests.java b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/oracle/OracleR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests.java index 521b941430..c167788068 100644 --- a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/oracle/OracleR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests.java +++ b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/oracle/OracleR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests.java @@ -20,6 +20,7 @@ import java.time.Duration; import io.r2dbc.spi.ConnectionFactories; import io.r2dbc.spi.ConnectionFactoryOptions; +import org.awaitility.Awaitility; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.OS; @@ -51,12 +52,14 @@ class OracleR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests extends A assertThat(connectionFactoryOptions.toString()).contains("database=xepdb1", "driver=oracle", "password=REDACTED", "user=system"); assertThat(connectionFactoryOptions.getRequiredValue(ConnectionFactoryOptions.PASSWORD)).isEqualTo("secret"); - Object result = DatabaseClient.create(ConnectionFactories.get(connectionFactoryOptions)) - .sql(DatabaseDriver.ORACLE.getValidationQuery()) - .map((row, metadata) -> row.get(0)) - .first() - .block(Duration.ofSeconds(30)); - assertThat(result).isEqualTo("Hello"); + Awaitility.await().atMost(Duration.ofMinutes(1)).ignoreExceptions().untilAsserted(() -> { + Object result = DatabaseClient.create(ConnectionFactories.get(connectionFactoryOptions)) + .sql(DatabaseDriver.ORACLE.getValidationQuery()) + .map((row, metadata) -> row.get(0)) + .first() + .block(Duration.ofSeconds(30)); + assertThat(result).isEqualTo("Hello"); + }); } }