Guard integration tests against known not-working OS variants.

Closes #1371
This commit is contained in:
Mark Paluch
2022-10-31 15:02:09 +01:00
parent 3b6c2f06ae
commit 541eee7c8b
9 changed files with 24 additions and 13 deletions

View File

@@ -21,9 +21,9 @@ import reactor.core.publisher.Mono;
import javax.sql.DataSource;
import org.junit.jupiter.api.condition.DisabledOnOs;
import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.jupiter.api.extension.RegisterExtension;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan.Filter;
import org.springframework.context.annotation.Configuration;
@@ -45,6 +45,7 @@ import org.springframework.test.context.junit.jupiter.SpringExtension;
@ExtendWith(SpringExtension.class)
@ContextConfiguration
@EnabledOnClass("oracle.r2dbc.impl.OracleConnectionFactoryProviderImpl")
@DisabledOnOs(architectures = "aarch64")
public class OracleR2dbcRepositoryIntegrationTests extends AbstractR2dbcRepositoryIntegrationTests {
@RegisterExtension public static final ExternalDatabase database = OracleTestSupport.database();

View File

@@ -21,9 +21,9 @@ import java.util.Optional;
import javax.sql.DataSource;
import org.junit.jupiter.api.condition.DisabledOnOs;
import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.jupiter.api.extension.RegisterExtension;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan.Filter;
import org.springframework.context.annotation.Configuration;
@@ -49,6 +49,7 @@ import org.springframework.test.context.junit.jupiter.SpringExtension;
@ExtendWith(SpringExtension.class)
@ContextConfiguration
@EnabledOnClass("oracle.r2dbc.impl.OracleConnectionFactoryProviderImpl")
@DisabledOnOs(architectures = "aarch64")
public class OracleR2dbcRepositoryWithMixedCaseNamesIntegrationTests
extends AbstractR2dbcRepositoryWithMixedCaseNamesIntegrationTests {

View File

@@ -22,9 +22,9 @@ import reactor.core.publisher.Mono;
import javax.sql.DataSource;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.condition.DisabledOnOs;
import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.jupiter.api.extension.RegisterExtension;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan.Filter;
import org.springframework.context.annotation.Configuration;
@@ -44,6 +44,7 @@ import org.springframework.test.context.junit.jupiter.SpringExtension;
*/
@ExtendWith(SpringExtension.class)
@ContextConfiguration
@DisabledOnOs(architectures = "aarch64")
public class SqlServerR2dbcRepositoryIntegrationTests extends AbstractR2dbcRepositoryIntegrationTests {
@RegisterExtension public static final ExternalDatabase database = SqlServerTestSupport.database();

View File

@@ -21,9 +21,9 @@ import java.util.Optional;
import javax.sql.DataSource;
import org.junit.jupiter.api.condition.DisabledOnOs;
import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.jupiter.api.extension.RegisterExtension;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan.Filter;
import org.springframework.context.annotation.Configuration;
@@ -47,6 +47,7 @@ import org.springframework.test.context.junit.jupiter.SpringExtension;
*/
@ExtendWith(SpringExtension.class)
@ContextConfiguration
@DisabledOnOs(architectures = "aarch64")
public class SqlServerR2dbcRepositoryWithMixedCaseNamesIntegrationTests
extends AbstractR2dbcRepositoryWithMixedCaseNamesIntegrationTests {

View File

@@ -19,9 +19,9 @@ import io.r2dbc.spi.ConnectionFactory;
import javax.sql.DataSource;
import org.junit.jupiter.api.condition.DisabledOnOs;
import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.jupiter.api.extension.RegisterExtension;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.r2dbc.config.AbstractR2dbcConfiguration;
import org.springframework.data.r2dbc.testing.ExternalDatabase;
@@ -36,6 +36,7 @@ import org.springframework.test.context.junit.jupiter.SpringExtension;
*/
@ExtendWith(SpringExtension.class)
@ContextConfiguration
@DisabledOnOs(architectures = "aarch64")
public class SqlServerSimpleR2dbcRepositoryIntegrationTests extends AbstractSimpleR2dbcRepositoryIntegrationTests {
@RegisterExtension public static final ExternalDatabase database = SqlServerTestSupport.database();

View File

@@ -30,6 +30,8 @@ import javax.sql.DataSource;
*/
abstract class ConnectionUtils {
public static String AARCH64 = "aarch64";
/**
* Obtain a {@link ConnectionFactory} given {@link ExternalDatabase} and {@code driver}.
*

View File

@@ -25,12 +25,10 @@ import java.util.stream.Stream;
import javax.sql.DataSource;
import org.awaitility.Awaitility;
import org.springframework.data.r2dbc.testing.ExternalDatabase.ProvidedDatabase;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.util.ClassUtils;
import org.testcontainers.containers.OracleContainer;
/**
@@ -73,6 +71,11 @@ public class OracleTestSupport {
*/
public static ExternalDatabase database() {
// Disable Oracle support as there's no M1 support yet.
if (ConnectionUtils.AARCH64.equals(System.getProperty("os.arch"))) {
return ExternalDatabase.unavailable();
}
if (!ClassUtils.isPresent("oracle.r2dbc.impl.OracleConnectionFactoryProviderImpl",
OracleTestSupport.class.getClassLoader())) {
return ExternalDatabase.unavailable();
@@ -125,8 +128,7 @@ public class OracleTestSupport {
if (testContainerDatabase == null) {
try {
OracleContainer container = new OracleContainer("gvenzl/oracle-xe:21.3.0-slim")
.withReuse(true);
OracleContainer container = new OracleContainer("gvenzl/oracle-xe:21.3.0-slim").withReuse(true);
container.start();
testContainerDatabase = ProvidedDatabase.builder(container) //

View File

@@ -23,9 +23,7 @@ import java.util.stream.Stream;
import javax.sql.DataSource;
import org.postgresql.ds.PGSimpleDataSource;
import org.springframework.data.r2dbc.testing.ExternalDatabase.ProvidedDatabase;
import org.testcontainers.containers.PostgreSQLContainer;
/**
@@ -120,7 +118,7 @@ public class PostgresTestSupport {
try {
PostgreSQLContainer container = new PostgreSQLContainer(
"postgres:14.3");
"postgres:14.5");
container.start();
testContainerDatabase = ProvidedDatabase.builder(container).database(container.getDatabaseName()).build();

View File

@@ -23,7 +23,6 @@ import java.util.stream.Stream;
import javax.sql.DataSource;
import org.springframework.data.r2dbc.testing.ExternalDatabase.ProvidedDatabase;
import org.testcontainers.containers.MSSQLServerContainer;
import com.microsoft.sqlserver.jdbc.SQLServerDataSource;
@@ -72,6 +71,11 @@ public class SqlServerTestSupport {
*/
public static ExternalDatabase database() {
// Disable SQL Server support as there's no M1 support yet.
if (ConnectionUtils.AARCH64.equals(System.getProperty("os.arch"))) {
return ExternalDatabase.unavailable();
}
if (Boolean.getBoolean("spring.data.r2dbc.test.preferLocalDatabase")) {
return getFirstWorkingDatabase( //