diff --git a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/metrics/cache/RedisCacheMetricsTests.java b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/metrics/cache/RedisCacheMetricsTests.java index 235b38994e3..0202312ba45 100644 --- a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/metrics/cache/RedisCacheMetricsTests.java +++ b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/metrics/cache/RedisCacheMetricsTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -32,7 +32,8 @@ import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; import org.springframework.boot.test.context.assertj.AssertableApplicationContext; import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.boot.test.context.runner.ContextConsumer; -import org.springframework.boot.testsupport.testcontainers.RedisContainer; +import org.springframework.boot.testsupport.container.RedisContainer; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.cache.annotation.EnableCaching; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.cache.RedisCache; @@ -49,7 +50,7 @@ import static org.assertj.core.api.Assertions.assertThat; class RedisCacheMetricsTests { @Container - static final RedisContainer redis = new RedisContainer(); + static final RedisContainer redis = TestImage.container(RedisContainer.class); private static final Tags TAGS = Tags.of("app", "test").and("cache", "test"); diff --git a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/mongo/MongoHealthIndicatorIntegrationTests.java b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/mongo/MongoHealthIndicatorIntegrationTests.java index 04d41750153..40b2d8ad6e8 100644 --- a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/mongo/MongoHealthIndicatorIntegrationTests.java +++ b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/mongo/MongoHealthIndicatorIntegrationTests.java @@ -16,8 +16,6 @@ package org.springframework.boot.actuate.mongo; -import java.time.Duration; - import com.mongodb.ConnectionString; import com.mongodb.MongoClientSettings; import com.mongodb.MongoClientSettings.Builder; @@ -33,7 +31,7 @@ import org.testcontainers.junit.jupiter.Testcontainers; import org.springframework.boot.actuate.data.mongo.MongoHealthIndicator; import org.springframework.boot.actuate.health.Health; import org.springframework.boot.actuate.health.Status; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.data.mongodb.core.MongoTemplate; import static org.assertj.core.api.Assertions.assertThat; @@ -47,8 +45,7 @@ import static org.assertj.core.api.Assertions.assertThat; class MongoHealthIndicatorIntegrationTests { @Container - static MongoDBContainer mongo = new MongoDBContainer(DockerImageNames.mongo()).withStartupAttempts(3) - .withStartupTimeout(Duration.ofMinutes(2)); + static MongoDBContainer mongo = TestImage.container(MongoDBContainer.class); @Test void standardApi() { diff --git a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/mongo/MongoReactiveHealthIndicatorIntegrationTests.java b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/mongo/MongoReactiveHealthIndicatorIntegrationTests.java index bb19d0e8966..7c15a4df1a4 100644 --- a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/mongo/MongoReactiveHealthIndicatorIntegrationTests.java +++ b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/mongo/MongoReactiveHealthIndicatorIntegrationTests.java @@ -33,7 +33,7 @@ import org.testcontainers.junit.jupiter.Testcontainers; import org.springframework.boot.actuate.data.mongo.MongoReactiveHealthIndicator; import org.springframework.boot.actuate.health.Health; import org.springframework.boot.actuate.health.Status; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.data.mongodb.core.ReactiveMongoTemplate; import static org.assertj.core.api.Assertions.assertThat; @@ -47,8 +47,7 @@ import static org.assertj.core.api.Assertions.assertThat; class MongoReactiveHealthIndicatorIntegrationTests { @Container - static MongoDBContainer mongo = new MongoDBContainer(DockerImageNames.mongo()).withStartupAttempts(3) - .withStartupTimeout(Duration.ofMinutes(2)); + static MongoDBContainer mongo = TestImage.container(MongoDBContainer.class); @Test void standardApi() { diff --git a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/neo4j/Neo4jReactiveHealthIndicatorIntegrationTests.java b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/neo4j/Neo4jReactiveHealthIndicatorIntegrationTests.java index 1220e35c8c1..6b808069716 100644 --- a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/neo4j/Neo4jReactiveHealthIndicatorIntegrationTests.java +++ b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/neo4j/Neo4jReactiveHealthIndicatorIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -29,7 +29,7 @@ import org.springframework.boot.actuate.health.Status; import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.autoconfigure.neo4j.Neo4jAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; import org.springframework.test.context.DynamicPropertyRegistry; @@ -49,9 +49,7 @@ class Neo4jReactiveHealthIndicatorIntegrationTests { // gh-33428 @Container - private static final Neo4jContainer neo4jServer = new Neo4jContainer<>(DockerImageNames.neo4j()) - .withStartupAttempts(5) - .withStartupTimeout(Duration.ofMinutes(10)); + private static final Neo4jContainer neo4jServer = TestImage.container(Neo4jContainer.class); @DynamicPropertySource static void neo4jProperties(DynamicPropertyRegistry registry) { diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/cassandra/CassandraAutoConfigurationIntegrationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/cassandra/CassandraAutoConfigurationIntegrationTests.java index e120b797884..5d89b6c9aec 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/cassandra/CassandraAutoConfigurationIntegrationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/cassandra/CassandraAutoConfigurationIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,6 +19,7 @@ package org.springframework.boot.autoconfigure.cassandra; import com.datastax.oss.driver.api.core.CqlSession; import com.datastax.oss.driver.api.core.config.DriverConfigLoader; import org.junit.jupiter.api.Test; +import org.testcontainers.containers.CassandraContainer; import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; @@ -26,7 +27,7 @@ import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.test.context.runner.ApplicationContextRunner; -import org.springframework.boot.testsupport.testcontainers.CassandraContainer; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -43,7 +44,7 @@ import static org.mockito.Mockito.spy; class CassandraAutoConfigurationIntegrationTests { @Container - static final CassandraContainer cassandra = new CassandraContainer(); + static final CassandraContainer cassandra = TestImage.container(CassandraContainer.class); private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() .withConfiguration(AutoConfigurations.of(CassandraAutoConfiguration.class)) diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/cassandra/CassandraAutoConfigurationWithPasswordAuthenticationIntegrationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/cassandra/CassandraAutoConfigurationWithPasswordAuthenticationIntegrationTests.java index 4880ea1dedb..4f144c65d59 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/cassandra/CassandraAutoConfigurationWithPasswordAuthenticationIntegrationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/cassandra/CassandraAutoConfigurationWithPasswordAuthenticationIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,7 +18,6 @@ package org.springframework.boot.autoconfigure.cassandra; import java.net.InetSocketAddress; import java.nio.charset.StandardCharsets; -import java.time.Duration; import java.util.concurrent.TimeUnit; import com.datastax.oss.driver.api.core.ConsistencyLevel; @@ -28,16 +27,18 @@ import com.datastax.oss.driver.api.core.cql.SimpleStatement; import org.junit.jupiter.api.Test; import org.rnorth.ducttape.TimeoutException; import org.rnorth.ducttape.unreliables.Unreliables; +import org.testcontainers.containers.CassandraContainer; import org.testcontainers.containers.ContainerLaunchException; import org.testcontainers.containers.wait.strategy.AbstractWaitStrategy; import org.testcontainers.images.builder.Transferable; import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; +import org.testcontainers.utility.DockerImageName; import org.springframework.beans.factory.BeanCreationException; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.test.context.runner.ApplicationContextRunner; -import org.springframework.boot.testsupport.testcontainers.CassandraContainer; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.util.StreamUtils; import static org.assertj.core.api.Assertions.assertThat; @@ -52,8 +53,9 @@ import static org.assertj.core.api.Assertions.assertThatExceptionOfType; class CassandraAutoConfigurationWithPasswordAuthenticationIntegrationTests { @Container - static final CassandraContainer cassandra = new PasswordAuthenticatorCassandraContainer().withStartupAttempts(5) - .withStartupTimeout(Duration.ofMinutes(10)) + static final PasswordAuthenticatorCassandraContainer cassandra = TestImage + .container(PasswordAuthenticatorCassandraContainer.class) + .withStartupAttempts(5) .waitingFor(new CassandraWaitStrategy()); private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() @@ -83,7 +85,12 @@ class CassandraAutoConfigurationWithPasswordAuthenticationIntegrationTests { .withMessageContaining("Authentication error")); } - static final class PasswordAuthenticatorCassandraContainer extends CassandraContainer { + static final class PasswordAuthenticatorCassandraContainer + extends CassandraContainer { + + PasswordAuthenticatorCassandraContainer(DockerImageName dockerImageName) { + super(dockerImageName); + } @Override protected void containerIsCreated(String containerId) { diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/couchbase/CouchbaseAutoConfigurationIntegrationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/couchbase/CouchbaseAutoConfigurationIntegrationTests.java index 5fcd8bb9585..9fdf08e63c9 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/couchbase/CouchbaseAutoConfigurationIntegrationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/couchbase/CouchbaseAutoConfigurationIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -35,7 +35,7 @@ import org.testcontainers.junit.jupiter.Testcontainers; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.test.context.runner.ApplicationContextRunner; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import static org.assertj.core.api.Assertions.assertThat; @@ -51,11 +51,9 @@ class CouchbaseAutoConfigurationIntegrationTests { private static final String BUCKET_NAME = "cbbucket"; @Container - static final CouchbaseContainer couchbase = new CouchbaseContainer(DockerImageNames.couchbase()) + static final CouchbaseContainer couchbase = TestImage.container(CouchbaseContainer.class) .withEnabledServices(CouchbaseService.KV) .withCredentials("spring", "password") - .withStartupAttempts(5) - .withStartupTimeout(Duration.ofMinutes(10)) .withBucket(new BucketDefinition(BUCKET_NAME).withPrimaryIndex(false)); private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/cassandra/CassandraDataAutoConfigurationIntegrationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/cassandra/CassandraDataAutoConfigurationIntegrationTests.java index cd65a45a642..fd5c2727d62 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/cassandra/CassandraDataAutoConfigurationIntegrationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/cassandra/CassandraDataAutoConfigurationIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,6 +19,7 @@ package org.springframework.boot.autoconfigure.data.cassandra; import com.datastax.oss.driver.api.core.CqlSession; import com.datastax.oss.driver.api.core.CqlSessionBuilder; import org.junit.jupiter.api.Test; +import org.testcontainers.containers.CassandraContainer; import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; @@ -28,7 +29,7 @@ import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration; import org.springframework.boot.autoconfigure.data.cassandra.city.City; import org.springframework.boot.test.context.runner.ApplicationContextRunner; -import org.springframework.boot.testsupport.testcontainers.CassandraContainer; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.cassandra.config.SchemaAction; @@ -46,7 +47,7 @@ import static org.assertj.core.api.Assertions.assertThat; class CassandraDataAutoConfigurationIntegrationTests { @Container - static final CassandraContainer cassandra = new CassandraContainer(); + static final CassandraContainer cassandra = TestImage.container(CassandraContainer.class); private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() .withConfiguration( diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchRepositoriesAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchRepositoriesAutoConfigurationTests.java index cd8afa62675..ff993d8c4b6 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchRepositoriesAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchRepositoriesAutoConfigurationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,8 +16,6 @@ package org.springframework.boot.autoconfigure.data.elasticsearch; -import java.time.Duration; - import org.junit.jupiter.api.Test; import org.testcontainers.elasticsearch.ElasticsearchContainer; import org.testcontainers.junit.jupiter.Container; @@ -32,7 +30,7 @@ import org.springframework.boot.autoconfigure.data.empty.EmptyDataPackage; import org.springframework.boot.autoconfigure.elasticsearch.ElasticsearchClientAutoConfiguration; import org.springframework.boot.autoconfigure.elasticsearch.ElasticsearchRestClientAutoConfiguration; import org.springframework.boot.test.context.runner.ApplicationContextRunner; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.annotation.Configuration; import org.springframework.data.elasticsearch.client.elc.ElasticsearchTemplate; import org.springframework.data.elasticsearch.config.EnableElasticsearchAuditing; @@ -52,10 +50,7 @@ import static org.assertj.core.api.Assertions.assertThat; class ElasticsearchRepositoriesAutoConfigurationTests { @Container - static final ElasticsearchContainer elasticsearch = new ElasticsearchContainer(DockerImageNames.elasticsearch()) - .withEnv("ES_JAVA_OPTS", "-Xms32m -Xmx512m") - .withStartupAttempts(5) - .withStartupTimeout(Duration.ofMinutes(10)); + static final ElasticsearchContainer elasticsearch = TestImage.container(ElasticsearchContainer.class); private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() .withConfiguration(AutoConfigurations.of(ElasticsearchRestClientAutoConfiguration.class, diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/elasticsearch/ReactiveElasticsearchRepositoriesAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/elasticsearch/ReactiveElasticsearchRepositoriesAutoConfigurationTests.java index 68d2b5d173f..b6e7f18ac0f 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/elasticsearch/ReactiveElasticsearchRepositoriesAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/elasticsearch/ReactiveElasticsearchRepositoriesAutoConfigurationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,8 +16,6 @@ package org.springframework.boot.autoconfigure.data.elasticsearch; -import java.time.Duration; - import org.junit.jupiter.api.Test; import org.testcontainers.elasticsearch.ElasticsearchContainer; import org.testcontainers.junit.jupiter.Container; @@ -35,7 +33,7 @@ import org.springframework.boot.autoconfigure.elasticsearch.ReactiveElasticsearc import org.springframework.boot.autoconfigure.logging.ConditionEvaluationReportLoggingListener; import org.springframework.boot.logging.LogLevel; import org.springframework.boot.test.context.runner.ApplicationContextRunner; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.annotation.Configuration; import org.springframework.data.elasticsearch.client.elc.ReactiveElasticsearchTemplate; import org.springframework.data.elasticsearch.config.EnableElasticsearchAuditing; @@ -55,10 +53,7 @@ import static org.assertj.core.api.Assertions.assertThat; class ReactiveElasticsearchRepositoriesAutoConfigurationTests { @Container - static ElasticsearchContainer elasticsearch = new ElasticsearchContainer(DockerImageNames.elasticsearch()) - .withEnv("ES_JAVA_OPTS", "-Xms32m -Xmx512m") - .withStartupAttempts(5) - .withStartupTimeout(Duration.ofMinutes(10)); + static final ElasticsearchContainer elasticsearch = TestImage.container(ElasticsearchContainer.class); private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() .withConfiguration(AutoConfigurations.of(ElasticsearchClientAutoConfiguration.class, diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/neo4j/Neo4jRepositoriesAutoConfigurationIntegrationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/neo4j/Neo4jRepositoriesAutoConfigurationIntegrationTests.java index d9a007bbf4d..f9875aae74e 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/neo4j/Neo4jRepositoriesAutoConfigurationIntegrationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/neo4j/Neo4jRepositoriesAutoConfigurationIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,8 +16,6 @@ package org.springframework.boot.autoconfigure.data.neo4j; -import java.time.Duration; - import org.junit.jupiter.api.Test; import org.testcontainers.containers.Neo4jContainer; import org.testcontainers.junit.jupiter.Container; @@ -28,7 +26,7 @@ import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.autoconfigure.data.neo4j.country.CountryRepository; import org.springframework.boot.autoconfigure.neo4j.Neo4jAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.annotation.Configuration; import org.springframework.data.neo4j.repository.config.EnableNeo4jRepositories; import org.springframework.test.context.DynamicPropertyRegistry; @@ -46,15 +44,13 @@ import static org.assertj.core.api.Assertions.assertThat; class Neo4jRepositoriesAutoConfigurationIntegrationTests { @Container - private static final Neo4jContainer neo4jServer = new Neo4jContainer<>(DockerImageNames.neo4j()) - .withStartupAttempts(5) - .withStartupTimeout(Duration.ofMinutes(10)); + static final Neo4jContainer neo4j = TestImage.container(Neo4jContainer.class); @DynamicPropertySource static void neo4jProperties(DynamicPropertyRegistry registry) { - registry.add("spring.neo4j.uri", neo4jServer::getBoltUrl); + registry.add("spring.neo4j.uri", neo4j::getBoltUrl); registry.add("spring.neo4j.authentication.username", () -> "neo4j"); - registry.add("spring.neo4j.authentication.password", neo4jServer::getAdminPassword); + registry.add("spring.neo4j.authentication.password", neo4j::getAdminPassword); } @Autowired diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/redis/RedisRepositoriesAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/redis/RedisRepositoriesAutoConfigurationTests.java index f7e719c865b..7e22b198f9f 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/redis/RedisRepositoriesAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/redis/RedisRepositoriesAutoConfigurationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,8 +16,6 @@ package org.springframework.boot.autoconfigure.data.redis; -import java.time.Duration; - import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -31,7 +29,8 @@ import org.springframework.boot.autoconfigure.data.empty.EmptyDataPackage; import org.springframework.boot.autoconfigure.data.redis.city.City; import org.springframework.boot.autoconfigure.data.redis.city.CityRepository; import org.springframework.boot.test.util.TestPropertyValues; -import org.springframework.boot.testsupport.testcontainers.RedisContainer; +import org.springframework.boot.testsupport.container.RedisContainer; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.repository.configuration.EnableRedisRepositories; @@ -47,8 +46,7 @@ import static org.assertj.core.api.Assertions.assertThat; class RedisRepositoriesAutoConfigurationTests { @Container - public static RedisContainer redis = new RedisContainer().withStartupAttempts(5) - .withStartupTimeout(Duration.ofMinutes(10)); + public static RedisContainer redis = TestImage.container(RedisContainer.class); private final AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(); diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/elasticsearch/ElasticsearchClientAutoConfigurationIntegrationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/elasticsearch/ElasticsearchClientAutoConfigurationIntegrationTests.java index 9935d29bee1..b3b73148b2b 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/elasticsearch/ElasticsearchClientAutoConfigurationIntegrationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/elasticsearch/ElasticsearchClientAutoConfigurationIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,7 +16,6 @@ package org.springframework.boot.autoconfigure.elasticsearch; -import java.time.Duration; import java.util.Map; import co.elastic.clients.elasticsearch.ElasticsearchClient; @@ -29,7 +28,7 @@ import org.testcontainers.junit.jupiter.Testcontainers; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration; import org.springframework.boot.test.context.runner.ApplicationContextRunner; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import static org.assertj.core.api.Assertions.assertThat; @@ -42,10 +41,7 @@ import static org.assertj.core.api.Assertions.assertThat; class ElasticsearchClientAutoConfigurationIntegrationTests { @Container - static ElasticsearchContainer elasticsearch = new ElasticsearchContainer(DockerImageNames.elasticsearch()) - .withEnv("ES_JAVA_OPTS", "-Xms32m -Xmx512m") - .withStartupAttempts(5) - .withStartupTimeout(Duration.ofMinutes(10)); + static final ElasticsearchContainer elasticsearch = TestImage.container(ElasticsearchContainer.class); private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() .withConfiguration(AutoConfigurations.of(JacksonAutoConfiguration.class, diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/elasticsearch/ElasticsearchRestClientAutoConfigurationIntegrationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/elasticsearch/ElasticsearchRestClientAutoConfigurationIntegrationTests.java index 606de234947..34aa5f9e092 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/elasticsearch/ElasticsearchRestClientAutoConfigurationIntegrationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/elasticsearch/ElasticsearchRestClientAutoConfigurationIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,7 +17,6 @@ package org.springframework.boot.autoconfigure.elasticsearch; import java.io.InputStream; -import java.time.Duration; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; @@ -31,7 +30,7 @@ import org.testcontainers.junit.jupiter.Testcontainers; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.test.context.runner.ApplicationContextRunner; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import static org.assertj.core.api.Assertions.assertThat; @@ -47,10 +46,7 @@ import static org.assertj.core.api.Assertions.assertThat; class ElasticsearchRestClientAutoConfigurationIntegrationTests { @Container - static final ElasticsearchContainer elasticsearch = new ElasticsearchContainer(DockerImageNames.elasticsearch()) - .withEnv("ES_JAVA_OPTS", "-Xms32m -Xmx512m") - .withStartupAttempts(5) - .withStartupTimeout(Duration.ofMinutes(10)); + static final ElasticsearchContainer elasticsearch = TestImage.container(ElasticsearchContainer.class); private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() .withConfiguration(AutoConfigurations.of(ElasticsearchRestClientAutoConfiguration.class)); diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/elasticsearch/ReactiveElasticsearchClientAutoConfigurationIntegrationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/elasticsearch/ReactiveElasticsearchClientAutoConfigurationIntegrationTests.java index 83088a3a305..cdb88dea998 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/elasticsearch/ReactiveElasticsearchClientAutoConfigurationIntegrationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/elasticsearch/ReactiveElasticsearchClientAutoConfigurationIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,7 +16,6 @@ package org.springframework.boot.autoconfigure.elasticsearch; -import java.time.Duration; import java.util.Map; import co.elastic.clients.elasticsearch.core.GetResponse; @@ -30,7 +29,7 @@ import reactor.core.publisher.Mono; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration; import org.springframework.boot.test.context.runner.ApplicationContextRunner; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.data.elasticsearch.client.elc.ReactiveElasticsearchClient; import static org.assertj.core.api.Assertions.assertThat; @@ -45,10 +44,7 @@ import static org.assertj.core.api.Assertions.assertThat; class ReactiveElasticsearchClientAutoConfigurationIntegrationTests { @Container - static ElasticsearchContainer elasticsearch = new ElasticsearchContainer(DockerImageNames.elasticsearch()) - .withEnv("ES_JAVA_OPTS", "-Xms32m -Xmx512m") - .withStartupAttempts(5) - .withStartupTimeout(Duration.ofMinutes(10)); + static final ElasticsearchContainer elasticsearch = TestImage.container(ElasticsearchContainer.class); private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() .withConfiguration(AutoConfigurations.of(JacksonAutoConfiguration.class, diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/neo4j/Neo4jAutoConfigurationIntegrationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/neo4j/Neo4jAutoConfigurationIntegrationTests.java index e6cbbe3605e..1b8ec950208 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/neo4j/Neo4jAutoConfigurationIntegrationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/neo4j/Neo4jAutoConfigurationIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,7 +17,6 @@ package org.springframework.boot.autoconfigure.neo4j; import java.net.URI; -import java.time.Duration; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; @@ -36,7 +35,7 @@ import org.testcontainers.junit.jupiter.Testcontainers; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.test.context.DynamicPropertyRegistry; @@ -54,9 +53,7 @@ import static org.assertj.core.api.Assertions.assertThat; class Neo4jAutoConfigurationIntegrationTests { @Container - private static final Neo4jContainer neo4jServer = new Neo4jContainer<>(DockerImageNames.neo4j()) - .withStartupAttempts(5) - .withStartupTimeout(Duration.ofMinutes(10)); + private static final Neo4jContainer neo4j = TestImage.container(Neo4jContainer.class); @SpringBootTest @Nested @@ -64,9 +61,9 @@ class Neo4jAutoConfigurationIntegrationTests { @DynamicPropertySource static void neo4jProperties(DynamicPropertyRegistry registry) { - registry.add("spring.neo4j.uri", neo4jServer::getBoltUrl); + registry.add("spring.neo4j.uri", neo4j::getBoltUrl); registry.add("spring.neo4j.authentication.username", () -> "neo4j"); - registry.add("spring.neo4j.authentication.password", neo4jServer::getAdminPassword); + registry.add("spring.neo4j.authentication.password", neo4j::getAdminPassword); } @Autowired @@ -95,7 +92,7 @@ class Neo4jAutoConfigurationIntegrationTests { @DynamicPropertySource static void neo4jProperties(DynamicPropertyRegistry registry) { - registry.add("spring.neo4j.uri", neo4jServer::getBoltUrl); + registry.add("spring.neo4j.uri", neo4j::getBoltUrl); registry.add("spring.neo4j.authentication.username", () -> "wrong"); registry.add("spring.neo4j.authentication.password", () -> "alsowrong"); } @@ -118,7 +115,7 @@ class Neo4jAutoConfigurationIntegrationTests { @Bean AuthTokenManager authTokenManager() { - return AuthTokenManagers.bearer(() -> AuthTokens.basic("neo4j", neo4jServer.getAdminPassword()) + return AuthTokenManagers.bearer(() -> AuthTokens.basic("neo4j", neo4j.getAdminPassword()) .expiringAt(System.currentTimeMillis() + 5_000)); } @@ -132,7 +129,7 @@ class Neo4jAutoConfigurationIntegrationTests { @DynamicPropertySource static void neo4jProperties(DynamicPropertyRegistry registry) { - registry.add("spring.neo4j.uri", neo4jServer::getBoltUrl); + registry.add("spring.neo4j.uri", neo4j::getBoltUrl); registry.add("spring.neo4j.authentication.username", () -> "wrong"); registry.add("spring.neo4j.authentication.password", () -> "alsowrong"); } @@ -165,12 +162,12 @@ class Neo4jAutoConfigurationIntegrationTests { @Override public URI getUri() { - return URI.create(neo4jServer.getBoltUrl()); + return URI.create(neo4j.getBoltUrl()); } @Override public AuthToken getAuthToken() { - return AuthTokens.basic("neo4j", neo4jServer.getAdminPassword()); + return AuthTokens.basic("neo4j", neo4j.getAdminPassword()); } }; diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/pulsar/PulsarAutoConfigurationIntegrationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/pulsar/PulsarAutoConfigurationIntegrationTests.java index 14c7a37baf5..fc9d6ccd908 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/pulsar/PulsarAutoConfigurationIntegrationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/pulsar/PulsarAutoConfigurationIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,7 +16,6 @@ package org.springframework.boot.autoconfigure.pulsar; -import java.time.Duration; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; @@ -36,7 +35,7 @@ import org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguratio import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; import org.springframework.boot.test.web.client.TestRestTemplate; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; import org.springframework.pulsar.annotation.PulsarListener; @@ -59,18 +58,16 @@ import static org.assertj.core.api.Assertions.assertThat; class PulsarAutoConfigurationIntegrationTests { @Container - private static final PulsarContainer PULSAR_CONTAINER = new PulsarContainer(DockerImageNames.pulsar()) - .withStartupAttempts(2) - .withStartupTimeout(Duration.ofMinutes(3)); + static final PulsarContainer pulsar = TestImage.container(PulsarContainer.class); - private static final CountDownLatch LISTEN_LATCH = new CountDownLatch(1); + private static final CountDownLatch listenLatch = new CountDownLatch(1); private static final String TOPIC = "pacit-hello-topic"; @DynamicPropertySource static void pulsarProperties(DynamicPropertyRegistry registry) { - registry.add("spring.pulsar.client.service-url", PULSAR_CONTAINER::getPulsarBrokerUrl); - registry.add("spring.pulsar.admin.service-url", PULSAR_CONTAINER::getHttpServiceUrl); + registry.add("spring.pulsar.client.service-url", pulsar::getPulsarBrokerUrl); + registry.add("spring.pulsar.admin.service-url", pulsar::getHttpServiceUrl); } @Test @@ -82,7 +79,7 @@ class PulsarAutoConfigurationIntegrationTests { @Test void templateCanBeAccessedDuringWebRequest(@Autowired TestRestTemplate restTemplate) throws InterruptedException { assertThat(restTemplate.getForObject("/hello", String.class)).startsWith("Hello World -> "); - assertThat(LISTEN_LATCH.await(5, TimeUnit.SECONDS)).isTrue(); + assertThat(listenLatch.await(5, TimeUnit.SECONDS)).isTrue(); } @Configuration(proxyBeanMethods = false) @@ -94,7 +91,7 @@ class PulsarAutoConfigurationIntegrationTests { @PulsarListener(subscriptionName = TOPIC + "-sub", topics = TOPIC) void listen(String ignored) { - LISTEN_LATCH.countDown(); + listenLatch.countDown(); } } diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/ReactiveSessionAutoConfigurationMongoTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/ReactiveSessionAutoConfigurationMongoTests.java index 4ad31f136f7..5bd7cc4da5b 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/ReactiveSessionAutoConfigurationMongoTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/ReactiveSessionAutoConfigurationMongoTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -34,7 +34,7 @@ import org.springframework.boot.test.context.FilteredClassLoader; import org.springframework.boot.test.context.assertj.AssertableReactiveWebApplicationContext; import org.springframework.boot.test.context.runner.ContextConsumer; import org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.http.ResponseCookie; import org.springframework.session.MapSession; import org.springframework.session.data.mongo.ReactiveMongoSessionRepository; @@ -52,8 +52,7 @@ import static org.assertj.core.api.Assertions.assertThat; class ReactiveSessionAutoConfigurationMongoTests extends AbstractSessionAutoConfigurationTests { @Container - static final MongoDBContainer mongoDb = new MongoDBContainer(DockerImageNames.mongo()).withStartupAttempts(5) - .withStartupTimeout(Duration.ofMinutes(5)); + static final MongoDBContainer mongoDb = TestImage.container(MongoDBContainer.class); private final ReactiveWebApplicationContextRunner contextRunner = new ReactiveWebApplicationContextRunner() .withClassLoader(new FilteredClassLoader(ReactiveRedisSessionRepository.class)) diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/ReactiveSessionAutoConfigurationRedisTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/ReactiveSessionAutoConfigurationRedisTests.java index 0cb97f900ee..55d55bb4e9d 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/ReactiveSessionAutoConfigurationRedisTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/ReactiveSessionAutoConfigurationRedisTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -31,7 +31,8 @@ import org.springframework.boot.test.context.FilteredClassLoader; import org.springframework.boot.test.context.assertj.AssertableReactiveWebApplicationContext; import org.springframework.boot.test.context.runner.ContextConsumer; import org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner; -import org.springframework.boot.testsupport.testcontainers.RedisContainer; +import org.springframework.boot.testsupport.container.RedisContainer; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.http.ResponseCookie; import org.springframework.session.MapSession; import org.springframework.session.SaveMode; @@ -52,8 +53,7 @@ import static org.assertj.core.api.Assertions.assertThat; class ReactiveSessionAutoConfigurationRedisTests extends AbstractSessionAutoConfigurationTests { @Container - public static RedisContainer redis = new RedisContainer().withStartupAttempts(5) - .withStartupTimeout(Duration.ofMinutes(10)); + public static RedisContainer redis = TestImage.container(RedisContainer.class); protected final ReactiveWebApplicationContextRunner contextRunner = new ReactiveWebApplicationContextRunner() .withClassLoader(new FilteredClassLoader(ReactiveMongoSessionRepository.class)) diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/SessionAutoConfigurationMongoTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/SessionAutoConfigurationMongoTests.java index ec221f78d6d..beafacd75ab 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/SessionAutoConfigurationMongoTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/SessionAutoConfigurationMongoTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -31,7 +31,7 @@ import org.springframework.boot.test.context.FilteredClassLoader; import org.springframework.boot.test.context.assertj.AssertableWebApplicationContext; import org.springframework.boot.test.context.runner.ContextConsumer; import org.springframework.boot.test.context.runner.WebApplicationContextRunner; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.session.config.SessionRepositoryCustomizer; @@ -51,15 +51,14 @@ import static org.assertj.core.api.Assertions.assertThat; class SessionAutoConfigurationMongoTests extends AbstractSessionAutoConfigurationTests { @Container - static final MongoDBContainer mongoDB = new MongoDBContainer(DockerImageNames.mongo()).withStartupAttempts(5) - .withStartupTimeout(Duration.ofMinutes(5)); + static final MongoDBContainer mongoDb = TestImage.container(MongoDBContainer.class); private final WebApplicationContextRunner contextRunner = new WebApplicationContextRunner() .withClassLoader(new FilteredClassLoader(HazelcastIndexedSessionRepository.class, JdbcIndexedSessionRepository.class, RedisIndexedSessionRepository.class)) .withConfiguration(AutoConfigurations.of(MongoAutoConfiguration.class, MongoDataAutoConfiguration.class, SessionAutoConfiguration.class)) - .withPropertyValues("spring.data.mongodb.uri=" + mongoDB.getReplicaSetUrl()); + .withPropertyValues("spring.data.mongodb.uri=" + mongoDb.getReplicaSetUrl()); @Test void defaultConfig() { diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/SessionAutoConfigurationRedisTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/SessionAutoConfigurationRedisTests.java index e98b88fc0a5..eecebb7ad9c 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/SessionAutoConfigurationRedisTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/SessionAutoConfigurationRedisTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -31,7 +31,8 @@ import org.springframework.boot.test.context.FilteredClassLoader; import org.springframework.boot.test.context.assertj.AssertableWebApplicationContext; import org.springframework.boot.test.context.runner.ContextConsumer; import org.springframework.boot.test.context.runner.WebApplicationContextRunner; -import org.springframework.boot.testsupport.testcontainers.RedisContainer; +import org.springframework.boot.testsupport.container.RedisContainer; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnection; @@ -60,8 +61,7 @@ import static org.assertj.core.api.Assertions.entry; class SessionAutoConfigurationRedisTests extends AbstractSessionAutoConfigurationTests { @Container - public static RedisContainer redis = new RedisContainer().withStartupAttempts(5) - .withStartupTimeout(Duration.ofMinutes(10)); + public static RedisContainer redis = TestImage.container(RedisContainer.class); protected final WebApplicationContextRunner contextRunner = new WebApplicationContextRunner() .withClassLoader(new FilteredClassLoader(HazelcastIndexedSessionRepository.class, diff --git a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/core/DockerCliIntegrationTests.java b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/core/DockerCliIntegrationTests.java index fe00279095b..409793e1930 100644 --- a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/core/DockerCliIntegrationTests.java +++ b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/core/DockerCliIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -36,9 +36,9 @@ import org.springframework.boot.docker.compose.core.DockerCliCommand.ComposeStop import org.springframework.boot.docker.compose.core.DockerCliCommand.ComposeUp; import org.springframework.boot.docker.compose.core.DockerCliCommand.Inspect; import org.springframework.boot.logging.LogLevel; +import org.springframework.boot.testsupport.container.DisabledIfDockerUnavailable; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.boot.testsupport.process.DisabledIfProcessUnavailable; -import org.springframework.boot.testsupport.testcontainers.DisabledIfDockerUnavailable; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; import org.springframework.core.io.ClassPathResource; import org.springframework.util.FileCopyUtils; @@ -116,8 +116,7 @@ class DockerCliIntegrationTests { File composeFile = new ClassPathResource("redis-compose.yaml", DockerCliIntegrationTests.class).getFile(); File tempComposeFile = Path.of(tempDir.toString(), composeFile.getName()).toFile(); String composeFileContent = FileCopyUtils.copyToString(new FileReader(composeFile)); - composeFileContent = composeFileContent.replace("{imageName}", - DockerImageNames.redis().asCanonicalNameString()); + composeFileContent = composeFileContent.replace("{imageName}", TestImage.REDIS.toString()); FileCopyUtils.copy(composeFileContent, new FileWriter(tempComposeFile)); return tempComposeFile; } diff --git a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/activemq/ActiveMQDockerComposeConnectionDetailsFactoryIntegrationTests.java b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/activemq/ActiveMQDockerComposeConnectionDetailsFactoryIntegrationTests.java index 0fd0852991e..0842d769397 100644 --- a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/activemq/ActiveMQDockerComposeConnectionDetailsFactoryIntegrationTests.java +++ b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/activemq/ActiveMQDockerComposeConnectionDetailsFactoryIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.jms.activemq.ActiveMQConnectionDetails; import org.springframework.boot.docker.compose.service.connection.test.AbstractDockerComposeIntegrationTests; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import static org.assertj.core.api.Assertions.assertThat; @@ -32,7 +32,7 @@ import static org.assertj.core.api.Assertions.assertThat; class ActiveMQDockerComposeConnectionDetailsFactoryIntegrationTests extends AbstractDockerComposeIntegrationTests { ActiveMQDockerComposeConnectionDetailsFactoryIntegrationTests() { - super("activemq-compose.yaml", DockerImageNames.activeMq()); + super("activemq-compose.yaml", TestImage.ACTIVE_MQ); } @Test diff --git a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/cassandra/CassandraDockerComposeConnectionDetailsFactoryIntegrationTests.java b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/cassandra/CassandraDockerComposeConnectionDetailsFactoryIntegrationTests.java index 8df562e2311..011234fb264 100644 --- a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/cassandra/CassandraDockerComposeConnectionDetailsFactoryIntegrationTests.java +++ b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/cassandra/CassandraDockerComposeConnectionDetailsFactoryIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,7 +23,7 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.cassandra.CassandraConnectionDetails; import org.springframework.boot.autoconfigure.cassandra.CassandraConnectionDetails.Node; import org.springframework.boot.docker.compose.service.connection.test.AbstractDockerComposeIntegrationTests; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import static org.assertj.core.api.Assertions.assertThat; @@ -35,7 +35,7 @@ import static org.assertj.core.api.Assertions.assertThat; class CassandraDockerComposeConnectionDetailsFactoryIntegrationTests extends AbstractDockerComposeIntegrationTests { CassandraDockerComposeConnectionDetailsFactoryIntegrationTests() { - super("cassandra-compose.yaml", DockerImageNames.cassandra()); + super("cassandra-compose.yaml", TestImage.CASSANDRA); } @Test diff --git a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/elasticsearch/ElasticsearchDockerComposeConnectionDetailsFactoryIntegrationTests.java b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/elasticsearch/ElasticsearchDockerComposeConnectionDetailsFactoryIntegrationTests.java index c373f26f9ac..e6d96b5d0e9 100644 --- a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/elasticsearch/ElasticsearchDockerComposeConnectionDetailsFactoryIntegrationTests.java +++ b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/elasticsearch/ElasticsearchDockerComposeConnectionDetailsFactoryIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,7 +22,7 @@ import org.springframework.boot.autoconfigure.elasticsearch.ElasticsearchConnect import org.springframework.boot.autoconfigure.elasticsearch.ElasticsearchConnectionDetails.Node; import org.springframework.boot.autoconfigure.elasticsearch.ElasticsearchConnectionDetails.Node.Protocol; import org.springframework.boot.docker.compose.service.connection.test.AbstractDockerComposeIntegrationTests; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import static org.assertj.core.api.Assertions.assertThat; @@ -36,7 +36,7 @@ import static org.assertj.core.api.Assertions.assertThat; class ElasticsearchDockerComposeConnectionDetailsFactoryIntegrationTests extends AbstractDockerComposeIntegrationTests { ElasticsearchDockerComposeConnectionDetailsFactoryIntegrationTests() { - super("elasticsearch-compose.yaml", DockerImageNames.elasticsearch8()); + super("elasticsearch-compose.yaml", TestImage.ELASTICSEARCH_8); } @Test diff --git a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/flyway/JdbcAdaptingFlywayConnectionDetailsFactoryIntegrationTests.java b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/flyway/JdbcAdaptingFlywayConnectionDetailsFactoryIntegrationTests.java index a87d73f347a..4165ca96da5 100644 --- a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/flyway/JdbcAdaptingFlywayConnectionDetailsFactoryIntegrationTests.java +++ b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/flyway/JdbcAdaptingFlywayConnectionDetailsFactoryIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.flyway.FlywayConnectionDetails; import org.springframework.boot.docker.compose.service.connection.test.AbstractDockerComposeIntegrationTests; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import static org.assertj.core.api.Assertions.assertThat; @@ -32,7 +32,7 @@ import static org.assertj.core.api.Assertions.assertThat; class JdbcAdaptingFlywayConnectionDetailsFactoryIntegrationTests extends AbstractDockerComposeIntegrationTests { JdbcAdaptingFlywayConnectionDetailsFactoryIntegrationTests() { - super("flyway-compose.yaml", DockerImageNames.postgresql()); + super("flyway-compose.yaml", TestImage.POSTGRESQL); } @Test diff --git a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/liquibase/JdbcAdaptingLiquibaseConnectionDetailsFactoryIntegrationTests.java b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/liquibase/JdbcAdaptingLiquibaseConnectionDetailsFactoryIntegrationTests.java index 9530bdeb567..f7c82037c27 100644 --- a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/liquibase/JdbcAdaptingLiquibaseConnectionDetailsFactoryIntegrationTests.java +++ b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/liquibase/JdbcAdaptingLiquibaseConnectionDetailsFactoryIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.liquibase.LiquibaseConnectionDetails; import org.springframework.boot.docker.compose.service.connection.test.AbstractDockerComposeIntegrationTests; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import static org.assertj.core.api.Assertions.assertThat; @@ -32,7 +32,7 @@ import static org.assertj.core.api.Assertions.assertThat; class JdbcAdaptingLiquibaseConnectionDetailsFactoryIntegrationTests extends AbstractDockerComposeIntegrationTests { JdbcAdaptingLiquibaseConnectionDetailsFactoryIntegrationTests() { - super("liquibase-compose.yaml", DockerImageNames.postgresql()); + super("liquibase-compose.yaml", TestImage.POSTGRESQL); } @Test diff --git a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/mariadb/MariaDbJdbcDockerComposeConnectionDetailsFactoryIntegrationTests.java b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/mariadb/MariaDbJdbcDockerComposeConnectionDetailsFactoryIntegrationTests.java index 61b07277147..8ba804a0496 100644 --- a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/mariadb/MariaDbJdbcDockerComposeConnectionDetailsFactoryIntegrationTests.java +++ b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/mariadb/MariaDbJdbcDockerComposeConnectionDetailsFactoryIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.jdbc.JdbcConnectionDetails; import org.springframework.boot.docker.compose.service.connection.test.AbstractDockerComposeIntegrationTests; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import static org.assertj.core.api.Assertions.assertThat; @@ -34,7 +34,7 @@ import static org.assertj.core.api.Assertions.assertThat; class MariaDbJdbcDockerComposeConnectionDetailsFactoryIntegrationTests extends AbstractDockerComposeIntegrationTests { MariaDbJdbcDockerComposeConnectionDetailsFactoryIntegrationTests() { - super("mariadb-compose.yaml", DockerImageNames.mariadb()); + super("mariadb-compose.yaml", TestImage.MARIADB); } @Test diff --git a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/mariadb/MariaDbR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests.java b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/mariadb/MariaDbR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests.java index 0e69f50f9cc..172d31bb864 100644 --- a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/mariadb/MariaDbR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests.java +++ b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/mariadb/MariaDbR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,7 +21,7 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.r2dbc.R2dbcConnectionDetails; import org.springframework.boot.docker.compose.service.connection.test.AbstractDockerComposeIntegrationTests; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import static org.assertj.core.api.Assertions.assertThat; @@ -35,7 +35,7 @@ import static org.assertj.core.api.Assertions.assertThat; class MariaDbR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests extends AbstractDockerComposeIntegrationTests { MariaDbR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests() { - super("mariadb-compose.yaml", DockerImageNames.mariadb()); + super("mariadb-compose.yaml", TestImage.MARIADB); } @Test diff --git a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/mongo/MongoDockerComposeConnectionDetailsFactoryIntegrationTests.java b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/mongo/MongoDockerComposeConnectionDetailsFactoryIntegrationTests.java index e863d424e64..45e7809df35 100644 --- a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/mongo/MongoDockerComposeConnectionDetailsFactoryIntegrationTests.java +++ b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/mongo/MongoDockerComposeConnectionDetailsFactoryIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,7 +21,7 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.mongo.MongoConnectionDetails; import org.springframework.boot.docker.compose.service.connection.test.AbstractDockerComposeIntegrationTests; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import static org.assertj.core.api.Assertions.assertThat; @@ -36,7 +36,7 @@ import static org.assertj.core.api.Assertions.assertThat; class MongoDockerComposeConnectionDetailsFactoryIntegrationTests extends AbstractDockerComposeIntegrationTests { MongoDockerComposeConnectionDetailsFactoryIntegrationTests() { - super("mongo-compose.yaml", DockerImageNames.mongo()); + super("mongo-compose.yaml", TestImage.MONGODB); } @Test diff --git a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/mysql/MySqlJdbcDockerComposeConnectionDetailsFactoryIntegrationTests.java b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/mysql/MySqlJdbcDockerComposeConnectionDetailsFactoryIntegrationTests.java index 418ccd85387..4ee038c7423 100644 --- a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/mysql/MySqlJdbcDockerComposeConnectionDetailsFactoryIntegrationTests.java +++ b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/mysql/MySqlJdbcDockerComposeConnectionDetailsFactoryIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.jdbc.JdbcConnectionDetails; import org.springframework.boot.docker.compose.service.connection.test.AbstractDockerComposeIntegrationTests; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import static org.assertj.core.api.Assertions.assertThat; @@ -34,7 +34,7 @@ import static org.assertj.core.api.Assertions.assertThat; class MySqlJdbcDockerComposeConnectionDetailsFactoryIntegrationTests extends AbstractDockerComposeIntegrationTests { MySqlJdbcDockerComposeConnectionDetailsFactoryIntegrationTests() { - super("mysql-compose.yaml", DockerImageNames.mysql()); + super("mysql-compose.yaml", TestImage.MYSQL); } @Test diff --git a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/mysql/MySqlR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests.java b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/mysql/MySqlR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests.java index cf21913c926..59a2f0b72f7 100644 --- a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/mysql/MySqlR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests.java +++ b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/mysql/MySqlR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,7 +21,7 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.r2dbc.R2dbcConnectionDetails; import org.springframework.boot.docker.compose.service.connection.test.AbstractDockerComposeIntegrationTests; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import static org.assertj.core.api.Assertions.assertThat; @@ -35,7 +35,7 @@ import static org.assertj.core.api.Assertions.assertThat; class MySqlR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests extends AbstractDockerComposeIntegrationTests { MySqlR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests() { - super("mysql-compose.yaml", DockerImageNames.mysql()); + super("mysql-compose.yaml", TestImage.MYSQL); } @Test diff --git a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/neo4j/Neo4jDockerComposeConnectionDetailsFactoryIntegrationTests.java b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/neo4j/Neo4jDockerComposeConnectionDetailsFactoryIntegrationTests.java index ca95c13efa1..8ddf02d46cd 100644 --- a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/neo4j/Neo4jDockerComposeConnectionDetailsFactoryIntegrationTests.java +++ b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/neo4j/Neo4jDockerComposeConnectionDetailsFactoryIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,7 +23,7 @@ import org.neo4j.driver.GraphDatabase; import org.springframework.boot.autoconfigure.neo4j.Neo4jConnectionDetails; import org.springframework.boot.docker.compose.service.connection.test.AbstractDockerComposeIntegrationTests; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatNoException; @@ -36,7 +36,7 @@ import static org.assertj.core.api.Assertions.assertThatNoException; class Neo4jDockerComposeConnectionDetailsFactoryIntegrationTests extends AbstractDockerComposeIntegrationTests { Neo4jDockerComposeConnectionDetailsFactoryIntegrationTests() { - super("neo4j-compose.yaml", DockerImageNames.neo4j()); + super("neo4j-compose.yaml", TestImage.NEO4J); } @Test diff --git a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/oracle/OracleFreeJdbcDockerComposeConnectionDetailsFactoryIntegrationTests.java b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/oracle/OracleFreeJdbcDockerComposeConnectionDetailsFactoryIntegrationTests.java index 127fe0f5746..b86565eb440 100644 --- a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/oracle/OracleFreeJdbcDockerComposeConnectionDetailsFactoryIntegrationTests.java +++ b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/oracle/OracleFreeJdbcDockerComposeConnectionDetailsFactoryIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,8 +26,8 @@ import org.junit.jupiter.api.condition.OS; import org.springframework.boot.autoconfigure.jdbc.JdbcConnectionDetails; import org.springframework.boot.docker.compose.service.connection.test.AbstractDockerComposeIntegrationTests; import org.springframework.boot.jdbc.DatabaseDriver; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.boot.testsupport.junit.DisabledOnOs; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.datasource.SimpleDriverDataSource; import org.springframework.util.ClassUtils; @@ -45,7 +45,7 @@ class OracleFreeJdbcDockerComposeConnectionDetailsFactoryIntegrationTests extends AbstractDockerComposeIntegrationTests { OracleFreeJdbcDockerComposeConnectionDetailsFactoryIntegrationTests() { - super("oracle-compose.yaml", DockerImageNames.oracleFree()); + super("oracle-compose.yaml", TestImage.ORACLE_FREE); } @Test diff --git a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/oracle/OracleFreeR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests.java b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/oracle/OracleFreeR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests.java index dea004833c4..8ee8341ad17 100644 --- a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/oracle/OracleFreeR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests.java +++ b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/oracle/OracleFreeR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,8 +27,8 @@ import org.junit.jupiter.api.condition.OS; import org.springframework.boot.autoconfigure.r2dbc.R2dbcConnectionDetails; import org.springframework.boot.docker.compose.service.connection.test.AbstractDockerComposeIntegrationTests; import org.springframework.boot.jdbc.DatabaseDriver; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.boot.testsupport.junit.DisabledOnOs; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; import org.springframework.r2dbc.core.DatabaseClient; import static org.assertj.core.api.Assertions.assertThat; @@ -44,7 +44,7 @@ class OracleFreeR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests extends AbstractDockerComposeIntegrationTests { OracleFreeR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests() { - super("oracle-compose.yaml", DockerImageNames.oracleFree()); + super("oracle-compose.yaml", TestImage.ORACLE_FREE); } @Test diff --git a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/oracle/OracleXeJdbcDockerComposeConnectionDetailsFactoryIntegrationTests.java b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/oracle/OracleXeJdbcDockerComposeConnectionDetailsFactoryIntegrationTests.java index 19ebd926260..2632bb9c784 100644 --- a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/oracle/OracleXeJdbcDockerComposeConnectionDetailsFactoryIntegrationTests.java +++ b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/oracle/OracleXeJdbcDockerComposeConnectionDetailsFactoryIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,8 +26,8 @@ import org.junit.jupiter.api.condition.OS; import org.springframework.boot.autoconfigure.jdbc.JdbcConnectionDetails; import org.springframework.boot.docker.compose.service.connection.test.AbstractDockerComposeIntegrationTests; import org.springframework.boot.jdbc.DatabaseDriver; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.boot.testsupport.junit.DisabledOnOs; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.datasource.SimpleDriverDataSource; import org.springframework.util.ClassUtils; @@ -44,7 +44,7 @@ import static org.assertj.core.api.Assertions.assertThat; class OracleXeJdbcDockerComposeConnectionDetailsFactoryIntegrationTests extends AbstractDockerComposeIntegrationTests { OracleXeJdbcDockerComposeConnectionDetailsFactoryIntegrationTests() { - super("oracle-compose.yaml", DockerImageNames.oracleXe()); + super("oracle-compose.yaml", TestImage.ORACLE_XE); } @Test diff --git a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/oracle/OracleXeR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests.java b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/oracle/OracleXeR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests.java index 2b044d3fb36..6b5fc6b516c 100644 --- a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/oracle/OracleXeR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests.java +++ b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/oracle/OracleXeR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,8 +27,8 @@ import org.junit.jupiter.api.condition.OS; import org.springframework.boot.autoconfigure.r2dbc.R2dbcConnectionDetails; import org.springframework.boot.docker.compose.service.connection.test.AbstractDockerComposeIntegrationTests; import org.springframework.boot.jdbc.DatabaseDriver; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.boot.testsupport.junit.DisabledOnOs; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; import org.springframework.r2dbc.core.DatabaseClient; import static org.assertj.core.api.Assertions.assertThat; @@ -43,7 +43,7 @@ import static org.assertj.core.api.Assertions.assertThat; class OracleXeR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests extends AbstractDockerComposeIntegrationTests { OracleXeR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests() { - super("oracle-compose.yaml", DockerImageNames.oracleXe()); + super("oracle-compose.yaml", TestImage.ORACLE_XE); } @Test diff --git a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/otlp/OpenTelemetryMetricsDockerComposeConnectionDetailsFactoryIntegrationTests.java b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/otlp/OpenTelemetryMetricsDockerComposeConnectionDetailsFactoryIntegrationTests.java index 7f303d5082f..2773ee22e1b 100644 --- a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/otlp/OpenTelemetryMetricsDockerComposeConnectionDetailsFactoryIntegrationTests.java +++ b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/otlp/OpenTelemetryMetricsDockerComposeConnectionDetailsFactoryIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.actuate.autoconfigure.metrics.export.otlp.OtlpMetricsConnectionDetails; import org.springframework.boot.docker.compose.service.connection.test.AbstractDockerComposeIntegrationTests; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import static org.assertj.core.api.Assertions.assertThat; @@ -34,7 +34,7 @@ class OpenTelemetryMetricsDockerComposeConnectionDetailsFactoryIntegrationTests extends AbstractDockerComposeIntegrationTests { OpenTelemetryMetricsDockerComposeConnectionDetailsFactoryIntegrationTests() { - super("otlp-compose.yaml", DockerImageNames.opentelemetry()); + super("otlp-compose.yaml", TestImage.OPENTELEMETRY); } @Test diff --git a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/otlp/OpenTelemetryTracingDockerComposeConnectionDetailsFactoryIntegrationTests.java b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/otlp/OpenTelemetryTracingDockerComposeConnectionDetailsFactoryIntegrationTests.java index 720b90a014f..53bdb735d0d 100644 --- a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/otlp/OpenTelemetryTracingDockerComposeConnectionDetailsFactoryIntegrationTests.java +++ b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/otlp/OpenTelemetryTracingDockerComposeConnectionDetailsFactoryIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.actuate.autoconfigure.tracing.otlp.OtlpTracingConnectionDetails; import org.springframework.boot.docker.compose.service.connection.test.AbstractDockerComposeIntegrationTests; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import static org.assertj.core.api.Assertions.assertThat; @@ -34,7 +34,7 @@ class OpenTelemetryTracingDockerComposeConnectionDetailsFactoryIntegrationTests extends AbstractDockerComposeIntegrationTests { OpenTelemetryTracingDockerComposeConnectionDetailsFactoryIntegrationTests() { - super("otlp-compose.yaml", DockerImageNames.opentelemetry()); + super("otlp-compose.yaml", TestImage.OPENTELEMETRY); } @Test diff --git a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/postgres/PostgresJdbcDockerComposeConnectionDetailsFactoryIntegrationTests.java b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/postgres/PostgresJdbcDockerComposeConnectionDetailsFactoryIntegrationTests.java index b0a3873cdf5..8a96eb5df70 100644 --- a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/postgres/PostgresJdbcDockerComposeConnectionDetailsFactoryIntegrationTests.java +++ b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/postgres/PostgresJdbcDockerComposeConnectionDetailsFactoryIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.jdbc.JdbcConnectionDetails; import org.springframework.boot.docker.compose.service.connection.test.AbstractDockerComposeIntegrationTests; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import static org.assertj.core.api.Assertions.assertThat; @@ -34,7 +34,7 @@ import static org.assertj.core.api.Assertions.assertThat; class PostgresJdbcDockerComposeConnectionDetailsFactoryIntegrationTests extends AbstractDockerComposeIntegrationTests { PostgresJdbcDockerComposeConnectionDetailsFactoryIntegrationTests() { - super("postgres-compose.yaml", DockerImageNames.postgresql()); + super("postgres-compose.yaml", TestImage.POSTGRESQL); } @Test diff --git a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/postgres/PostgresR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests.java b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/postgres/PostgresR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests.java index ba152f37c8c..8baa22896d0 100644 --- a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/postgres/PostgresR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests.java +++ b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/postgres/PostgresR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,7 +21,7 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.r2dbc.R2dbcConnectionDetails; import org.springframework.boot.docker.compose.service.connection.test.AbstractDockerComposeIntegrationTests; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import static org.assertj.core.api.Assertions.assertThat; @@ -35,7 +35,7 @@ import static org.assertj.core.api.Assertions.assertThat; class PostgresR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests extends AbstractDockerComposeIntegrationTests { PostgresR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests() { - super("postgres-compose.yaml", DockerImageNames.postgresql()); + super("postgres-compose.yaml", TestImage.POSTGRESQL); } @Test diff --git a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/pulsar/PulsarDockerComposeConnectionDetailsFactoryIntegrationTests.java b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/pulsar/PulsarDockerComposeConnectionDetailsFactoryIntegrationTests.java index ee0bccd247e..01f383eeeb3 100644 --- a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/pulsar/PulsarDockerComposeConnectionDetailsFactoryIntegrationTests.java +++ b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/pulsar/PulsarDockerComposeConnectionDetailsFactoryIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2023-2023 the original author or authors. + * Copyright 2023-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.pulsar.PulsarConnectionDetails; import org.springframework.boot.docker.compose.service.connection.test.AbstractDockerComposeIntegrationTests; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import static org.assertj.core.api.Assertions.assertThat; @@ -32,7 +32,7 @@ import static org.assertj.core.api.Assertions.assertThat; class PulsarDockerComposeConnectionDetailsFactoryIntegrationTests extends AbstractDockerComposeIntegrationTests { PulsarDockerComposeConnectionDetailsFactoryIntegrationTests() { - super("pulsar-compose.yaml", DockerImageNames.pulsar()); + super("pulsar-compose.yaml", TestImage.PULSAR); } @Test diff --git a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/rabbit/RabbitDockerComposeConnectionDetailsFactoryIntegrationTests.java b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/rabbit/RabbitDockerComposeConnectionDetailsFactoryIntegrationTests.java index 96ccf959aaa..13ab04afeac 100644 --- a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/rabbit/RabbitDockerComposeConnectionDetailsFactoryIntegrationTests.java +++ b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/rabbit/RabbitDockerComposeConnectionDetailsFactoryIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,7 +21,7 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.amqp.RabbitConnectionDetails; import org.springframework.boot.autoconfigure.amqp.RabbitConnectionDetails.Address; import org.springframework.boot.docker.compose.service.connection.test.AbstractDockerComposeIntegrationTests; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import static org.assertj.core.api.Assertions.assertThat; @@ -35,7 +35,7 @@ import static org.assertj.core.api.Assertions.assertThat; class RabbitDockerComposeConnectionDetailsFactoryIntegrationTests extends AbstractDockerComposeIntegrationTests { RabbitDockerComposeConnectionDetailsFactoryIntegrationTests() { - super("rabbit-compose.yaml", DockerImageNames.rabbit()); + super("rabbit-compose.yaml", TestImage.RABBITMQ); } @Test diff --git a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/redis/RedisDockerComposeConnectionDetailsFactoryIntegrationTests.java b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/redis/RedisDockerComposeConnectionDetailsFactoryIntegrationTests.java index 720f6a1d940..e7b3c7ff12b 100644 --- a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/redis/RedisDockerComposeConnectionDetailsFactoryIntegrationTests.java +++ b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/redis/RedisDockerComposeConnectionDetailsFactoryIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,7 +21,7 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.data.redis.RedisConnectionDetails; import org.springframework.boot.autoconfigure.data.redis.RedisConnectionDetails.Standalone; import org.springframework.boot.docker.compose.service.connection.test.AbstractDockerComposeIntegrationTests; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import static org.assertj.core.api.Assertions.assertThat; @@ -35,7 +35,7 @@ import static org.assertj.core.api.Assertions.assertThat; class RedisDockerComposeConnectionDetailsFactoryIntegrationTests extends AbstractDockerComposeIntegrationTests { RedisDockerComposeConnectionDetailsFactoryIntegrationTests() { - super("redis-compose.yaml", DockerImageNames.redis()); + super("redis-compose.yaml", TestImage.REDIS); } @Test diff --git a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/sqlserver/SqlServerJdbcDockerComposeConnectionDetailsFactoryIntegrationTests.java b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/sqlserver/SqlServerJdbcDockerComposeConnectionDetailsFactoryIntegrationTests.java index f9f020e4e06..f6166177415 100644 --- a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/sqlserver/SqlServerJdbcDockerComposeConnectionDetailsFactoryIntegrationTests.java +++ b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/sqlserver/SqlServerJdbcDockerComposeConnectionDetailsFactoryIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,8 +24,8 @@ import org.junit.jupiter.api.condition.OS; import org.springframework.boot.autoconfigure.jdbc.JdbcConnectionDetails; import org.springframework.boot.docker.compose.service.connection.test.AbstractDockerComposeIntegrationTests; import org.springframework.boot.jdbc.DatabaseDriver; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.boot.testsupport.junit.DisabledOnOs; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.datasource.SimpleDriverDataSource; import org.springframework.util.ClassUtils; @@ -42,7 +42,7 @@ import static org.assertj.core.api.Assertions.assertThat; class SqlServerJdbcDockerComposeConnectionDetailsFactoryIntegrationTests extends AbstractDockerComposeIntegrationTests { SqlServerJdbcDockerComposeConnectionDetailsFactoryIntegrationTests() { - super("mssqlserver-compose.yaml", DockerImageNames.sqlserver()); + super("mssqlserver-compose.yaml", TestImage.SQL_SERVER); } @Test diff --git a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/sqlserver/SqlServerR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests.java b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/sqlserver/SqlServerR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests.java index 91bf322bd1a..fff7aa22683 100644 --- a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/sqlserver/SqlServerR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests.java +++ b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/sqlserver/SqlServerR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,8 +26,8 @@ import org.junit.jupiter.api.condition.OS; import org.springframework.boot.autoconfigure.r2dbc.R2dbcConnectionDetails; import org.springframework.boot.docker.compose.service.connection.test.AbstractDockerComposeIntegrationTests; import org.springframework.boot.jdbc.DatabaseDriver; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.boot.testsupport.junit.DisabledOnOs; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; import org.springframework.r2dbc.core.DatabaseClient; import static org.assertj.core.api.Assertions.assertThat; @@ -43,7 +43,7 @@ class SqlServerR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests extends AbstractDockerComposeIntegrationTests { SqlServerR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests() { - super("mssqlserver-compose.yaml", DockerImageNames.sqlserver()); + super("mssqlserver-compose.yaml", TestImage.SQL_SERVER); } @Test diff --git a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/test/AbstractDockerComposeIntegrationTests.java b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/test/AbstractDockerComposeIntegrationTests.java index 2bfb001bdab..f3c68124e9f 100644 --- a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/test/AbstractDockerComposeIntegrationTests.java +++ b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/test/AbstractDockerComposeIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -31,6 +31,7 @@ import org.testcontainers.utility.DockerImageName; import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplicationShutdownHandlers; import org.springframework.boot.autoconfigure.service.connection.ConnectionDetails; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.boot.testsupport.process.DisabledIfProcessUnavailable; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.ClassPathResource; @@ -64,9 +65,9 @@ public abstract class AbstractDockerComposeIntegrationTests { ((Runnable) shutdownHandlers).run(); } - protected AbstractDockerComposeIntegrationTests(String composeResource, DockerImageName dockerImageName) { + protected AbstractDockerComposeIntegrationTests(String composeResource, TestImage testImage) { this.composeResource = new ClassPathResource(composeResource, getClass()); - this.dockerImageName = dockerImageName; + this.dockerImageName = DockerImageName.parse(testImage.toString()); } protected final T run(Class type) { diff --git a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/zipkin/ZipkinDockerComposeConnectionDetailsFactoryIntegrationTests.java b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/zipkin/ZipkinDockerComposeConnectionDetailsFactoryIntegrationTests.java index b77d558789b..af36be03494 100644 --- a/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/zipkin/ZipkinDockerComposeConnectionDetailsFactoryIntegrationTests.java +++ b/spring-boot-project/spring-boot-docker-compose/src/test/java/org/springframework/boot/docker/compose/service/connection/zipkin/ZipkinDockerComposeConnectionDetailsFactoryIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.actuate.autoconfigure.tracing.zipkin.ZipkinConnectionDetails; import org.springframework.boot.docker.compose.service.connection.test.AbstractDockerComposeIntegrationTests; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import static org.assertj.core.api.Assertions.assertThat; @@ -34,7 +34,7 @@ import static org.assertj.core.api.Assertions.assertThat; class ZipkinDockerComposeConnectionDetailsFactoryIntegrationTests extends AbstractDockerComposeIntegrationTests { ZipkinDockerComposeConnectionDetailsFactoryIntegrationTests() { - super("zipkin-compose.yaml", DockerImageNames.zipkin()); + super("zipkin-compose.yaml", TestImage.ZIPKIN); } @Test diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/cassandra/DataCassandraTestIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/cassandra/DataCassandraTestIntegrationTests.java index 33e9d853b08..5fd24430d24 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/cassandra/DataCassandraTestIntegrationTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/cassandra/DataCassandraTestIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,6 +21,7 @@ import java.util.UUID; import com.datastax.oss.driver.api.core.CqlSession; import com.datastax.oss.driver.api.core.CqlSessionBuilder; import org.junit.jupiter.api.Test; +import org.testcontainers.containers.CassandraContainer; import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; @@ -30,7 +31,7 @@ import org.springframework.boot.test.autoconfigure.data.redis.ExampleService; import org.springframework.boot.test.context.TestConfiguration; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; import org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration; -import org.springframework.boot.testsupport.testcontainers.CassandraContainer; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.data.cassandra.core.CassandraTemplate; @@ -55,7 +56,7 @@ class DataCassandraTestIntegrationTests { @Container @ServiceConnection - static final CassandraContainer cassandra = new CassandraContainer(); + static final CassandraContainer cassandra = TestImage.container(CassandraContainer.class); @Autowired private CassandraTemplate cassandraTemplate; diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/cassandra/DataCassandraTestWithIncludeFilterIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/cassandra/DataCassandraTestWithIncludeFilterIntegrationTests.java index 7766fa22b3f..1056a9ac24a 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/cassandra/DataCassandraTestWithIncludeFilterIntegrationTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/cassandra/DataCassandraTestWithIncludeFilterIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,13 +21,14 @@ import java.util.UUID; import com.datastax.oss.driver.api.core.CqlSession; import com.datastax.oss.driver.api.core.CqlSessionBuilder; import org.junit.jupiter.api.Test; +import org.testcontainers.containers.CassandraContainer; import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.TestConfiguration; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.CassandraContainer; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan.Filter; import org.springframework.stereotype.Service; @@ -52,7 +53,7 @@ class DataCassandraTestWithIncludeFilterIntegrationTests { @Container @ServiceConnection - static final CassandraContainer cassandra = new CassandraContainer(); + static final CassandraContainer cassandra = TestImage.container(CassandraContainer.class); @Autowired private ExampleRepository exampleRepository; diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/couchbase/DataCouchbaseTestIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/couchbase/DataCouchbaseTestIntegrationTests.java index 2ebef2224b6..0609288b90b 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/couchbase/DataCouchbaseTestIntegrationTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/couchbase/DataCouchbaseTestIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,8 +16,6 @@ package org.springframework.boot.test.autoconfigure.data.couchbase; -import java.time.Duration; - import org.junit.jupiter.api.Test; import org.testcontainers.couchbase.BucketDefinition; import org.testcontainers.couchbase.CouchbaseContainer; @@ -29,7 +27,7 @@ import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; import org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.ApplicationContext; import org.springframework.data.couchbase.core.CouchbaseTemplate; @@ -54,10 +52,8 @@ class DataCouchbaseTestIntegrationTests { @Container @ServiceConnection - static final CouchbaseContainer couchbase = new CouchbaseContainer(DockerImageNames.couchbase()) + static final CouchbaseContainer couchbase = TestImage.container(CouchbaseContainer.class) .withEnabledServices(CouchbaseService.KV, CouchbaseService.INDEX, CouchbaseService.QUERY) - .withStartupAttempts(5) - .withStartupTimeout(Duration.ofMinutes(10)) .withBucket(new BucketDefinition(BUCKET_NAME)); @Autowired diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/couchbase/DataCouchbaseTestReactiveIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/couchbase/DataCouchbaseTestReactiveIntegrationTests.java index 7730acd9426..341561d8dc8 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/couchbase/DataCouchbaseTestReactiveIntegrationTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/couchbase/DataCouchbaseTestReactiveIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,7 +27,7 @@ import org.testcontainers.junit.jupiter.Testcontainers; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.data.couchbase.core.ReactiveCouchbaseTemplate; import static org.assertj.core.api.Assertions.assertThat; @@ -50,10 +50,8 @@ class DataCouchbaseTestReactiveIntegrationTests { @Container @ServiceConnection - static final CouchbaseContainer couchbase = new CouchbaseContainer(DockerImageNames.couchbase()) + static final CouchbaseContainer couchbase = TestImage.container(CouchbaseContainer.class) .withEnabledServices(CouchbaseService.KV, CouchbaseService.INDEX, CouchbaseService.QUERY) - .withStartupAttempts(5) - .withStartupTimeout(Duration.ofMinutes(10)) .withBucket(new BucketDefinition(BUCKET_NAME)); @Autowired diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/couchbase/DataCouchbaseTestWithIncludeFilterIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/couchbase/DataCouchbaseTestWithIncludeFilterIntegrationTests.java index 7c6c89f1cfa..83bc681803c 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/couchbase/DataCouchbaseTestWithIncludeFilterIntegrationTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/couchbase/DataCouchbaseTestWithIncludeFilterIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,8 +16,6 @@ package org.springframework.boot.test.autoconfigure.data.couchbase; -import java.time.Duration; - import org.junit.jupiter.api.Test; import org.testcontainers.couchbase.BucketDefinition; import org.testcontainers.couchbase.CouchbaseContainer; @@ -27,7 +25,7 @@ import org.testcontainers.junit.jupiter.Testcontainers; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.annotation.ComponentScan.Filter; import org.springframework.stereotype.Service; @@ -48,15 +46,11 @@ import static org.assertj.core.api.Assertions.assertThat; @Testcontainers(disabledWithoutDocker = true) class DataCouchbaseTestWithIncludeFilterIntegrationTests { - private static final String BUCKET_NAME = "cbbucket"; - @Container @ServiceConnection - static final CouchbaseContainer couchbase = new CouchbaseContainer(DockerImageNames.couchbase()) + static final CouchbaseContainer couchbase = TestImage.container(CouchbaseContainer.class) .withEnabledServices(CouchbaseService.KV, CouchbaseService.INDEX, CouchbaseService.QUERY) - .withStartupAttempts(5) - .withStartupTimeout(Duration.ofMinutes(10)) - .withBucket(new BucketDefinition(BUCKET_NAME)); + .withBucket(new BucketDefinition("cbbucket")); @Autowired private ExampleRepository exampleRepository; diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/elasticsearch/DataElasticsearchTestIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/elasticsearch/DataElasticsearchTestIntegrationTests.java index 5cdf5a56624..0ddff8a26e4 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/elasticsearch/DataElasticsearchTestIntegrationTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/elasticsearch/DataElasticsearchTestIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,7 +16,6 @@ package org.springframework.boot.test.autoconfigure.data.elasticsearch; -import java.time.Duration; import java.util.UUID; import org.junit.jupiter.api.Test; @@ -28,7 +27,7 @@ import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; import org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.ApplicationContext; import org.springframework.data.elasticsearch.client.elc.ElasticsearchTemplate; @@ -50,10 +49,7 @@ class DataElasticsearchTestIntegrationTests { @Container @ServiceConnection - static final ElasticsearchContainer elasticsearch = new ElasticsearchContainer(DockerImageNames.elasticsearch()) - .withEnv("ES_JAVA_OPTS", "-Xms32m -Xmx512m") - .withStartupAttempts(5) - .withStartupTimeout(Duration.ofMinutes(10)); + static final ElasticsearchContainer elasticsearch = TestImage.container(ElasticsearchContainer.class); @Autowired private ElasticsearchTemplate elasticsearchTemplate; diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/elasticsearch/DataElasticsearchTestPropertiesIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/elasticsearch/DataElasticsearchTestPropertiesIntegrationTests.java index de0a64d1830..37542392f55 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/elasticsearch/DataElasticsearchTestPropertiesIntegrationTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/elasticsearch/DataElasticsearchTestPropertiesIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,8 +16,6 @@ package org.springframework.boot.test.autoconfigure.data.elasticsearch; -import java.time.Duration; - import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.testcontainers.elasticsearch.ElasticsearchContainer; @@ -26,7 +24,7 @@ import org.testcontainers.junit.jupiter.Testcontainers; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.core.env.Environment; import static org.assertj.core.api.Assertions.assertThat; @@ -46,10 +44,7 @@ class DataElasticsearchTestPropertiesIntegrationTests { @Container @ServiceConnection - static final ElasticsearchContainer elasticsearch = new ElasticsearchContainer(DockerImageNames.elasticsearch()) - .withEnv("ES_JAVA_OPTS", "-Xms32m -Xmx512m") - .withStartupAttempts(5) - .withStartupTimeout(Duration.ofMinutes(10)); + static final ElasticsearchContainer elasticsearch = TestImage.container(ElasticsearchContainer.class); @Autowired private Environment environment; diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/elasticsearch/DataElasticsearchTestReactiveIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/elasticsearch/DataElasticsearchTestReactiveIntegrationTests.java index 45d6e6c74ef..7d386967951 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/elasticsearch/DataElasticsearchTestReactiveIntegrationTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/elasticsearch/DataElasticsearchTestReactiveIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,7 +25,7 @@ import org.testcontainers.junit.jupiter.Testcontainers; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.data.elasticsearch.client.elc.ReactiveElasticsearchTemplate; import static org.assertj.core.api.Assertions.assertThat; @@ -45,10 +45,7 @@ class DataElasticsearchTestReactiveIntegrationTests { @Container @ServiceConnection - static final ElasticsearchContainer elasticsearch = new ElasticsearchContainer(DockerImageNames.elasticsearch()) - .withEnv("ES_JAVA_OPTS", "-Xms32m -Xmx512m") - .withStartupAttempts(5) - .withStartupTimeout(Duration.ofMinutes(10)); + static final ElasticsearchContainer elasticsearch = TestImage.container(ElasticsearchContainer.class); @Autowired private ReactiveElasticsearchTemplate elasticsearchTemplate; diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/elasticsearch/DataElasticsearchTestWithIncludeFilterIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/elasticsearch/DataElasticsearchTestWithIncludeFilterIntegrationTests.java index 60aebb21d8e..edb04d9df2c 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/elasticsearch/DataElasticsearchTestWithIncludeFilterIntegrationTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/elasticsearch/DataElasticsearchTestWithIncludeFilterIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,7 +16,6 @@ package org.springframework.boot.test.autoconfigure.data.elasticsearch; -import java.time.Duration; import java.util.UUID; import org.junit.jupiter.api.Test; @@ -26,7 +25,7 @@ import org.testcontainers.junit.jupiter.Testcontainers; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.annotation.ComponentScan.Filter; import org.springframework.stereotype.Service; @@ -47,10 +46,7 @@ class DataElasticsearchTestWithIncludeFilterIntegrationTests { @Container @ServiceConnection - static final ElasticsearchContainer elasticsearch = new ElasticsearchContainer(DockerImageNames.elasticsearch()) - .withEnv("ES_JAVA_OPTS", "-Xms32m -Xmx512m") - .withStartupAttempts(5) - .withStartupTimeout(Duration.ofMinutes(10)); + static final ElasticsearchContainer elasticsearch = TestImage.container(ElasticsearchContainer.class); @Autowired private ExampleRepository exampleRepository; diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/mongo/DataMongoTestIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/mongo/DataMongoTestIntegrationTests.java index aaa55491c71..538bdd16052 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/mongo/DataMongoTestIntegrationTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/mongo/DataMongoTestIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,8 +16,6 @@ package org.springframework.boot.test.autoconfigure.data.mongo; -import java.time.Duration; - import org.junit.jupiter.api.Test; import org.testcontainers.containers.MongoDBContainer; import org.testcontainers.junit.jupiter.Container; @@ -27,7 +25,7 @@ import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; import org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.ApplicationContext; import org.springframework.data.mongodb.core.MongoTemplate; @@ -49,8 +47,7 @@ class DataMongoTestIntegrationTests { @Container @ServiceConnection - static final MongoDBContainer mongoDB = new MongoDBContainer(DockerImageNames.mongo()).withStartupAttempts(5) - .withStartupTimeout(Duration.ofMinutes(5)); + static final MongoDBContainer mongoDb = TestImage.container(MongoDBContainer.class); @Autowired private MongoTemplate mongoTemplate; diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/mongo/DataMongoTestReactiveIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/mongo/DataMongoTestReactiveIntegrationTests.java index 8adb740b459..2b2b06aceaa 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/mongo/DataMongoTestReactiveIntegrationTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/mongo/DataMongoTestReactiveIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,7 +25,7 @@ import org.testcontainers.junit.jupiter.Testcontainers; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.data.mongodb.core.ReactiveMongoTemplate; import static org.assertj.core.api.Assertions.assertThat; @@ -44,8 +44,7 @@ class DataMongoTestReactiveIntegrationTests { @Container @ServiceConnection - static final MongoDBContainer mongoDB = new MongoDBContainer(DockerImageNames.mongo()).withStartupAttempts(5) - .withStartupTimeout(Duration.ofMinutes(5)); + static final MongoDBContainer mongoDb = TestImage.container(MongoDBContainer.class); @Autowired private ReactiveMongoTemplate mongoTemplate; diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/mongo/DataMongoTestWithIncludeFilterIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/mongo/DataMongoTestWithIncludeFilterIntegrationTests.java index 24e02391965..97f6e84876c 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/mongo/DataMongoTestWithIncludeFilterIntegrationTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/mongo/DataMongoTestWithIncludeFilterIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,8 +16,6 @@ package org.springframework.boot.test.autoconfigure.data.mongo; -import java.time.Duration; - import org.junit.jupiter.api.Test; import org.testcontainers.containers.MongoDBContainer; import org.testcontainers.junit.jupiter.Container; @@ -25,7 +23,7 @@ import org.testcontainers.junit.jupiter.Testcontainers; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.annotation.ComponentScan.Filter; import org.springframework.stereotype.Service; @@ -45,8 +43,7 @@ class DataMongoTestWithIncludeFilterIntegrationTests { @Container @ServiceConnection - static final MongoDBContainer mongoDB = new MongoDBContainer(DockerImageNames.mongo()).withStartupAttempts(5) - .withStartupTimeout(Duration.ofMinutes(5)); + static final MongoDBContainer mongoDb = TestImage.container(MongoDBContainer.class); @Autowired private ExampleService service; diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/mongo/TransactionalDataMongoTestIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/mongo/TransactionalDataMongoTestIntegrationTests.java index c76dad56e36..655650ddf38 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/mongo/TransactionalDataMongoTestIntegrationTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/mongo/TransactionalDataMongoTestIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,8 +16,6 @@ package org.springframework.boot.test.autoconfigure.data.mongo; -import java.time.Duration; - import org.junit.jupiter.api.Test; import org.testcontainers.containers.MongoDBContainer; import org.testcontainers.junit.jupiter.Container; @@ -27,7 +25,7 @@ import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.TestConfiguration; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.annotation.Bean; import org.springframework.data.mongodb.MongoDatabaseFactory; import org.springframework.data.mongodb.MongoTransactionManager; @@ -50,8 +48,7 @@ class TransactionalDataMongoTestIntegrationTests { @Container @ServiceConnection - static final MongoDBContainer mongoDB = new MongoDBContainer(DockerImageNames.mongo()).withStartupAttempts(5) - .withStartupTimeout(Duration.ofMinutes(5)); + static final MongoDBContainer mongoDb = TestImage.container(MongoDBContainer.class); @Autowired private ExampleRepository exampleRepository; diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/neo4j/DataNeo4jTestIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/neo4j/DataNeo4jTestIntegrationTests.java index 0d1f95995c7..9554ccd65d7 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/neo4j/DataNeo4jTestIntegrationTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/neo4j/DataNeo4jTestIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,8 +16,6 @@ package org.springframework.boot.test.autoconfigure.data.neo4j; -import java.time.Duration; - import org.junit.jupiter.api.Test; import org.testcontainers.containers.Neo4jContainer; import org.testcontainers.junit.jupiter.Container; @@ -27,7 +25,7 @@ import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; import org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.ApplicationContext; import org.springframework.data.neo4j.core.Neo4jTemplate; @@ -51,8 +49,7 @@ class DataNeo4jTestIntegrationTests { @Container @ServiceConnection - static final Neo4jContainer neo4j = new Neo4jContainer<>(DockerImageNames.neo4j()).withStartupAttempts(5) - .withStartupTimeout(Duration.ofMinutes(10)); + static final Neo4jContainer neo4j = TestImage.container(Neo4jContainer.class); @Autowired private Neo4jTemplate neo4jTemplate; diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/neo4j/DataNeo4jTestPropertiesIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/neo4j/DataNeo4jTestPropertiesIntegrationTests.java index 0f97ff5f4de..8e7d1b0163e 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/neo4j/DataNeo4jTestPropertiesIntegrationTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/neo4j/DataNeo4jTestPropertiesIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,8 +16,6 @@ package org.springframework.boot.test.autoconfigure.data.neo4j; -import java.time.Duration; - import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.testcontainers.containers.Neo4jContainer; @@ -26,7 +24,7 @@ import org.testcontainers.junit.jupiter.Testcontainers; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.core.env.Environment; import static org.assertj.core.api.Assertions.assertThat; @@ -46,9 +44,7 @@ class DataNeo4jTestPropertiesIntegrationTests { @Container @ServiceConnection - static final Neo4jContainer neo4j = new Neo4jContainer<>(DockerImageNames.neo4j()).withoutAuthentication() - .withStartupAttempts(5) - .withStartupTimeout(Duration.ofMinutes(10)); + static final Neo4jContainer neo4j = TestImage.container(Neo4jContainer.class).withoutAuthentication(); @Autowired private Environment environment; diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/neo4j/DataNeo4jTestReactiveIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/neo4j/DataNeo4jTestReactiveIntegrationTests.java index 749af312bee..2ffcb33c329 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/neo4j/DataNeo4jTestReactiveIntegrationTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/neo4j/DataNeo4jTestReactiveIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -30,7 +30,7 @@ import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.TestConfiguration; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.data.neo4j.core.ReactiveDatabaseSelectionProvider; @@ -57,9 +57,7 @@ class DataNeo4jTestReactiveIntegrationTests { @Container @ServiceConnection - static final Neo4jContainer neo4j = new Neo4jContainer<>(DockerImageNames.neo4j()).withoutAuthentication() - .withStartupAttempts(5) - .withStartupTimeout(Duration.ofMinutes(10)); + static final Neo4jContainer neo4j = TestImage.container(Neo4jContainer.class).withoutAuthentication(); @Autowired private ReactiveNeo4jTemplate neo4jTemplate; diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/neo4j/DataNeo4jTestWithIncludeFilterIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/neo4j/DataNeo4jTestWithIncludeFilterIntegrationTests.java index f2a4a822add..718da518653 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/neo4j/DataNeo4jTestWithIncludeFilterIntegrationTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/neo4j/DataNeo4jTestWithIncludeFilterIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,8 +16,6 @@ package org.springframework.boot.test.autoconfigure.data.neo4j; -import java.time.Duration; - import org.junit.jupiter.api.Test; import org.testcontainers.containers.Neo4jContainer; import org.testcontainers.junit.jupiter.Container; @@ -25,7 +23,7 @@ import org.testcontainers.junit.jupiter.Testcontainers; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.annotation.ComponentScan.Filter; import org.springframework.stereotype.Service; @@ -46,9 +44,7 @@ class DataNeo4jTestWithIncludeFilterIntegrationTests { @Container @ServiceConnection - static final Neo4jContainer neo4j = new Neo4jContainer<>(DockerImageNames.neo4j()).withoutAuthentication() - .withStartupAttempts(5) - .withStartupTimeout(Duration.ofMinutes(10)); + static final Neo4jContainer neo4j = TestImage.container(Neo4jContainer.class).withoutAuthentication(); @Autowired private ExampleService service; diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/redis/DataRedisTestIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/redis/DataRedisTestIntegrationTests.java index 0018b31976f..50ab4defe99 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/redis/DataRedisTestIntegrationTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/redis/DataRedisTestIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,7 +27,8 @@ import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; import org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration; -import org.springframework.boot.testsupport.testcontainers.RedisContainer; +import org.springframework.boot.testsupport.container.RedisContainer; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.ApplicationContext; import org.springframework.data.redis.core.RedisOperations; @@ -51,7 +52,7 @@ class DataRedisTestIntegrationTests { @Container @ServiceConnection - static RedisContainer redis = new RedisContainer(); + static RedisContainer redis = TestImage.container(RedisContainer.class); @Autowired private RedisOperations operations; diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/redis/DataRedisTestPropertiesIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/redis/DataRedisTestPropertiesIntegrationTests.java index d4897ebaaf9..49c6f1a67a0 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/redis/DataRedisTestPropertiesIntegrationTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/redis/DataRedisTestPropertiesIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,7 +23,8 @@ import org.testcontainers.junit.jupiter.Testcontainers; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.RedisContainer; +import org.springframework.boot.testsupport.container.RedisContainer; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.core.env.Environment; import static org.assertj.core.api.Assertions.assertThat; @@ -43,7 +44,7 @@ class DataRedisTestPropertiesIntegrationTests { @Container @ServiceConnection - static final RedisContainer redis = new RedisContainer(); + static final RedisContainer redis = TestImage.container(RedisContainer.class); @Autowired private Environment environment; diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/redis/DataRedisTestReactiveIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/redis/DataRedisTestReactiveIntegrationTests.java index 4d91aae06f8..be773935ba6 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/redis/DataRedisTestReactiveIntegrationTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/redis/DataRedisTestReactiveIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,7 +27,8 @@ import reactor.test.StepVerifier; import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.RedisContainer; +import org.springframework.boot.testsupport.container.RedisContainer; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.ApplicationContext; import org.springframework.data.redis.core.ReactiveRedisOperations; @@ -47,7 +48,7 @@ class DataRedisTestReactiveIntegrationTests { @Container @ServiceConnection - static RedisContainer redis = new RedisContainer(); + static RedisContainer redis = TestImage.container(RedisContainer.class); @Autowired private ReactiveRedisOperations operations; diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/redis/DataRedisTestWithIncludeFilterIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/redis/DataRedisTestWithIncludeFilterIntegrationTests.java index c46659b9dbb..233511a441d 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/redis/DataRedisTestWithIncludeFilterIntegrationTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/redis/DataRedisTestWithIncludeFilterIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,7 +22,8 @@ import org.testcontainers.junit.jupiter.Testcontainers; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.RedisContainer; +import org.springframework.boot.testsupport.container.RedisContainer; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.annotation.ComponentScan.Filter; import org.springframework.stereotype.Service; @@ -42,7 +43,7 @@ class DataRedisTestWithIncludeFilterIntegrationTests { @Container @ServiceConnection - static final RedisContainer redis = new RedisContainer(); + static final RedisContainer redis = TestImage.container(RedisContainer.class); @Autowired private ExampleRepository exampleRepository; diff --git a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/ImportTestcontainersTests.java b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/ImportTestcontainersTests.java index 6b3ef4722fd..c3d0bd43703 100644 --- a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/ImportTestcontainersTests.java +++ b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/ImportTestcontainersTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,8 +26,8 @@ import org.testcontainers.containers.PostgreSQLContainer; import org.springframework.boot.testcontainers.beans.TestcontainerBeanDefinition; import org.springframework.boot.testcontainers.context.ImportTestcontainers; -import org.springframework.boot.testsupport.testcontainers.DisabledIfDockerUnavailable; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.DisabledIfDockerUnavailable; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.test.context.DynamicPropertyRegistry; import org.springframework.test.context.DynamicPropertySource; @@ -126,7 +126,7 @@ class ImportTestcontainersTests { static class ImportWithoutValue { @ContainerAnnotation - static PostgreSQLContainer container = new PostgreSQLContainer<>(DockerImageNames.postgresql()); + static PostgreSQLContainer container = TestImage.container(PostgreSQLContainer.class); } @@ -150,14 +150,14 @@ class ImportTestcontainersTests { @ImportTestcontainers static class NonStaticContainer { - PostgreSQLContainer container = new PostgreSQLContainer<>(DockerImageNames.postgresql()); + PostgreSQLContainer container = TestImage.container(PostgreSQLContainer.class); } interface ContainerDefinitions { @ContainerAnnotation - PostgreSQLContainer container = new PostgreSQLContainer<>(DockerImageNames.postgresql()); + PostgreSQLContainer container = TestImage.container(PostgreSQLContainer.class); } @@ -169,7 +169,7 @@ class ImportTestcontainersTests { @ImportTestcontainers static class ContainerDefinitionsWithDynamicPropertySource { - static PostgreSQLContainer container = new PostgreSQLContainer<>(DockerImageNames.postgresql()); + static PostgreSQLContainer container = TestImage.container(PostgreSQLContainer.class); @DynamicPropertySource static void containerProperties(DynamicPropertyRegistry registry) { diff --git a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/LoadTimeWeaverAwareConsumerImportTestcontainersTests.java b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/LoadTimeWeaverAwareConsumerImportTestcontainersTests.java index 8deda3f2b15..a41ad8aea17 100644 --- a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/LoadTimeWeaverAwareConsumerImportTestcontainersTests.java +++ b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/LoadTimeWeaverAwareConsumerImportTestcontainersTests.java @@ -24,7 +24,7 @@ import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.JdbcConnectionDetails; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.testcontainers.context.ImportTestcontainers; -import org.springframework.boot.testsupport.testcontainers.DisabledIfDockerUnavailable; +import org.springframework.boot.testsupport.container.DisabledIfDockerUnavailable; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.weaving.LoadTimeWeaverAware; diff --git a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/lifecycle/TestContainersParallelStartupIntegrationTests.java b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/lifecycle/TestContainersParallelStartupIntegrationTests.java index 677595e33f5..b87412d0cc5 100644 --- a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/lifecycle/TestContainersParallelStartupIntegrationTests.java +++ b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/lifecycle/TestContainersParallelStartupIntegrationTests.java @@ -23,8 +23,8 @@ import org.testcontainers.containers.PostgreSQLContainer; import org.springframework.boot.test.system.CapturedOutput; import org.springframework.boot.test.system.OutputCaptureExtension; import org.springframework.boot.testcontainers.lifecycle.TestContainersParallelStartupIntegrationTests.ContainerConfig; -import org.springframework.boot.testsupport.testcontainers.DisabledIfDockerUnavailable; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.DisabledIfDockerUnavailable; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.test.context.ContextConfiguration; @@ -55,17 +55,17 @@ public class TestContainersParallelStartupIntegrationTests { @Bean static PostgreSQLContainer container1() { - return new PostgreSQLContainer<>(DockerImageNames.postgresql()); + return TestImage.container(PostgreSQLContainer.class); } @Bean static PostgreSQLContainer container2() { - return new PostgreSQLContainer<>(DockerImageNames.postgresql()); + return TestImage.container(PostgreSQLContainer.class); } @Bean static PostgreSQLContainer container3() { - return new PostgreSQLContainer<>(DockerImageNames.postgresql()); + return TestImage.container(PostgreSQLContainer.class); } } diff --git a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/lifecycle/TestContainersParallelStartupWithImportTestcontainersIntegrationTests.java b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/lifecycle/TestContainersParallelStartupWithImportTestcontainersIntegrationTests.java index a117be2e02f..7635a23228c 100644 --- a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/lifecycle/TestContainersParallelStartupWithImportTestcontainersIntegrationTests.java +++ b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/lifecycle/TestContainersParallelStartupWithImportTestcontainersIntegrationTests.java @@ -25,8 +25,8 @@ import org.springframework.boot.test.system.CapturedOutput; import org.springframework.boot.test.system.OutputCaptureExtension; import org.springframework.boot.testcontainers.context.ImportTestcontainers; import org.springframework.boot.testcontainers.lifecycle.TestContainersParallelStartupWithImportTestcontainersIntegrationTests.Containers; -import org.springframework.boot.testsupport.testcontainers.DisabledIfDockerUnavailable; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.DisabledIfDockerUnavailable; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit.jupiter.SpringExtension; @@ -52,13 +52,13 @@ public class TestContainersParallelStartupWithImportTestcontainersIntegrationTes static class Containers { @Container - static PostgreSQLContainer container1 = new PostgreSQLContainer<>(DockerImageNames.postgresql()); + static PostgreSQLContainer container1 = TestImage.container(PostgreSQLContainer.class); @Container - static PostgreSQLContainer container2 = new PostgreSQLContainer<>(DockerImageNames.postgresql()); + static PostgreSQLContainer container2 = TestImage.container(PostgreSQLContainer.class); @Container - static PostgreSQLContainer container3 = new PostgreSQLContainer<>(DockerImageNames.postgresql()); + static PostgreSQLContainer container3 = TestImage.container(PostgreSQLContainer.class); } diff --git a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/lifecycle/TestcontainersImportWithPropertiesInjectedIntoLoadTimeWeaverAwareBeanIntegrationTests.java b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/lifecycle/TestcontainersImportWithPropertiesInjectedIntoLoadTimeWeaverAwareBeanIntegrationTests.java index 568f6ff3c40..cf56eb8c04d 100644 --- a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/lifecycle/TestcontainersImportWithPropertiesInjectedIntoLoadTimeWeaverAwareBeanIntegrationTests.java +++ b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/lifecycle/TestcontainersImportWithPropertiesInjectedIntoLoadTimeWeaverAwareBeanIntegrationTests.java @@ -26,8 +26,8 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties import org.springframework.boot.test.context.TestConfiguration; import org.springframework.boot.testcontainers.context.ImportTestcontainers; import org.springframework.boot.testcontainers.lifecycle.TestcontainersImportWithPropertiesInjectedIntoLoadTimeWeaverAwareBeanIntegrationTests.Containers; -import org.springframework.boot.testsupport.testcontainers.DisabledIfDockerUnavailable; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.DisabledIfDockerUnavailable; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.annotation.Bean; import org.springframework.context.weaving.LoadTimeWeaverAware; import org.springframework.instrument.classloading.LoadTimeWeaver; @@ -86,7 +86,7 @@ class TestcontainersImportWithPropertiesInjectedIntoLoadTimeWeaverAwareBeanInteg static class Containers { @Container - static PostgreSQLContainer container = new PostgreSQLContainer<>(DockerImageNames.postgresql()); + static PostgreSQLContainer container = TestImage.container(PostgreSQLContainer.class); @DynamicPropertySource static void setConnectionProperties(DynamicPropertyRegistry registry) { diff --git a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/lifecycle/TestcontainersLifecycleOrderIntegrationTests.java b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/lifecycle/TestcontainersLifecycleOrderIntegrationTests.java index 1fda208130f..f4f912f84c2 100644 --- a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/lifecycle/TestcontainersLifecycleOrderIntegrationTests.java +++ b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/lifecycle/TestcontainersLifecycleOrderIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,13 +23,15 @@ import java.util.List; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.extension.ExtensionContext; +import org.testcontainers.utility.DockerImageName; import org.springframework.boot.testcontainers.lifecycle.TestcontainersLifecycleOrderIntegrationTests.AssertingSpringExtension; import org.springframework.boot.testcontainers.lifecycle.TestcontainersLifecycleOrderIntegrationTests.ContainerConfig; import org.springframework.boot.testcontainers.lifecycle.TestcontainersLifecycleOrderIntegrationTests.TestConfig; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.DisabledIfDockerUnavailable; -import org.springframework.boot.testsupport.testcontainers.RedisContainer; +import org.springframework.boot.testsupport.container.DisabledIfDockerUnavailable; +import org.springframework.boot.testsupport.container.RedisContainer; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.test.annotation.DirtiesContext; @@ -63,21 +65,7 @@ class TestcontainersLifecycleOrderIntegrationTests { @Bean @ServiceConnection("redis") RedisContainer redisContainer() { - return new RedisContainer() { - - @Override - public void start() { - events.add("start-container"); - super.start(); - } - - @Override - public void stop() { - events.add("stop-container"); - super.stop(); - } - - }; + return TestImage.container(EventRecordingRedisContainer.class); } } @@ -112,4 +100,24 @@ class TestcontainersLifecycleOrderIntegrationTests { } + static class EventRecordingRedisContainer extends RedisContainer { + + EventRecordingRedisContainer(DockerImageName dockerImageName) { + super(dockerImageName); + } + + @Override + public void start() { + events.add("start-container"); + super.start(); + } + + @Override + public void stop() { + events.add("stop-container"); + super.stop(); + } + + } + } diff --git a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/properties/TestcontainersPropertySourceAutoConfigurationTests.java b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/properties/TestcontainersPropertySourceAutoConfigurationTests.java index 59f1817e02a..0461375186b 100644 --- a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/properties/TestcontainersPropertySourceAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/properties/TestcontainersPropertySourceAutoConfigurationTests.java @@ -26,8 +26,9 @@ import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.boot.testcontainers.lifecycle.TestcontainersLifecycleApplicationContextInitializer; -import org.springframework.boot.testsupport.testcontainers.DisabledIfDockerUnavailable; -import org.springframework.boot.testsupport.testcontainers.RedisContainer; +import org.springframework.boot.testsupport.container.DisabledIfDockerUnavailable; +import org.springframework.boot.testsupport.container.RedisContainer; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.ApplicationEvent; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -70,7 +71,7 @@ class TestcontainersPropertySourceAutoConfigurationTests { @Bean RedisContainer redisContainer(DynamicPropertyRegistry properties) { - RedisContainer container = new RedisContainer(); + RedisContainer container = TestImage.container(RedisContainer.class); properties.add("container.port", container::getFirstMappedPort); return container; } diff --git a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/ServiceConnectionAutoConfigurationTests.java b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/ServiceConnectionAutoConfigurationTests.java index 009092cebb5..85a958359fb 100644 --- a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/ServiceConnectionAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/ServiceConnectionAutoConfigurationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -31,8 +31,9 @@ import org.springframework.boot.autoconfigure.data.redis.RedisConnectionDetails; import org.springframework.boot.testcontainers.beans.TestcontainerBeanDefinition; import org.springframework.boot.testcontainers.lifecycle.TestcontainersLifecycleApplicationContextInitializer; import org.springframework.boot.testsupport.classpath.ClassPathExclusions; -import org.springframework.boot.testsupport.testcontainers.DisabledIfDockerUnavailable; -import org.springframework.boot.testsupport.testcontainers.RedisContainer; +import org.springframework.boot.testsupport.container.DisabledIfDockerUnavailable; +import org.springframework.boot.testsupport.container.RedisContainer; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -135,7 +136,7 @@ class ServiceConnectionAutoConfigurationTests { @Bean @ServiceConnection("redis") RedisContainer redisContainer() { - return new RedisContainer(); + return TestImage.container(RedisContainer.class); } } @@ -168,7 +169,7 @@ class ServiceConnectionAutoConfigurationTests { static class TestcontainersRootBeanDefinition extends RootBeanDefinition implements TestcontainerBeanDefinition { - private final RedisContainer container = new RedisContainer(); + private final RedisContainer container = TestImage.container(RedisContainer.class); TestcontainersRootBeanDefinition() { setBeanClass(RedisContainer.class); diff --git a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/activemq/ActiveMQContainerConnectionDetailsFactoryIntegrationTests.java b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/activemq/ActiveMQContainerConnectionDetailsFactoryIntegrationTests.java index 647b4861d08..ff8a8555c5b 100644 --- a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/activemq/ActiveMQContainerConnectionDetailsFactoryIntegrationTests.java +++ b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/activemq/ActiveMQContainerConnectionDetailsFactoryIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -30,7 +30,8 @@ import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.autoconfigure.jms.JmsAutoConfiguration; import org.springframework.boot.autoconfigure.jms.activemq.ActiveMQAutoConfiguration; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.ActiveMQContainer; +import org.springframework.boot.testsupport.container.ActiveMQContainer; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.jms.annotation.JmsListener; @@ -50,7 +51,7 @@ class ActiveMQContainerConnectionDetailsFactoryIntegrationTests { @Container @ServiceConnection - static final ActiveMQContainer activemq = new ActiveMQContainer(); + static final ActiveMQContainer activemq = TestImage.container(ActiveMQContainer.class); @Autowired private JmsMessagingTemplate jmsTemplate; diff --git a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/amqp/RabbitContainerConnectionDetailsFactoryIntegrationTests.java b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/amqp/RabbitContainerConnectionDetailsFactoryIntegrationTests.java index 8567d2f03b6..11fe6629a39 100644 --- a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/amqp/RabbitContainerConnectionDetailsFactoryIntegrationTests.java +++ b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/amqp/RabbitContainerConnectionDetailsFactoryIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -34,7 +34,7 @@ import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration; import org.springframework.boot.autoconfigure.amqp.RabbitConnectionDetails; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; @@ -54,8 +54,7 @@ class RabbitContainerConnectionDetailsFactoryIntegrationTests { @Container @ServiceConnection - static final RabbitMQContainer rabbit = new RabbitMQContainer(DockerImageNames.rabbit()) - .withStartupTimeout(Duration.ofMinutes(4)); + static final RabbitMQContainer rabbit = TestImage.container(RabbitMQContainer.class); @Autowired(required = false) private RabbitConnectionDetails connectionDetails; diff --git a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/cassandra/CassandraContainerConnectionDetailsFactoryTests.java b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/cassandra/CassandraContainerConnectionDetailsFactoryTests.java index a2e7ecc550c..19535dc537f 100644 --- a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/cassandra/CassandraContainerConnectionDetailsFactoryTests.java +++ b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/cassandra/CassandraContainerConnectionDetailsFactoryTests.java @@ -18,6 +18,7 @@ package org.springframework.boot.testcontainers.service.connection.cassandra; import com.datastax.oss.driver.api.core.CqlSession; import org.junit.jupiter.api.Test; +import org.testcontainers.containers.CassandraContainer; import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; @@ -26,7 +27,7 @@ import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration; import org.springframework.boot.autoconfigure.cassandra.CassandraConnectionDetails; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.CassandraContainer; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.annotation.Configuration; import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; @@ -43,7 +44,7 @@ class CassandraContainerConnectionDetailsFactoryTests { @Container @ServiceConnection - static final CassandraContainer cassandra = new CassandraContainer(); + static final CassandraContainer cassandra = TestImage.container(CassandraContainer.class); @Autowired(required = false) private CassandraConnectionDetails connectionDetails; diff --git a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/couchbase/CouchbaseContainerConnectionDetailsFactoryTests.java b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/couchbase/CouchbaseContainerConnectionDetailsFactoryTests.java index debefc39806..d31beee3ad2 100644 --- a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/couchbase/CouchbaseContainerConnectionDetailsFactoryTests.java +++ b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/couchbase/CouchbaseContainerConnectionDetailsFactoryTests.java @@ -16,8 +16,6 @@ package org.springframework.boot.testcontainers.service.connection.couchbase; -import java.time.Duration; - import com.couchbase.client.java.Cluster; import org.junit.jupiter.api.Test; import org.testcontainers.couchbase.BucketDefinition; @@ -31,7 +29,7 @@ import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.autoconfigure.couchbase.CouchbaseAutoConfiguration; import org.springframework.boot.autoconfigure.couchbase.CouchbaseConnectionDetails; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.annotation.Configuration; import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; @@ -48,10 +46,8 @@ class CouchbaseContainerConnectionDetailsFactoryTests { @Container @ServiceConnection - static final CouchbaseContainer couchbase = new CouchbaseContainer(DockerImageNames.couchbase()) + static final CouchbaseContainer couchbase = TestImage.container(CouchbaseContainer.class) .withEnabledServices(CouchbaseService.KV, CouchbaseService.INDEX, CouchbaseService.QUERY) - .withStartupAttempts(5) - .withStartupTimeout(Duration.ofMinutes(10)) .withBucket(new BucketDefinition("cbbucket")); @Autowired(required = false) diff --git a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/elasticsearch/ElasticsearchContainerConnectionDetailsFactoryTests.java b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/elasticsearch/ElasticsearchContainerConnectionDetailsFactoryTests.java index 64f693f46e3..be32783368e 100644 --- a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/elasticsearch/ElasticsearchContainerConnectionDetailsFactoryTests.java +++ b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/elasticsearch/ElasticsearchContainerConnectionDetailsFactoryTests.java @@ -17,7 +17,6 @@ package org.springframework.boot.testcontainers.service.connection.elasticsearch; import java.io.IOException; -import java.time.Duration; import co.elastic.clients.elasticsearch.ElasticsearchClient; import org.junit.jupiter.api.Test; @@ -31,7 +30,7 @@ import org.springframework.boot.autoconfigure.elasticsearch.ElasticsearchClientA import org.springframework.boot.autoconfigure.elasticsearch.ElasticsearchConnectionDetails; import org.springframework.boot.autoconfigure.elasticsearch.ElasticsearchRestClientAutoConfiguration; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.annotation.Configuration; import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; @@ -48,10 +47,7 @@ class ElasticsearchContainerConnectionDetailsFactoryTests { @Container @ServiceConnection - static final ElasticsearchContainer elasticsearch = new ElasticsearchContainer(DockerImageNames.elasticsearch()) - .withEnv("ES_JAVA_OPTS", "-Xms32m -Xmx512m") - .withStartupAttempts(5) - .withStartupTimeout(Duration.ofMinutes(10)); + static final ElasticsearchContainer elasticsearch = TestImage.container(ElasticsearchContainer.class); @Autowired(required = false) private ElasticsearchConnectionDetails connectionDetails; diff --git a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/flyway/FlywayContainerConnectionDetailsFactoryTests.java b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/flyway/FlywayContainerConnectionDetailsFactoryTests.java index c6ce96899a4..cc83fb0e6fc 100644 --- a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/flyway/FlywayContainerConnectionDetailsFactoryTests.java +++ b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/flyway/FlywayContainerConnectionDetailsFactoryTests.java @@ -27,7 +27,7 @@ import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.JdbcConnectionDetails; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.annotation.Configuration; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; @@ -46,7 +46,7 @@ class FlywayContainerConnectionDetailsFactoryTests { @Container @ServiceConnection - static final PostgreSQLContainer postgres = new PostgreSQLContainer<>(DockerImageNames.postgresql()); + static final PostgreSQLContainer postgres = TestImage.container(PostgreSQLContainer.class); @Autowired(required = false) private JdbcConnectionDetails connectionDetails; diff --git a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/jdbc/JdbcContainerConnectionDetailsFactoryTests.java b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/jdbc/JdbcContainerConnectionDetailsFactoryTests.java index feff3093928..e2b0d92caac 100644 --- a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/jdbc/JdbcContainerConnectionDetailsFactoryTests.java +++ b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/jdbc/JdbcContainerConnectionDetailsFactoryTests.java @@ -29,7 +29,7 @@ import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.JdbcConnectionDetails; import org.springframework.boot.jdbc.DatabaseDriver; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.annotation.Configuration; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; @@ -48,7 +48,7 @@ class JdbcContainerConnectionDetailsFactoryTests { @Container @ServiceConnection - static final PostgreSQLContainer postgres = new PostgreSQLContainer<>(DockerImageNames.postgresql()); + static final PostgreSQLContainer postgres = TestImage.container(PostgreSQLContainer.class); @Autowired(required = false) private JdbcConnectionDetails connectionDetails; diff --git a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/kafka/KafkaContainerConnectionDetailsFactoryIntegrationTests.java b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/kafka/KafkaContainerConnectionDetailsFactoryIntegrationTests.java index 713a1402771..c26eab67740 100644 --- a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/kafka/KafkaContainerConnectionDetailsFactoryIntegrationTests.java +++ b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/kafka/KafkaContainerConnectionDetailsFactoryIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -30,7 +30,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.kafka.annotation.KafkaListener; @@ -55,7 +55,7 @@ class KafkaContainerConnectionDetailsFactoryIntegrationTests { @Container @ServiceConnection - static final KafkaContainer kafka = new KafkaContainer(DockerImageNames.kafka()); + static final KafkaContainer kafka = TestImage.container(KafkaContainer.class); @Autowired private KafkaTemplate kafkaTemplate; diff --git a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/liquibase/LiquibaseContainerConnectionDetailsFactoryTests.java b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/liquibase/LiquibaseContainerConnectionDetailsFactoryTests.java index a37595667f7..f9a585872ff 100644 --- a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/liquibase/LiquibaseContainerConnectionDetailsFactoryTests.java +++ b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/liquibase/LiquibaseContainerConnectionDetailsFactoryTests.java @@ -27,7 +27,7 @@ import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.JdbcConnectionDetails; import org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.annotation.Configuration; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; @@ -46,7 +46,7 @@ class LiquibaseContainerConnectionDetailsFactoryTests { @Container @ServiceConnection - static final PostgreSQLContainer postgres = new PostgreSQLContainer<>(DockerImageNames.postgresql()); + static final PostgreSQLContainer postgres = TestImage.container(PostgreSQLContainer.class); @Autowired(required = false) private JdbcConnectionDetails connectionDetails; diff --git a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/otlp/OpenTelemetryMetricsContainerConnectionDetailsFactoryIntegrationTests.java b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/otlp/OpenTelemetryMetricsContainerConnectionDetailsFactoryIntegrationTests.java index 23cbaa5c637..c48d6a2135c 100644 --- a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/otlp/OpenTelemetryMetricsContainerConnectionDetailsFactoryIntegrationTests.java +++ b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/otlp/OpenTelemetryMetricsContainerConnectionDetailsFactoryIntegrationTests.java @@ -37,7 +37,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.actuate.autoconfigure.metrics.export.otlp.OtlpMetricsExportAutoConfiguration; import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.test.context.TestPropertySource; @@ -65,7 +65,7 @@ class OpenTelemetryMetricsContainerConnectionDetailsFactoryIntegrationTests { @Container @ServiceConnection - static final GenericContainer container = new GenericContainer<>(DockerImageNames.opentelemetry()) + static final GenericContainer container = TestImage.OPENTELEMETRY.genericContainer() .withCommand("--config=/etc/" + CONFIG_FILE_NAME) .withCopyToContainer(MountableFile.forClasspathResource(CONFIG_FILE_NAME), "/etc/" + CONFIG_FILE_NAME) .withExposedPorts(4318, 9090); diff --git a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/otlp/OpenTelemetryTracingContainerConnectionDetailsFactoryIntegrationTests.java b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/otlp/OpenTelemetryTracingContainerConnectionDetailsFactoryIntegrationTests.java index ab41e680c55..6d8760f1faa 100644 --- a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/otlp/OpenTelemetryTracingContainerConnectionDetailsFactoryIntegrationTests.java +++ b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/otlp/OpenTelemetryTracingContainerConnectionDetailsFactoryIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,7 +26,7 @@ import org.springframework.boot.actuate.autoconfigure.tracing.otlp.OtlpAutoConfi import org.springframework.boot.actuate.autoconfigure.tracing.otlp.OtlpTracingConnectionDetails; import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.annotation.Configuration; import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; @@ -43,8 +43,7 @@ class OpenTelemetryTracingContainerConnectionDetailsFactoryIntegrationTests { @Container @ServiceConnection - static final GenericContainer container = new GenericContainer<>(DockerImageNames.opentelemetry()) - .withExposedPorts(4318); + static final GenericContainer container = TestImage.OPENTELEMETRY.genericContainer().withExposedPorts(4318); @Autowired private OtlpTracingConnectionDetails connectionDetails; diff --git a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/pulsar/PulsarContainerConnectionDetailsFactoryIntegrationTests.java b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/pulsar/PulsarContainerConnectionDetailsFactoryIntegrationTests.java index 51f5ec2a136..6ebe0b92c2b 100644 --- a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/pulsar/PulsarContainerConnectionDetailsFactoryIntegrationTests.java +++ b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/pulsar/PulsarContainerConnectionDetailsFactoryIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -31,7 +31,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.autoconfigure.pulsar.PulsarAutoConfiguration; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.pulsar.annotation.PulsarListener; @@ -54,8 +54,7 @@ class PulsarContainerConnectionDetailsFactoryIntegrationTests { @Container @ServiceConnection @SuppressWarnings("unused") - static final PulsarContainer PULSAR = new PulsarContainer(DockerImageNames.pulsar()) - .withStartupTimeout(Duration.ofMinutes(3)); + static final PulsarContainer pulsar = TestImage.container(PulsarContainer.class); @Autowired private PulsarTemplate pulsarTemplate; diff --git a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/r2dbc/OracleFreeR2dbcContainerConnectionDetailsFactoryTests.java b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/r2dbc/OracleFreeR2dbcContainerConnectionDetailsFactoryTests.java index 500910648a5..6e38d71f03f 100644 --- a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/r2dbc/OracleFreeR2dbcContainerConnectionDetailsFactoryTests.java +++ b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/r2dbc/OracleFreeR2dbcContainerConnectionDetailsFactoryTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -34,8 +34,8 @@ import org.springframework.boot.autoconfigure.r2dbc.R2dbcAutoConfiguration; import org.springframework.boot.jdbc.DatabaseDriver; import org.springframework.boot.testcontainers.service.connection.ContainerConnectionDetailsFactoryHints; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.boot.testsupport.junit.DisabledOnOs; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; import org.springframework.context.annotation.Configuration; import org.springframework.r2dbc.core.DatabaseClient; import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; @@ -55,8 +55,7 @@ class OracleFreeR2dbcContainerConnectionDetailsFactoryTests { @Container @ServiceConnection - static final OracleContainer oracle = new OracleContainer(DockerImageNames.oracleFree()) - .withStartupTimeout(Duration.ofMinutes(2)); + static final OracleContainer oracle = TestImage.container(OracleContainer.class); @Autowired ConnectionFactory connectionFactory; diff --git a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/r2dbc/OracleXeR2dbcContainerConnectionDetailsFactoryTests.java b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/r2dbc/OracleXeR2dbcContainerConnectionDetailsFactoryTests.java index aa40d6204e7..0c9bbff05ae 100644 --- a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/r2dbc/OracleXeR2dbcContainerConnectionDetailsFactoryTests.java +++ b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/r2dbc/OracleXeR2dbcContainerConnectionDetailsFactoryTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -34,8 +34,8 @@ import org.springframework.boot.autoconfigure.r2dbc.R2dbcAutoConfiguration; import org.springframework.boot.jdbc.DatabaseDriver; import org.springframework.boot.testcontainers.service.connection.ContainerConnectionDetailsFactoryHints; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.boot.testsupport.junit.DisabledOnOs; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; import org.springframework.context.annotation.Configuration; import org.springframework.r2dbc.core.DatabaseClient; import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; @@ -55,8 +55,7 @@ class OracleXeR2dbcContainerConnectionDetailsFactoryTests { @Container @ServiceConnection - static final OracleContainer oracle = new OracleContainer(DockerImageNames.oracleXe()) - .withStartupTimeout(Duration.ofMinutes(2)); + static final OracleContainer oracle = TestImage.container(OracleContainer.class); @Autowired ConnectionFactory connectionFactory; diff --git a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/redis/RedisContainerConnectionDetailsFactoryTests.java b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/redis/RedisContainerConnectionDetailsFactoryTests.java index 6bc97667ec0..29dfbbfb84f 100644 --- a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/redis/RedisContainerConnectionDetailsFactoryTests.java +++ b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/redis/RedisContainerConnectionDetailsFactoryTests.java @@ -25,7 +25,8 @@ import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; import org.springframework.boot.autoconfigure.data.redis.RedisConnectionDetails; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.RedisContainer; +import org.springframework.boot.testsupport.container.RedisContainer; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnection; import org.springframework.data.redis.connection.RedisConnectionFactory; @@ -44,7 +45,7 @@ class RedisContainerConnectionDetailsFactoryTests { @Container @ServiceConnection - static final RedisContainer redis = new RedisContainer(); + static final RedisContainer redis = TestImage.container(RedisContainer.class); @Autowired(required = false) private RedisConnectionDetails connectionDetails; diff --git a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/redpanda/RedpandaContainerConnectionDetailsFactoryIntegrationTests.java b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/redpanda/RedpandaContainerConnectionDetailsFactoryIntegrationTests.java index 292358da3e2..1c26bc0295c 100644 --- a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/redpanda/RedpandaContainerConnectionDetailsFactoryIntegrationTests.java +++ b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/redpanda/RedpandaContainerConnectionDetailsFactoryIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -30,7 +30,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.kafka.annotation.KafkaListener; @@ -53,8 +53,7 @@ class RedpandaContainerConnectionDetailsFactoryIntegrationTests { @Container @ServiceConnection - static final RedpandaContainer redpanda = new RedpandaContainer(DockerImageNames.redpanda()) - .withStartupTimeout(Duration.ofMinutes(5)); + static final RedpandaContainer redpanda = TestImage.container(RedpandaContainer.class); @Autowired KafkaTemplate kafkaTemplate; diff --git a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/zipkin/ZipkinContainerConnectionDetailsFactoryIntegrationTests.java b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/zipkin/ZipkinContainerConnectionDetailsFactoryIntegrationTests.java index 0c9a9d1abe7..62b6e12897e 100644 --- a/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/zipkin/ZipkinContainerConnectionDetailsFactoryIntegrationTests.java +++ b/spring-boot-project/spring-boot-testcontainers/src/test/java/org/springframework/boot/testcontainers/service/connection/zipkin/ZipkinContainerConnectionDetailsFactoryIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,7 +26,8 @@ import org.springframework.boot.actuate.autoconfigure.tracing.zipkin.ZipkinAutoC import org.springframework.boot.actuate.autoconfigure.tracing.zipkin.ZipkinConnectionDetails; import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; +import org.springframework.boot.testsupport.container.ZipkinContainer; import org.springframework.context.annotation.Configuration; import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; @@ -44,7 +45,7 @@ class ZipkinContainerConnectionDetailsFactoryIntegrationTests { @Container @ServiceConnection - static final GenericContainer zipkin = new GenericContainer<>(DockerImageNames.zipkin()).withExposedPorts(9411); + static final GenericContainer zipkin = TestImage.container(ZipkinContainer.class); @Autowired(required = false) private ZipkinConnectionDetails connectionDetails; diff --git a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/docker/DockerApiIntegrationTests.java b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/docker/DockerApiIntegrationTests.java index cff7b111eb4..55f0cfda3bb 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/docker/DockerApiIntegrationTests.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/docker/DockerApiIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,7 +21,7 @@ import java.io.IOException; import org.junit.jupiter.api.Test; import org.springframework.boot.buildpack.platform.docker.type.ImageReference; -import org.springframework.boot.testsupport.testcontainers.DisabledIfDockerUnavailable; +import org.springframework.boot.testsupport.container.DisabledIfDockerUnavailable; /** * Integration tests for {@link DockerApi}. diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests.java b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests.java index 40e12c2c6a8..48536e53675 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -48,9 +48,9 @@ import org.springframework.boot.buildpack.platform.docker.type.ImageReference; import org.springframework.boot.buildpack.platform.docker.type.VolumeName; import org.springframework.boot.buildpack.platform.io.FilePermissions; import org.springframework.boot.gradle.junit.GradleCompatibility; +import org.springframework.boot.testsupport.container.DisabledIfDockerUnavailable; import org.springframework.boot.testsupport.gradle.testkit.GradleBuild; import org.springframework.boot.testsupport.junit.DisabledOnOs; -import org.springframework.boot.testsupport.testcontainers.DisabledIfDockerUnavailable; import org.springframework.util.FileSystemUtils; import static org.assertj.core.api.Assertions.assertThat; diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/BootBuildImageRegistryIntegrationTests.java b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/BootBuildImageRegistryIntegrationTests.java index f3d4c221a2e..8d0e8dd00f1 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/BootBuildImageRegistryIntegrationTests.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/BootBuildImageRegistryIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,14 +20,12 @@ import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; -import java.time.Duration; import org.gradle.testkit.runner.BuildResult; import org.gradle.testkit.runner.TaskOutcome; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.TestTemplate; -import org.testcontainers.containers.GenericContainer; import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; @@ -36,8 +34,9 @@ import org.springframework.boot.buildpack.platform.docker.UpdateListener; import org.springframework.boot.buildpack.platform.docker.type.Image; import org.springframework.boot.buildpack.platform.docker.type.ImageReference; import org.springframework.boot.gradle.junit.GradleCompatibility; +import org.springframework.boot.testsupport.container.RegistryContainer; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.boot.testsupport.gradle.testkit.GradleBuild; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; import static org.assertj.core.api.Assertions.assertThat; @@ -52,8 +51,7 @@ import static org.assertj.core.api.Assertions.assertThat; class BootBuildImageRegistryIntegrationTests { @Container - static final RegistryContainer registry = new RegistryContainer().withStartupAttempts(5) - .withStartupTimeout(Duration.ofMinutes(3)); + static final RegistryContainer registry = TestImage.container(RegistryContainer.class); String registryAddress; @@ -103,14 +101,4 @@ class BootBuildImageRegistryIntegrationTests { } } - private static class RegistryContainer extends GenericContainer { - - RegistryContainer() { - super(DockerImageNames.registry()); - addExposedPorts(5000); - addEnv("SERVER_NAME", "localhost"); - } - - } - } diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/java/org/springframework/boot/maven/BuildImageRegistryIntegrationTests.java b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/java/org/springframework/boot/maven/BuildImageRegistryIntegrationTests.java index fb0d88aeac1..2be9bba79b0 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/java/org/springframework/boot/maven/BuildImageRegistryIntegrationTests.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/java/org/springframework/boot/maven/BuildImageRegistryIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,14 +16,11 @@ package org.springframework.boot.maven; -import java.time.Duration; - import com.github.dockerjava.api.DockerClient; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.TestTemplate; import org.junit.jupiter.api.extension.ExtendWith; -import org.testcontainers.containers.GenericContainer; import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; @@ -31,7 +28,8 @@ import org.springframework.boot.buildpack.platform.docker.DockerApi; import org.springframework.boot.buildpack.platform.docker.UpdateListener; import org.springframework.boot.buildpack.platform.docker.type.Image; import org.springframework.boot.buildpack.platform.docker.type.ImageReference; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.RegistryContainer; +import org.springframework.boot.testsupport.container.TestImage; import static org.assertj.core.api.Assertions.assertThat; @@ -46,8 +44,7 @@ import static org.assertj.core.api.Assertions.assertThat; class BuildImageRegistryIntegrationTests extends AbstractArchiveIntegrationTests { @Container - static final RegistryContainer registry = new RegistryContainer().withStartupAttempts(5) - .withStartupTimeout(Duration.ofMinutes(3)); + static final RegistryContainer registry = TestImage.container(RegistryContainer.class); DockerClient dockerClient; @@ -80,14 +77,4 @@ class BuildImageRegistryIntegrationTests extends AbstractArchiveIntegrationTests }); } - private static class RegistryContainer extends GenericContainer { - - RegistryContainer() { - super(DockerImageNames.registry()); - addExposedPorts(5000); - addEnv("SERVER_NAME", "localhost"); - } - - } - } diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/java/org/springframework/boot/maven/BuildImageTests.java b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/java/org/springframework/boot/maven/BuildImageTests.java index cd2c24a890d..6e1887a9cf5 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/java/org/springframework/boot/maven/BuildImageTests.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/java/org/springframework/boot/maven/BuildImageTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -36,8 +36,8 @@ import org.springframework.boot.buildpack.platform.docker.type.Image; import org.springframework.boot.buildpack.platform.docker.type.ImageName; import org.springframework.boot.buildpack.platform.docker.type.ImageReference; import org.springframework.boot.buildpack.platform.docker.type.VolumeName; +import org.springframework.boot.testsupport.container.DisabledIfDockerUnavailable; import org.springframework.boot.testsupport.junit.DisabledOnOs; -import org.springframework.boot.testsupport.testcontainers.DisabledIfDockerUnavailable; import org.springframework.util.FileSystemUtils; import static org.assertj.core.api.Assertions.assertThat; diff --git a/spring-boot-project/spring-boot-tools/spring-boot-test-support/build.gradle b/spring-boot-project/spring-boot-tools/spring-boot-test-support/build.gradle index 528a9621a87..56e5b762434 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-test-support/build.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-test-support/build.gradle @@ -1,6 +1,7 @@ plugins { id "java-library" id "org.springframework.boot.conventions" + id "org.springframework.boot.optional-dependencies" } description = "Spring Boot Testing Support" @@ -19,9 +20,23 @@ dependencies { compileOnly("org.mockito:mockito-core") compileOnly("org.springframework:spring-context") compileOnly("org.springframework.data:spring-data-redis") - compileOnly("org.testcontainers:cassandra") compileOnly("org.testcontainers:testcontainers") + optional("org.testcontainers:cassandra") + optional("org.testcontainers:cassandra") + optional("org.testcontainers:couchbase") + optional("org.testcontainers:elasticsearch") + optional("org.testcontainers:junit-jupiter") + optional("org.testcontainers:kafka") + optional("org.testcontainers:mongodb") + optional("org.testcontainers:neo4j") + optional("org.testcontainers:oracle-xe") + optional("org.testcontainers:oracle-free") + optional("org.testcontainers:postgresql") + optional("org.testcontainers:pulsar") + optional("org.testcontainers:rabbitmq") + optional("org.testcontainers:redpanda") + implementation("jakarta.inject:jakarta.inject-api") implementation("org.apache.maven.resolver:maven-resolver-connector-basic") implementation("org.apache.maven.resolver:maven-resolver-impl") diff --git a/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/testcontainers/ActiveMQContainer.java b/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/container/ActiveMQContainer.java similarity index 62% rename from spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/testcontainers/ActiveMQContainer.java rename to spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/container/ActiveMQContainer.java index 024594b2c04..4aede2e9058 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/testcontainers/ActiveMQContainer.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/container/ActiveMQContainer.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,30 +14,23 @@ * limitations under the License. */ -package org.springframework.boot.testsupport.testcontainers; +package org.springframework.boot.testsupport.container; import org.testcontainers.containers.GenericContainer; +import org.testcontainers.utility.DockerImageName; /** * A {@link GenericContainer} for ActiveMQ. * * @author Stephane Nicoll */ -public class ActiveMQContainer extends GenericContainer { +public final class ActiveMQContainer extends GenericContainer { private static final int DEFAULT_PORT = 61616; - public ActiveMQContainer() { - super(DockerImageNames.activeMq()); + public ActiveMQContainer(DockerImageName dockerImageName) { + super(dockerImageName); addExposedPorts(DEFAULT_PORT); } - /** - * Return the broker URL to use. - * @return the broker url of the ActiveMQ instance - */ - public String getBrokerUrl() { - return String.format("tcp://" + getHost() + ":" + getMappedPort(DEFAULT_PORT)); - } - } diff --git a/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/testcontainers/DisabledIfDockerUnavailable.java b/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/container/DisabledIfDockerUnavailable.java similarity index 90% rename from spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/testcontainers/DisabledIfDockerUnavailable.java rename to spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/container/DisabledIfDockerUnavailable.java index dba1e49c511..dc3a162ab6e 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/testcontainers/DisabledIfDockerUnavailable.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/container/DisabledIfDockerUnavailable.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.testsupport.testcontainers; +package org.springframework.boot.testsupport.container; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; diff --git a/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/testcontainers/DisabledIfDockerUnavailableCondition.java b/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/container/DisabledIfDockerUnavailableCondition.java similarity index 93% rename from spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/testcontainers/DisabledIfDockerUnavailableCondition.java rename to spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/container/DisabledIfDockerUnavailableCondition.java index de1e52d7de8..00976ffa449 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/testcontainers/DisabledIfDockerUnavailableCondition.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/container/DisabledIfDockerUnavailableCondition.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.testsupport.testcontainers; +package org.springframework.boot.testsupport.container; import org.junit.jupiter.api.extension.ConditionEvaluationResult; import org.junit.jupiter.api.extension.ExecutionCondition; diff --git a/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/testcontainers/RedisContainer.java b/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/container/RedisContainer.java similarity index 77% rename from spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/testcontainers/RedisContainer.java rename to spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/container/RedisContainer.java index 1837ceac228..98d9bb18963 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/testcontainers/RedisContainer.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/container/RedisContainer.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,9 +14,10 @@ * limitations under the License. */ -package org.springframework.boot.testsupport.testcontainers; +package org.springframework.boot.testsupport.container; import org.testcontainers.containers.GenericContainer; +import org.testcontainers.utility.DockerImageName; /** * A {@link GenericContainer} for Redis. @@ -26,8 +27,8 @@ import org.testcontainers.containers.GenericContainer; */ public class RedisContainer extends GenericContainer { - public RedisContainer() { - super(DockerImageNames.redis()); + public RedisContainer(DockerImageName dockerImageName) { + super(dockerImageName); addExposedPorts(6379); } diff --git a/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/testcontainers/CassandraContainer.java b/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/container/RegistryContainer.java similarity index 52% rename from spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/testcontainers/CassandraContainer.java rename to spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/container/RegistryContainer.java index 33f113842a3..860f58f4daa 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/testcontainers/CassandraContainer.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/container/RegistryContainer.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,21 +14,22 @@ * limitations under the License. */ -package org.springframework.boot.testsupport.testcontainers; +package org.springframework.boot.testsupport.container; -import java.time.Duration; +import org.testcontainers.containers.GenericContainer; +import org.testcontainers.utility.DockerImageName; /** - * Custom {@link org.testcontainers.containers.CassandraContainer} tuned for stability in - * heavily contended environments such as CI. + * A {@link GenericContainer} for Docker Registry. * - * @author Andy Wilkinson + * @author Phillip Webb */ -public class CassandraContainer extends org.testcontainers.containers.CassandraContainer { +public class RegistryContainer extends GenericContainer { - public CassandraContainer() { - super(DockerImageNames.cassandra()); - withStartupTimeout(Duration.ofMinutes(10)); + public RegistryContainer(DockerImageName dockerImageName) { + super(dockerImageName); + addExposedPorts(5000); + addEnv("SERVER_NAME", "localhost"); } } diff --git a/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/container/TestImage.java b/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/container/TestImage.java new file mode 100644 index 00000000000..57fbce8a97e --- /dev/null +++ b/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/container/TestImage.java @@ -0,0 +1,272 @@ +/* + * Copyright 2012-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.boot.testsupport.container; + +import java.lang.reflect.Constructor; +import java.time.Duration; +import java.util.Arrays; +import java.util.List; +import java.util.function.Consumer; +import java.util.function.Supplier; + +import org.testcontainers.containers.CassandraContainer; +import org.testcontainers.containers.Container; +import org.testcontainers.containers.GenericContainer; +import org.testcontainers.containers.KafkaContainer; +import org.testcontainers.containers.MongoDBContainer; +import org.testcontainers.containers.Neo4jContainer; +import org.testcontainers.containers.PostgreSQLContainer; +import org.testcontainers.containers.PulsarContainer; +import org.testcontainers.containers.RabbitMQContainer; +import org.testcontainers.couchbase.CouchbaseContainer; +import org.testcontainers.elasticsearch.ElasticsearchContainer; +import org.testcontainers.redpanda.RedpandaContainer; +import org.testcontainers.utility.DockerImageName; + +import org.springframework.util.Assert; + +/** + * References to container images used for integration tests. This class also acts a a + * central location for tests to {@link #container(Class) create} a correctly configured + * {@link Container testcontainer}. + * + * @author Stephane Nicoll + * @author Eddú Meléndez + * @author Moritz Halbritter + * @author Chris Bono + * @author Phillip Webb + */ +public enum TestImage { + + /** + * A container image suitable for testing ActiveMQ. + */ + ACTIVE_MQ("symptoma/activemq", "5.18.0", () -> ActiveMQContainer.class), + + /** + * A container image suitable for testing Cassandra. + */ + CASSANDRA("cassandra", "3.11.10", () -> CassandraContainer.class, + (container) -> ((CassandraContainer) container).withStartupTimeout(Duration.ofMinutes(10))), + + /** + * A Docker image suitable for running. + */ + COUCHBASE("couchbase/server", "7.1.4", () -> CouchbaseContainer.class, + (container) -> ((CouchbaseContainer) container).withStartupAttempts(5) + .withStartupTimeout(Duration.ofMinutes(10))), + + /** + * A Docker image suitable for Elasticsearch 7. + */ + ELASTICSEARCH("docker.elastic.co/elasticsearch/elasticsearch", "7.17.5", () -> ElasticsearchContainer.class, + (container) -> ((ElasticsearchContainer) container).withEnv("ES_JAVA_OPTS", "-Xms32m -Xmx512m") + .withStartupAttempts(5) + .withStartupTimeout(Duration.ofMinutes(10))), + + /** + * A container image suitable for testing Elasticsearch 8. + */ + ELASTICSEARCH_8("elasticsearch", "8.6.1"), + + /** + * A container image suitable for testing Kafka. + */ + KAFKA("confluentinc/cp-kafka", "7.4.0", () -> KafkaContainer.class), + + /** + * A container image suitable for testing MariaDB. + */ + MARIADB("mariadb", "10.10"), + + /** + * A Docker image suitable for MongoDB. + */ + MONGODB("mongo", "5.0.17", () -> MongoDBContainer.class, + (container) -> ((MongoDBContainer) container).withStartupAttempts(5) + .withStartupTimeout(Duration.ofMinutes(5))), + + /** + * A container image suitable for testing MySQL. + */ + MYSQL("mysql", "8.0"), + + /** + * A container image suitable for testing Neo4j. + */ + NEO4J("neo4j", "4.4.11", () -> Neo4jContainer.class, + (container) -> ((Neo4jContainer) container).withStartupAttempts(5) + .withStartupTimeout(Duration.ofMinutes(10))), + + /** + * A container image suitable for testing Oracle Free. + */ + ORACLE_FREE("gvenzl/oracle-free", "23.3-slim", () -> org.testcontainers.oracle.OracleContainer.class, + (container) -> ((org.testcontainers.oracle.OracleContainer) container) + .withStartupTimeout(Duration.ofMinutes(2))), + + /** + * A container image suitable for testing Oracle XA. + */ + ORACLE_XE("gvenzl/oracle-xe", "18.4.0-slim", () -> org.testcontainers.containers.OracleContainer.class, + (container) -> ((org.testcontainers.containers.OracleContainer) container) + .withStartupTimeout(Duration.ofMinutes(2))), + + /** + * A container image suitable for testing Opentelemetry. + */ + OPENTELEMETRY("otel/opentelemetry-collector-contrib", "0.75.0"), + + /** + * A container image suitable for testing Postgres. + */ + POSTGRESQL("postgres", "14.0", () -> PostgreSQLContainer.class), + + /** + * A container image suitable for testing Pulsar. + */ + PULSAR("apachepulsar/pulsar", "3.1.0", () -> PulsarContainer.class, + (container) -> ((PulsarContainer) container).withStartupAttempts(2) + .withStartupTimeout(Duration.ofMinutes(3))), + + /** + * A container image suitable for testing RabbitMQ. + */ + RABBITMQ("rabbitmq", "3.11-alpine", () -> RabbitMQContainer.class, + (container) -> ((RabbitMQContainer) container).withStartupTimeout(Duration.ofMinutes(4))), + + /** + * A container image suitable for testing Redis. + */ + REDIS("redis", "7.0.11", () -> RedisContainer.class, + (container) -> ((RedisContainer) container).withStartupAttempts(5) + .withStartupTimeout(Duration.ofMinutes(10))), + + /** + * A container image suitable for testing Redpanda. + */ + REDPANDA("redpandadata/redpanda", "v23.1.2", () -> RedpandaContainer.class, + (container) -> ((RedpandaContainer) container).withStartupTimeout(Duration.ofMinutes(5))), + + /** + * A container image suitable for testing a Docker registry. + */ + REGISTRY("registry", "2.7.1", () -> RegistryContainer.class, + (container) -> ((RegistryContainer) container).withStartupAttempts(5) + .withStartupTimeout(Duration.ofMinutes(3))), + + /** + * A container image suitable for testing MS SQL Server. + */ + SQL_SERVER("mcr.microsoft.com/mssql/server"), + + /** + * A container image suitable for testing Zipkin. + */ + ZIPKIN("openzipkin/zipkin", "2.24.1", () -> ZipkinContainer.class); + + private final String name; + + private final String tag; + + private final Class containerClass; + + private final Consumer containerSetup; + + TestImage(String name) { + this(name, null); + } + + TestImage(String name, String tag) { + this(name, tag, null, null); + } + + TestImage(String name, String tag, Supplier> containerClass) { + this(name, tag, containerClass, null); + } + + TestImage(String name, String tag, Supplier> containerClass, Consumer containerSetup) { + this.name = name; + this.tag = tag; + this.containerClass = getIfPossible(containerClass); + this.containerSetup = containerSetup; + } + + static Class getIfPossible(Supplier> supplier) { + try { + return (supplier != null) ? supplier.get() : null; + } + catch (NoClassDefFoundError ex) { + return null; + } + } + + private boolean matchesContainerClass(Class containerClass) { + return this.containerClass != null && this.containerClass.isAssignableFrom(containerClass); + } + + /** + * Create a {@link GenericContainer} for the given {@link TestImage}. + * @return a generic container for the test image + */ + public GenericContainer genericContainer() { + return createContainer(GenericContainer.class); + } + + @SuppressWarnings({ "rawtypes", "unchecked" }) + private > C createContainer(Class containerClass) { + DockerImageName dockerImageName = DockerImageName.parse(toString()); + try { + Constructor constructor = containerClass.getDeclaredConstructor(DockerImageName.class); + constructor.setAccessible(true); + C container = constructor.newInstance(dockerImageName); + if (this.containerSetup != null) { + ((Consumer) this.containerSetup).accept(container); + } + return container; + } + catch (Exception ex) { + throw new IllegalStateException("Unable to create container " + containerClass, ex); + } + } + + @Override + public String toString() { + return (this.tag != null) ? this.name + ":" + this.tag : this.name; + } + + /** + * Factory method to create and configure a {@link Container} using a deduced + * {@link TestImage}. + * @param the container type + * @param containerClass the container type + * @return a container instance + */ + public static > C container(Class containerClass) { + return forContainerClass(containerClass).createContainer(containerClass); + } + + private static TestImage forContainerClass(Class containerClass) { + List images = Arrays.stream(values()) + .filter((image) -> image.matchesContainerClass(containerClass)) + .toList(); + Assert.state(!images.isEmpty(), () -> "Unknown container class " + containerClass); + Assert.state(images.size() == 1, () -> "Multiple test images match container class " + containerClass); + return images.get(0); + } + +} diff --git a/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/container/ZipkinContainer.java b/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/container/ZipkinContainer.java new file mode 100644 index 00000000000..b0e33c6a92f --- /dev/null +++ b/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/container/ZipkinContainer.java @@ -0,0 +1,34 @@ +/* + * Copyright 2012-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.boot.testsupport.container; + +import org.testcontainers.containers.GenericContainer; +import org.testcontainers.utility.DockerImageName; + +/** + * A {@link GenericContainer} for Zipkin. + * + * @author Phillip Webb + */ +public class ZipkinContainer extends GenericContainer { + + public ZipkinContainer(DockerImageName dockerImageName) { + super(dockerImageName); + withExposedPorts(9411); + } + +} diff --git a/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/testcontainers/package-info.java b/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/container/package-info.java similarity index 84% rename from spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/testcontainers/package-info.java rename to spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/container/package-info.java index 4c85d076602..4b2e65b31f8 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/testcontainers/package-info.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/container/package-info.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2019 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,4 +17,4 @@ /** * Support for testing with Testcontainers. */ -package org.springframework.boot.testsupport.testcontainers; +package org.springframework.boot.testsupport.container; diff --git a/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/testcontainers/DockerImageNames.java b/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/testcontainers/DockerImageNames.java deleted file mode 100644 index 2055fb7fa61..00000000000 --- a/spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/testcontainers/DockerImageNames.java +++ /dev/null @@ -1,242 +0,0 @@ -/* - * Copyright 2012-2024 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.testsupport.testcontainers; - -import org.testcontainers.utility.DockerImageName; - -/** - * Create {@link DockerImageName} instances for services used in integration tests. - * - * @author Stephane Nicoll - * @author Eddú Meléndez - * @author Moritz Halbritter - * @author Chris Bono - */ -public final class DockerImageNames { - - private static final String ACTIVE_MQ_VERSION = "5.18.0"; - - private static final String CASSANDRA_VERSION = "3.11.10"; - - private static final String COUCHBASE_VERSION = "7.1.4"; - - private static final String ELASTICSEARCH_VERSION = "7.17.5"; - - private static final String ELASTICSEARCH_8_VERSION = "8.6.1"; - - private static final String KAFKA_VERSION = "7.4.0"; - - private static final String MARIADB_VERSION = "10.10"; - - private static final String MONGO_VERSION = "5.0.17"; - - private static final String MYSQL_VERSION = "8.0"; - - private static final String NEO4J_VERSION = "4.4.11"; - - private static final String ORACLE_FREE_VERSION = "23.3-slim"; - - private static final String ORACLE_XE_VERSION = "18.4.0-slim"; - - private static final String OPENTELEMETRY_VERSION = "0.75.0"; - - private static final String PULSAR_VERSION = "3.1.0"; - - private static final String POSTGRESQL_VERSION = "14.0"; - - private static final String RABBIT_VERSION = "3.11-alpine"; - - private static final String REDIS_VERSION = "7.0.11"; - - private static final String REDPANDA_VERSION = "v23.1.2"; - - private static final String REGISTRY_VERSION = "2.7.1"; - - private static final String ZIPKIN_VERSION = "2.24.1"; - - private DockerImageNames() { - } - - /** - * Return a {@link DockerImageName} suitable for running ActiveMQ. - * @return a docker image name for running activeMq - */ - public static DockerImageName activeMq() { - return DockerImageName.parse("symptoma/activemq").withTag(ACTIVE_MQ_VERSION); - } - - /** - * Return a {@link DockerImageName} suitable for running Cassandra. - * @return a docker image name for running cassandra - */ - public static DockerImageName cassandra() { - return DockerImageName.parse("cassandra").withTag(CASSANDRA_VERSION); - } - - /** - * Return a {@link DockerImageName} suitable for running Couchbase. - * @return a docker image name for running couchbase - */ - public static DockerImageName couchbase() { - return DockerImageName.parse("couchbase/server").withTag(COUCHBASE_VERSION); - } - - /** - * Return a {@link DockerImageName} suitable for running Elasticsearch 7. - * @return a docker image name for running elasticsearch - */ - public static DockerImageName elasticsearch() { - return DockerImageName.parse("docker.elastic.co/elasticsearch/elasticsearch").withTag(ELASTICSEARCH_VERSION); - } - - /** - * Return a {@link DockerImageName} suitable for running Elasticsearch 8. - * @return a docker image name for running elasticsearch - */ - public static DockerImageName elasticsearch8() { - return DockerImageName.parse("elasticsearch").withTag(ELASTICSEARCH_8_VERSION); - } - - /** - * Return a {@link DockerImageName} suitable for running Kafka. - * @return a docker image name for running Kafka - */ - public static DockerImageName kafka() { - return DockerImageName.parse("confluentinc/cp-kafka").withTag(KAFKA_VERSION); - } - - /** - * Return a {@link DockerImageName} suitable for running MariaDB. - * @return a docker image name for running MariaDB - */ - public static DockerImageName mariadb() { - return DockerImageName.parse("mariadb").withTag(MARIADB_VERSION); - } - - /** - * Return a {@link DockerImageName} suitable for running Mongo. - * @return a docker image name for running mongo - */ - public static DockerImageName mongo() { - return DockerImageName.parse("mongo").withTag(MONGO_VERSION); - } - - /** - * Return a {@link DockerImageName} suitable for running MySQL. - * @return a docker image name for running MySQL - */ - public static DockerImageName mysql() { - return DockerImageName.parse("mysql").withTag(MYSQL_VERSION); - } - - /** - * Return a {@link DockerImageName} suitable for running Neo4j. - * @return a docker image name for running neo4j - */ - public static DockerImageName neo4j() { - return DockerImageName.parse("neo4j").withTag(NEO4J_VERSION); - } - - /** - * Return a {@link DockerImageName} suitable for running the Oracle database. - * @return a docker image name for running the Oracle database - */ - public static DockerImageName oracleFree() { - return DockerImageName.parse("gvenzl/oracle-free").withTag(ORACLE_FREE_VERSION); - } - - /** - * Return a {@link DockerImageName} suitable for running the Oracle database. - * @return a docker image name for running the Oracle database - */ - public static DockerImageName oracleXe() { - return DockerImageName.parse("gvenzl/oracle-xe").withTag(ORACLE_XE_VERSION); - } - - /** - * Return a {@link DockerImageName} suitable for running OpenTelemetry. - * @return a docker image name for running OpenTelemetry - */ - public static DockerImageName opentelemetry() { - return DockerImageName.parse("otel/opentelemetry-collector-contrib").withTag(OPENTELEMETRY_VERSION); - } - - /** - * Return a {@link DockerImageName} suitable for running Apache Pulsar. - * @return a docker image name for running pulsar - */ - public static DockerImageName pulsar() { - return DockerImageName.parse("apachepulsar/pulsar").withTag(PULSAR_VERSION); - } - - /** - * Return a {@link DockerImageName} suitable for running PostgreSQL. - * @return a docker image name for running postgresql - */ - public static DockerImageName postgresql() { - return DockerImageName.parse("postgres").withTag(POSTGRESQL_VERSION); - } - - /** - * Return a {@link DockerImageName} suitable for running RabbitMQ. - * @return a docker image name for running RabbitMQ - */ - public static DockerImageName rabbit() { - return DockerImageName.parse("rabbitmq").withTag(RABBIT_VERSION); - } - - /** - * Return a {@link DockerImageName} suitable for running Redis. - * @return a docker image name for running redis - */ - public static DockerImageName redis() { - return DockerImageName.parse("redis").withTag(REDIS_VERSION); - } - - /** - * Return a {@link DockerImageName} suitable for running Redpanda. - * @return a docker image name for running redpanda - */ - public static DockerImageName redpanda() { - return DockerImageName.parse("redpandadata/redpanda").withTag(REDPANDA_VERSION); - } - - /** - * Return a {@link DockerImageName} suitable for running Microsoft SQLServer. - * @return a docker image name for running SQLServer - */ - public static DockerImageName sqlserver() { - return DockerImageName.parse("mcr.microsoft.com/mssql/server"); - } - - /** - * Return a {@link DockerImageName} suitable for running a Docker registry. - * @return a docker image name for running a registry - */ - public static DockerImageName registry() { - return DockerImageName.parse("registry").withTag(REGISTRY_VERSION); - } - - /** - * Return a {@link DockerImageName} suitable for running Zipkin. - * @return a docker image name for running Zipkin - */ - public static DockerImageName zipkin() { - return DockerImageName.parse("openzipkin/zipkin").withTag(ZIPKIN_VERSION); - } - -} diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/java/org/springframework/boot/launchscript/JarLaunchScriptIntegrationTests.java b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/java/org/springframework/boot/launchscript/JarLaunchScriptIntegrationTests.java index e0f23f04bc8..62cbb87e31a 100644 --- a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/java/org/springframework/boot/launchscript/JarLaunchScriptIntegrationTests.java +++ b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/java/org/springframework/boot/launchscript/JarLaunchScriptIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,7 +21,7 @@ import java.util.List; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; -import org.springframework.boot.testsupport.testcontainers.DisabledIfDockerUnavailable; +import org.springframework.boot.testsupport.container.DisabledIfDockerUnavailable; import static org.assertj.core.api.Assertions.assertThat; diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/java/org/springframework/boot/launchscript/SysVinitLaunchScriptIntegrationTests.java b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/java/org/springframework/boot/launchscript/SysVinitLaunchScriptIntegrationTests.java index 6fb4b23a4be..17e4f078bba 100644 --- a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/java/org/springframework/boot/launchscript/SysVinitLaunchScriptIntegrationTests.java +++ b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/java/org/springframework/boot/launchscript/SysVinitLaunchScriptIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,7 +23,7 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; import org.springframework.boot.ansi.AnsiColor; -import org.springframework.boot.testsupport.testcontainers.DisabledIfDockerUnavailable; +import org.springframework.boot.testsupport.container.DisabledIfDockerUnavailable; import static org.assertj.core.api.Assertions.assertThat; diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-loader-classic-tests/src/intTest/java/org/springframework/boot/loader/LoaderIntegrationTests.java b/spring-boot-tests/spring-boot-integration-tests/spring-boot-loader-classic-tests/src/intTest/java/org/springframework/boot/loader/LoaderIntegrationTests.java index 0be119ac96d..f5d8d3010e4 100644 --- a/spring-boot-tests/spring-boot-integration-tests/spring-boot-loader-classic-tests/src/intTest/java/org/springframework/boot/loader/LoaderIntegrationTests.java +++ b/spring-boot-tests/spring-boot-integration-tests/spring-boot-loader-classic-tests/src/intTest/java/org/springframework/boot/loader/LoaderIntegrationTests.java @@ -33,7 +33,7 @@ import org.testcontainers.utility.DockerImageName; import org.testcontainers.utility.MountableFile; import org.springframework.boot.system.JavaVersion; -import org.springframework.boot.testsupport.testcontainers.DisabledIfDockerUnavailable; +import org.springframework.boot.testsupport.container.DisabledIfDockerUnavailable; import org.springframework.util.Assert; import static org.assertj.core.api.Assertions.assertThat; diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-loader-tests/src/intTest/java/org/springframework/boot/loader/LoaderIntegrationTests.java b/spring-boot-tests/spring-boot-integration-tests/spring-boot-loader-tests/src/intTest/java/org/springframework/boot/loader/LoaderIntegrationTests.java index bdb49a9afc8..6a33a39fe2b 100644 --- a/spring-boot-tests/spring-boot-integration-tests/spring-boot-loader-tests/src/intTest/java/org/springframework/boot/loader/LoaderIntegrationTests.java +++ b/spring-boot-tests/spring-boot-integration-tests/spring-boot-loader-tests/src/intTest/java/org/springframework/boot/loader/LoaderIntegrationTests.java @@ -33,7 +33,7 @@ import org.testcontainers.utility.DockerImageName; import org.testcontainers.utility.MountableFile; import org.springframework.boot.system.JavaVersion; -import org.springframework.boot.testsupport.testcontainers.DisabledIfDockerUnavailable; +import org.springframework.boot.testsupport.container.DisabledIfDockerUnavailable; import org.springframework.util.Assert; import static org.assertj.core.api.Assertions.assertThat; diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-activemq/src/test/java/smoketest/activemq/SampleActiveMqTests.java b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-activemq/src/test/java/smoketest/activemq/SampleActiveMqTests.java index 9d68eda78d2..a99a0d1e5aa 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-activemq/src/test/java/smoketest/activemq/SampleActiveMqTests.java +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-activemq/src/test/java/smoketest/activemq/SampleActiveMqTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -29,7 +29,8 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.system.CapturedOutput; import org.springframework.boot.test.system.OutputCaptureExtension; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.ActiveMQContainer; +import org.springframework.boot.testsupport.container.ActiveMQContainer; +import org.springframework.boot.testsupport.container.TestImage; import static org.assertj.core.api.Assertions.assertThat; @@ -46,7 +47,7 @@ class SampleActiveMqTests { @Container @ServiceConnection - private static final ActiveMQContainer container = new ActiveMQContainer(); + private static final ActiveMQContainer container = TestImage.container(ActiveMQContainer.class); @Autowired private Producer producer; diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-amqp/src/test/java/smoketest/amqp/SampleAmqpSimpleApplicationSslTests.java b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-amqp/src/test/java/smoketest/amqp/SampleAmqpSimpleApplicationSslTests.java index 0ccd87eee4b..7ef58e9e7f8 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-amqp/src/test/java/smoketest/amqp/SampleAmqpSimpleApplicationSslTests.java +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-amqp/src/test/java/smoketest/amqp/SampleAmqpSimpleApplicationSslTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -28,6 +28,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.system.CapturedOutput; import org.springframework.boot.test.system.OutputCaptureExtension; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.test.context.DynamicPropertyRegistry; import org.springframework.test.context.DynamicPropertySource; @@ -47,7 +48,7 @@ import static org.assertj.core.api.Assertions.assertThat; class SampleAmqpSimpleApplicationSslTests { @Container - static final SecureRabbitMqContainer rabbit = new SecureRabbitMqContainer(); + static final SecureRabbitMqContainer rabbit = TestImage.container(SecureRabbitMqContainer.class); @DynamicPropertySource static void secureRabbitMqProperties(DynamicPropertyRegistry registry) { diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-amqp/src/test/java/smoketest/amqp/SampleAmqpSimpleApplicationTests.java b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-amqp/src/test/java/smoketest/amqp/SampleAmqpSimpleApplicationTests.java index 06faa66b15d..7915126d3a1 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-amqp/src/test/java/smoketest/amqp/SampleAmqpSimpleApplicationTests.java +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-amqp/src/test/java/smoketest/amqp/SampleAmqpSimpleApplicationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -30,7 +30,7 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.system.CapturedOutput; import org.springframework.boot.test.system.OutputCaptureExtension; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import static org.assertj.core.api.Assertions.assertThat; @@ -41,8 +41,7 @@ class SampleAmqpSimpleApplicationTests { @Container @ServiceConnection - static final RabbitMQContainer rabbit = new RabbitMQContainer(DockerImageNames.rabbit()) - .withStartupTimeout(Duration.ofMinutes(4)); + static final RabbitMQContainer rabbit = TestImage.container(RabbitMQContainer.class); @Autowired private Sender sender; diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-amqp/src/test/java/smoketest/amqp/SecureRabbitMqContainer.java b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-amqp/src/test/java/smoketest/amqp/SecureRabbitMqContainer.java index 1a8c8203cd0..c304718ddfc 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-amqp/src/test/java/smoketest/amqp/SecureRabbitMqContainer.java +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-amqp/src/test/java/smoketest/amqp/SecureRabbitMqContainer.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,13 +16,10 @@ package smoketest.amqp; -import java.time.Duration; - import org.testcontainers.containers.RabbitMQContainer; +import org.testcontainers.utility.DockerImageName; import org.testcontainers.utility.MountableFile; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; - /** * A {@link RabbitMQContainer} for RabbitMQ with SSL configuration. * @@ -30,9 +27,8 @@ import org.springframework.boot.testsupport.testcontainers.DockerImageNames; */ class SecureRabbitMqContainer extends RabbitMQContainer { - SecureRabbitMqContainer() { - super(DockerImageNames.rabbit()); - withStartupTimeout(Duration.ofMinutes(4)); + SecureRabbitMqContainer(DockerImageName dockerImageName) { + super(dockerImageName); } @Override diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-cache/src/redisTest/java/smoketest/cache/SampleCacheApplicationRedisTests.java b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-cache/src/redisTest/java/smoketest/cache/SampleCacheApplicationRedisTests.java index 9bd83348306..f7e56d5a900 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-cache/src/redisTest/java/smoketest/cache/SampleCacheApplicationRedisTests.java +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-cache/src/redisTest/java/smoketest/cache/SampleCacheApplicationRedisTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,7 +23,8 @@ import org.testcontainers.junit.jupiter.Testcontainers; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.RedisContainer; +import org.springframework.boot.testsupport.container.RedisContainer; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.cache.Cache; import org.springframework.cache.CacheManager; @@ -35,7 +36,7 @@ class SampleCacheApplicationRedisTests { @Container @ServiceConnection - private static final RedisContainer redis = new RedisContainer(); + private static final RedisContainer redis = TestImage.container(RedisContainer.class); @Autowired private CacheManager cacheManager; diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-cassandra/src/test/java/smoketest/data/cassandra/SampleCassandraApplicationReactiveSslTests.java b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-cassandra/src/test/java/smoketest/data/cassandra/SampleCassandraApplicationReactiveSslTests.java index c8bfd7bdadb..da7694d7806 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-cassandra/src/test/java/smoketest/data/cassandra/SampleCassandraApplicationReactiveSslTests.java +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-cassandra/src/test/java/smoketest/data/cassandra/SampleCassandraApplicationReactiveSslTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -29,6 +29,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.TestConfiguration; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.annotation.Bean; import org.springframework.data.cassandra.core.ReactiveCassandraTemplate; @@ -51,7 +52,7 @@ class SampleCassandraApplicationReactiveSslTests { @Container @ServiceConnection - static final SecureCassandraContainer secureCassandra = new SecureCassandraContainer(); + static final SecureCassandraContainer cassandra = TestImage.container(SecureCassandraContainer.class); @Autowired private ReactiveCassandraTemplate cassandraTemplate; diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-cassandra/src/test/java/smoketest/data/cassandra/SampleCassandraApplicationSslTests.java b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-cassandra/src/test/java/smoketest/data/cassandra/SampleCassandraApplicationSslTests.java index 48080633ba6..e930fb4623d 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-cassandra/src/test/java/smoketest/data/cassandra/SampleCassandraApplicationSslTests.java +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-cassandra/src/test/java/smoketest/data/cassandra/SampleCassandraApplicationSslTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -28,6 +28,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.data.cassandra.DataCassandraTest; import org.springframework.boot.test.context.TestConfiguration; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.annotation.Bean; import org.springframework.data.cassandra.core.CassandraTemplate; @@ -51,7 +52,7 @@ class SampleCassandraApplicationSslTests { @Container @ServiceConnection - static final SecureCassandraContainer secureCassandra = new SecureCassandraContainer(); + static final SecureCassandraContainer cassandra = TestImage.container(SecureCassandraContainer.class); @Autowired private CassandraTemplate cassandraTemplate; diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-cassandra/src/test/java/smoketest/data/cassandra/SecureCassandraContainer.java b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-cassandra/src/test/java/smoketest/data/cassandra/SecureCassandraContainer.java index 42d98c992cc..22b8b4bcb74 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-cassandra/src/test/java/smoketest/data/cassandra/SecureCassandraContainer.java +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-cassandra/src/test/java/smoketest/data/cassandra/SecureCassandraContainer.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,18 +16,19 @@ package smoketest.data.cassandra; +import org.testcontainers.containers.CassandraContainer; +import org.testcontainers.utility.DockerImageName; import org.testcontainers.utility.MountableFile; -import org.springframework.boot.testsupport.testcontainers.CassandraContainer; - /** * A {@link CassandraContainer} for Cassandra with SSL configuration. * * @author Scott Frederick */ -class SecureCassandraContainer extends CassandraContainer { +class SecureCassandraContainer extends CassandraContainer { - SecureCassandraContainer() { + SecureCassandraContainer(DockerImageName dockerImageName) { + super(dockerImageName); withCopyFileToContainer(MountableFile.forClasspathResource("/ssl/cassandra.yaml"), "/etc/cassandra/cassandra.yaml"); withCopyFileToContainer(MountableFile.forClasspathResource("/ssl/test-server.p12"), diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-couchbase/src/test/java/smoketest/data/couchbase/SampleCouchbaseApplicationReactiveSslTests.java b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-couchbase/src/test/java/smoketest/data/couchbase/SampleCouchbaseApplicationReactiveSslTests.java index cc43ed82ebf..6f69730257b 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-couchbase/src/test/java/smoketest/data/couchbase/SampleCouchbaseApplicationReactiveSslTests.java +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-couchbase/src/test/java/smoketest/data/couchbase/SampleCouchbaseApplicationReactiveSslTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,6 +27,7 @@ import org.testcontainers.junit.jupiter.Testcontainers; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.data.couchbase.core.ReactiveCouchbaseTemplate; import static org.assertj.core.api.Assertions.assertThat; @@ -47,7 +48,7 @@ class SampleCouchbaseApplicationReactiveSslTests { @Container @ServiceConnection - static final CouchbaseContainer couchbase = new SecureCouchbaseContainer() + static final CouchbaseContainer couchbase = TestImage.container(SecureCouchbaseContainer.class) .withBucket(new BucketDefinition(BUCKET_NAME)); @Autowired diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-couchbase/src/test/java/smoketest/data/couchbase/SampleCouchbaseApplicationSslTests.java b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-couchbase/src/test/java/smoketest/data/couchbase/SampleCouchbaseApplicationSslTests.java index cecbccb8cbe..e0fbdd0ae98 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-couchbase/src/test/java/smoketest/data/couchbase/SampleCouchbaseApplicationSslTests.java +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-couchbase/src/test/java/smoketest/data/couchbase/SampleCouchbaseApplicationSslTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,6 +25,7 @@ import org.testcontainers.junit.jupiter.Testcontainers; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.data.couchbase.DataCouchbaseTest; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.data.couchbase.core.CouchbaseTemplate; import static org.assertj.core.api.Assertions.assertThat; @@ -46,7 +47,7 @@ class SampleCouchbaseApplicationSslTests { @Container @ServiceConnection - static final CouchbaseContainer couchbase = new SecureCouchbaseContainer() + static final CouchbaseContainer couchbase = TestImage.container(SecureCouchbaseContainer.class) .withBucket(new BucketDefinition(BUCKET_NAME)); @Autowired diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-couchbase/src/test/java/smoketest/data/couchbase/SecureCouchbaseContainer.java b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-couchbase/src/test/java/smoketest/data/couchbase/SecureCouchbaseContainer.java index 70141b45403..915df85ca23 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-couchbase/src/test/java/smoketest/data/couchbase/SecureCouchbaseContainer.java +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-couchbase/src/test/java/smoketest/data/couchbase/SecureCouchbaseContainer.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,7 +16,6 @@ package smoketest.data.couchbase; -import java.time.Duration; import java.util.Base64; import com.github.dockerjava.api.command.InspectContainerResponse; @@ -26,10 +25,9 @@ import org.apache.hc.core5.http.ClassicHttpRequest; import org.apache.hc.core5.http.HttpResponse; import org.apache.hc.core5.http.io.support.ClassicRequestBuilder; import org.testcontainers.couchbase.CouchbaseContainer; +import org.testcontainers.utility.DockerImageName; import org.testcontainers.utility.MountableFile; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; - /** * A {@link CouchbaseContainer} for Couchbase with SSL configuration. * @@ -46,10 +44,8 @@ public class SecureCouchbaseContainer extends CouchbaseContainer { private static final String ADMIN_PASSWORD = "password"; - public SecureCouchbaseContainer() { - super(DockerImageNames.couchbase()); - withStartupAttempts(5); - withStartupTimeout(Duration.ofMinutes(10)); + public SecureCouchbaseContainer(DockerImageName dockerImageName) { + super(dockerImageName); withCopyFileToContainer(MountableFile.forClasspathResource("/ssl/test-server.crt"), "/opt/couchbase/var/lib/couchbase/inbox/chain.pem"); withCopyFileToContainer(MountableFile.forClasspathResource("/ssl/test-server.key"), diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-mongo/src/test/java/smoketest/data/mongo/SampleMongoApplicationReactiveSslTests.java b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-mongo/src/test/java/smoketest/data/mongo/SampleMongoApplicationReactiveSslTests.java index 5a601a2849a..c5a184b90da 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-mongo/src/test/java/smoketest/data/mongo/SampleMongoApplicationReactiveSslTests.java +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-mongo/src/test/java/smoketest/data/mongo/SampleMongoApplicationReactiveSslTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,6 +26,7 @@ import org.testcontainers.junit.jupiter.Testcontainers; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.data.mongodb.core.ReactiveMongoTemplate; import static org.assertj.core.api.Assertions.assertThat; @@ -44,7 +45,7 @@ class SampleMongoApplicationReactiveSslTests { @Container @ServiceConnection - static final MongoDBContainer mongoDB = new SecureMongoContainer(); + static final MongoDBContainer mongoDb = TestImage.container(SecureMongoContainer.class); @Autowired private ReactiveMongoTemplate mongoTemplate; diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-mongo/src/test/java/smoketest/data/mongo/SampleMongoApplicationSslTests.java b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-mongo/src/test/java/smoketest/data/mongo/SampleMongoApplicationSslTests.java index 0ef35447438..150e2efbb5a 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-mongo/src/test/java/smoketest/data/mongo/SampleMongoApplicationSslTests.java +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-mongo/src/test/java/smoketest/data/mongo/SampleMongoApplicationSslTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,6 +24,7 @@ import org.testcontainers.junit.jupiter.Testcontainers; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.data.mongodb.core.MongoTemplate; import static org.assertj.core.api.Assertions.assertThat; @@ -43,7 +44,7 @@ class SampleMongoApplicationSslTests { @Container @ServiceConnection - static final MongoDBContainer mongoDB = new SecureMongoContainer(); + static final MongoDBContainer mongoDb = TestImage.container(SecureMongoContainer.class); @Autowired private MongoTemplate mongoTemplate; diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-mongo/src/test/java/smoketest/data/mongo/SecureMongoContainer.java b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-mongo/src/test/java/smoketest/data/mongo/SecureMongoContainer.java index ce69905355f..edfdf6fbcd3 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-mongo/src/test/java/smoketest/data/mongo/SecureMongoContainer.java +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-mongo/src/test/java/smoketest/data/mongo/SecureMongoContainer.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,14 +16,11 @@ package smoketest.data.mongo; -import java.time.Duration; - import com.github.dockerjava.api.command.InspectContainerResponse; import org.testcontainers.containers.MongoDBContainer; +import org.testcontainers.utility.DockerImageName; import org.testcontainers.utility.MountableFile; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; - /** * A {@link MongoDBContainer} for MongoDB with SSL configuration. * @@ -31,10 +28,8 @@ import org.springframework.boot.testsupport.testcontainers.DockerImageNames; */ class SecureMongoContainer extends MongoDBContainer { - SecureMongoContainer() { - super(DockerImageNames.mongo()); - withStartupAttempts(5); - withStartupTimeout(Duration.ofMinutes(5)); + SecureMongoContainer(DockerImageName dockerImageName) { + super(dockerImageName); } @Override diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-r2dbc-flyway/src/test/java/smoketest/data/r2dbc/CityRepositoryTests.java b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-r2dbc-flyway/src/test/java/smoketest/data/r2dbc/CityRepositoryTests.java index 311598bc07f..d07a1c0d828 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-r2dbc-flyway/src/test/java/smoketest/data/r2dbc/CityRepositoryTests.java +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-r2dbc-flyway/src/test/java/smoketest/data/r2dbc/CityRepositoryTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,7 +27,7 @@ import reactor.test.StepVerifier; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.data.r2dbc.DataR2dbcTest; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import static org.assertj.core.api.Assertions.assertThat; @@ -44,7 +44,7 @@ class CityRepositoryTests { @Container @ServiceConnection - static PostgreSQLContainer postgresql = new PostgreSQLContainer<>(DockerImageNames.postgresql()) + static PostgreSQLContainer postgresql = TestImage.container(PostgreSQLContainer.class) .withDatabaseName("test_flyway"); @Autowired diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-r2dbc-liquibase/src/test/java/smoketest/data/r2dbc/CityRepositoryTests.java b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-r2dbc-liquibase/src/test/java/smoketest/data/r2dbc/CityRepositoryTests.java index adf8731673a..4c4bf75f82c 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-r2dbc-liquibase/src/test/java/smoketest/data/r2dbc/CityRepositoryTests.java +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-r2dbc-liquibase/src/test/java/smoketest/data/r2dbc/CityRepositoryTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,7 +27,7 @@ import reactor.test.StepVerifier; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.data.r2dbc.DataR2dbcTest; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import static org.assertj.core.api.Assertions.assertThat; @@ -44,7 +44,7 @@ class CityRepositoryTests { @Container @ServiceConnection - static PostgreSQLContainer postgresql = new PostgreSQLContainer<>(DockerImageNames.postgresql()) + static PostgreSQLContainer postgresql = TestImage.container(PostgreSQLContainer.class) .withDatabaseName("test_liquibase"); @Autowired diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-redis/src/test/java/smoketest/data/redis/SampleRedisApplicationJedisSslTests.java b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-redis/src/test/java/smoketest/data/redis/SampleRedisApplicationJedisSslTests.java index 40e684d6e2b..391f6c390ee 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-redis/src/test/java/smoketest/data/redis/SampleRedisApplicationJedisSslTests.java +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-redis/src/test/java/smoketest/data/redis/SampleRedisApplicationJedisSslTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,7 +27,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.data.redis.DataRedisTest; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; import org.springframework.boot.testsupport.classpath.ClassPathExclusions; -import org.springframework.boot.testsupport.testcontainers.RedisContainer; +import org.springframework.boot.testsupport.container.RedisContainer; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.data.redis.core.RedisOperations; import static org.assertj.core.api.Assertions.assertThat; @@ -49,7 +50,7 @@ class SampleRedisApplicationJedisSslTests { @Container @ServiceConnection - static RedisContainer redis = new SecureRedisContainer(); + static RedisContainer redis = TestImage.container(SecureRedisContainer.class); @Autowired private RedisOperations operations; diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-redis/src/test/java/smoketest/data/redis/SampleRedisApplicationReactiveSslTests.java b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-redis/src/test/java/smoketest/data/redis/SampleRedisApplicationReactiveSslTests.java index 44e05eead03..70f9da5bb4b 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-redis/src/test/java/smoketest/data/redis/SampleRedisApplicationReactiveSslTests.java +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-redis/src/test/java/smoketest/data/redis/SampleRedisApplicationReactiveSslTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,7 +27,8 @@ import reactor.test.StepVerifier; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.RedisContainer; +import org.springframework.boot.testsupport.container.RedisContainer; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.data.redis.core.ReactiveRedisOperations; /** @@ -44,7 +45,7 @@ class SampleRedisApplicationReactiveSslTests { @Container @ServiceConnection - static RedisContainer redis = new SecureRedisContainer(); + static RedisContainer redis = TestImage.container(SecureRedisContainer.class); @Autowired private ReactiveRedisOperations operations; diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-redis/src/test/java/smoketest/data/redis/SampleRedisApplicationSslTests.java b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-redis/src/test/java/smoketest/data/redis/SampleRedisApplicationSslTests.java index 278a8b05f2e..2eaff7063a7 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-redis/src/test/java/smoketest/data/redis/SampleRedisApplicationSslTests.java +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-redis/src/test/java/smoketest/data/redis/SampleRedisApplicationSslTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,7 +26,8 @@ import org.testcontainers.junit.jupiter.Testcontainers; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.RedisContainer; +import org.springframework.boot.testsupport.container.RedisContainer; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.data.redis.core.RedisOperations; import static org.assertj.core.api.Assertions.assertThat; @@ -47,7 +48,7 @@ class SampleRedisApplicationSslTests { @Container @ServiceConnection - static RedisContainer redis = new SecureRedisContainer(); + static RedisContainer redis = TestImage.container(SecureRedisContainer.class); @Autowired private RedisOperations operations; diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-redis/src/test/java/smoketest/data/redis/SecureRedisContainer.java b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-redis/src/test/java/smoketest/data/redis/SecureRedisContainer.java index 65774dbf617..e05cd829ac0 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-redis/src/test/java/smoketest/data/redis/SecureRedisContainer.java +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-redis/src/test/java/smoketest/data/redis/SecureRedisContainer.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,9 +16,10 @@ package smoketest.data.redis; +import org.testcontainers.utility.DockerImageName; import org.testcontainers.utility.MountableFile; -import org.springframework.boot.testsupport.testcontainers.RedisContainer; +import org.springframework.boot.testsupport.container.RedisContainer; /** * A {@link RedisContainer} for Redis with SSL configuration. @@ -27,7 +28,8 @@ import org.springframework.boot.testsupport.testcontainers.RedisContainer; */ class SecureRedisContainer extends RedisContainer { - SecureRedisContainer() { + SecureRedisContainer(DockerImageName dockerImageName) { + super(dockerImageName); withCopyFileToContainer(MountableFile.forClasspathResource("/ssl/test-server.crt"), "/ssl/server.crt"); withCopyFileToContainer(MountableFile.forClasspathResource("/ssl/test-server.key"), "/ssl/server.key"); withCopyFileToContainer(MountableFile.forClasspathResource("/ssl/test-ca.crt"), "/ssl/ca.crt"); diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-kafka/src/test/java/smoketest/kafka/ssl/SampleKafkaSslApplicationTests.java b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-kafka/src/test/java/smoketest/kafka/ssl/SampleKafkaSslApplicationTests.java index 433c9e0a0f9..8582c5bddf3 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-kafka/src/test/java/smoketest/kafka/ssl/SampleKafkaSslApplicationTests.java +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-kafka/src/test/java/smoketest/kafka/ssl/SampleKafkaSslApplicationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -30,7 +30,7 @@ import smoketest.kafka.SampleMessage; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.test.context.DynamicPropertyRegistry; import org.springframework.test.context.DynamicPropertySource; @@ -55,7 +55,7 @@ import static org.hamcrest.Matchers.not; class SampleKafkaSslApplicationTests { @Container - public static KafkaContainer kafka = new KafkaContainer(DockerImageNames.kafka()) + public static KafkaContainer kafka = TestImage.container(KafkaContainer.class) .withEnv("KAFKA_LISTENER_SECURITY_PROTOCOL_MAP", "PLAINTEXT:SSL,BROKER:PLAINTEXT") .withEnv("KAFKA_AUTO_CREATE_TOPICS_ENABLE", "true") .withEnv("KAFKA_SSL_CLIENT_AUTH", "required") diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-pulsar/src/test/java/smoketest/pulsar/SamplePulsarApplicationTests.java b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-pulsar/src/test/java/smoketest/pulsar/SamplePulsarApplicationTests.java index c58c743cc8d..5de0fad211c 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-pulsar/src/test/java/smoketest/pulsar/SamplePulsarApplicationTests.java +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-pulsar/src/test/java/smoketest/pulsar/SamplePulsarApplicationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -33,7 +33,7 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.system.CapturedOutput; import org.springframework.boot.test.system.OutputCaptureExtension; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.test.context.ActiveProfiles; import static org.assertj.core.api.Assertions.assertThat; @@ -44,8 +44,7 @@ class SamplePulsarApplicationTests { @Container @ServiceConnection - static final PulsarContainer container = new PulsarContainer(DockerImageNames.pulsar()).withStartupAttempts(2) - .withStartupTimeout(Duration.ofMinutes(3)); + static final PulsarContainer pulsar = TestImage.container(PulsarContainer.class); abstract class PulsarApplication { diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-session-mongo/src/test/java/smoketest/session/mongodb/SampleSessionMongoApplicationTests.java b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-session-mongo/src/test/java/smoketest/session/mongodb/SampleSessionMongoApplicationTests.java index 68a49a26387..850420f2167 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-session-mongo/src/test/java/smoketest/session/mongodb/SampleSessionMongoApplicationTests.java +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-session-mongo/src/test/java/smoketest/session/mongodb/SampleSessionMongoApplicationTests.java @@ -17,7 +17,6 @@ package smoketest.session.mongodb; import java.net.URI; -import java.time.Duration; import java.util.Collections; import java.util.List; import java.util.Map; @@ -32,7 +31,7 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.web.client.TestRestTemplate; import org.springframework.boot.test.web.server.LocalServerPort; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.core.ParameterizedTypeReference; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; @@ -66,8 +65,7 @@ class SampleSessionMongoApplicationTests { @Container @ServiceConnection - static MongoDBContainer mongo = new MongoDBContainer(DockerImageNames.mongo()).withStartupAttempts(3) - .withStartupTimeout(Duration.ofMinutes(2)); + static final MongoDBContainer mongoDb = TestImage.container(MongoDBContainer.class); @Test @SuppressWarnings("unchecked") diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-session-redis/src/test/java/smoketest/session/redis/SampleSessionRedisApplicationTests.java b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-session-redis/src/test/java/smoketest/session/redis/SampleSessionRedisApplicationTests.java index d86eec6c970..5a19cbf43d9 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-session-redis/src/test/java/smoketest/session/redis/SampleSessionRedisApplicationTests.java +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-session-redis/src/test/java/smoketest/session/redis/SampleSessionRedisApplicationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -29,7 +29,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.web.client.TestRestTemplate; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.RedisContainer; +import org.springframework.boot.testsupport.container.RedisContainer; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.core.ParameterizedTypeReference; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; @@ -57,7 +58,7 @@ class SampleSessionRedisApplicationTests { @Container @ServiceConnection - static RedisContainer redis = new RedisContainer(); + static RedisContainer redis = TestImage.container(RedisContainer.class); @Autowired private TestRestTemplate restTemplate; diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-session-redis/src/test/java/smoketest/session/redis/TestPropertiesImportSampleSessionRedisApplication.java b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-session-redis/src/test/java/smoketest/session/redis/TestPropertiesImportSampleSessionRedisApplication.java index ab73d34ee68..7fa5cc292fa 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-session-redis/src/test/java/smoketest/session/redis/TestPropertiesImportSampleSessionRedisApplication.java +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-session-redis/src/test/java/smoketest/session/redis/TestPropertiesImportSampleSessionRedisApplication.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,7 +18,8 @@ package smoketest.session.redis; import org.springframework.boot.SpringApplication; import org.springframework.boot.testcontainers.context.ImportTestcontainers; -import org.springframework.boot.testsupport.testcontainers.RedisContainer; +import org.springframework.boot.testsupport.container.RedisContainer; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.test.context.DynamicPropertyRegistry; import org.springframework.test.context.DynamicPropertySource; @@ -31,7 +32,7 @@ public class TestPropertiesImportSampleSessionRedisApplication { @ImportTestcontainers static class ContainerConfiguration { - static RedisContainer container = new RedisContainer(); + static RedisContainer container = TestImage.container(RedisContainer.class); @DynamicPropertySource static void containerProperties(DynamicPropertyRegistry properties) { diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-session-redis/src/test/java/smoketest/session/redis/TestPropertiesSampleSessionRedisApplication.java b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-session-redis/src/test/java/smoketest/session/redis/TestPropertiesSampleSessionRedisApplication.java index f2a510f7377..f9f8b88d3b0 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-session-redis/src/test/java/smoketest/session/redis/TestPropertiesSampleSessionRedisApplication.java +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-session-redis/src/test/java/smoketest/session/redis/TestPropertiesSampleSessionRedisApplication.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,7 +18,8 @@ package smoketest.session.redis; import org.springframework.boot.SpringApplication; import org.springframework.boot.test.context.TestConfiguration; -import org.springframework.boot.testsupport.testcontainers.RedisContainer; +import org.springframework.boot.testsupport.container.RedisContainer; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.annotation.Bean; import org.springframework.test.context.DynamicPropertyRegistry; @@ -33,7 +34,7 @@ public class TestPropertiesSampleSessionRedisApplication { @Bean RedisContainer redisContainer(DynamicPropertyRegistry properties) { - RedisContainer container = new RedisContainer(); + RedisContainer container = TestImage.container(RedisContainer.class); properties.add("spring.data.redis.host", container::getHost); properties.add("spring.data.redis.port", container::getFirstMappedPort); return container; diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-session-redis/src/test/java/smoketest/session/redis/TestServiceConnectionImportSampleSessionRedisApplication.java b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-session-redis/src/test/java/smoketest/session/redis/TestServiceConnectionImportSampleSessionRedisApplication.java index c20303b0061..3d439566c12 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-session-redis/src/test/java/smoketest/session/redis/TestServiceConnectionImportSampleSessionRedisApplication.java +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-session-redis/src/test/java/smoketest/session/redis/TestServiceConnectionImportSampleSessionRedisApplication.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,7 +19,8 @@ package smoketest.session.redis; import org.springframework.boot.SpringApplication; import org.springframework.boot.testcontainers.context.ImportTestcontainers; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.RedisContainer; +import org.springframework.boot.testsupport.container.RedisContainer; +import org.springframework.boot.testsupport.container.TestImage; public class TestServiceConnectionImportSampleSessionRedisApplication { @@ -31,7 +32,7 @@ public class TestServiceConnectionImportSampleSessionRedisApplication { static class ContainerConfiguration { @ServiceConnection // We don't need a name here because we have the container - static RedisContainer redisContainer = new RedisContainer(); + static RedisContainer redisContainer = TestImage.container(RedisContainer.class); } diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-session-redis/src/test/java/smoketest/session/redis/TestServiceConnectionSampleSessionRedisApplication.java b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-session-redis/src/test/java/smoketest/session/redis/TestServiceConnectionSampleSessionRedisApplication.java index ef7ddb3903b..028380bfb68 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-session-redis/src/test/java/smoketest/session/redis/TestServiceConnectionSampleSessionRedisApplication.java +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-session-redis/src/test/java/smoketest/session/redis/TestServiceConnectionSampleSessionRedisApplication.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,7 +19,8 @@ package smoketest.session.redis; import org.springframework.boot.SpringApplication; import org.springframework.boot.test.context.TestConfiguration; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.RedisContainer; +import org.springframework.boot.testsupport.container.RedisContainer; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.annotation.Bean; public class TestServiceConnectionSampleSessionRedisApplication { @@ -34,7 +35,7 @@ public class TestServiceConnectionSampleSessionRedisApplication { @Bean @ServiceConnection("redis") RedisContainer redisContainer() { - return new RedisContainer(); + return TestImage.container(RedisContainer.class); } } diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-session-webflux-mongo/src/test/java/smoketest/session/SampleSessionWebFluxMongoApplicationTests.java b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-session-webflux-mongo/src/test/java/smoketest/session/SampleSessionWebFluxMongoApplicationTests.java index f74385e3775..5b32fee7988 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-session-webflux-mongo/src/test/java/smoketest/session/SampleSessionWebFluxMongoApplicationTests.java +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-session-webflux-mongo/src/test/java/smoketest/session/SampleSessionWebFluxMongoApplicationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -29,7 +29,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.web.server.LocalServerPort; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.http.HttpStatus; import org.springframework.web.reactive.function.client.WebClient; @@ -50,8 +50,7 @@ class SampleSessionWebFluxMongoApplicationTests { @Container @ServiceConnection - private static final MongoDBContainer mongo = new MongoDBContainer(DockerImageNames.mongo()).withStartupAttempts(3) - .withStartupTimeout(Duration.ofMinutes(2)); + static final MongoDBContainer mongoDb = TestImage.container(MongoDBContainer.class); @LocalServerPort private int port; diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-session-webflux-redis/src/test/java/smoketest/session/SampleSessionWebFluxRedisApplicationTests.java b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-session-webflux-redis/src/test/java/smoketest/session/SampleSessionWebFluxRedisApplicationTests.java index 89707feed7b..1fae3300252 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-session-webflux-redis/src/test/java/smoketest/session/SampleSessionWebFluxRedisApplicationTests.java +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-session-webflux-redis/src/test/java/smoketest/session/SampleSessionWebFluxRedisApplicationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -28,7 +28,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.web.server.LocalServerPort; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.RedisContainer; +import org.springframework.boot.testsupport.container.RedisContainer; +import org.springframework.boot.testsupport.container.TestImage; import org.springframework.http.HttpStatus; import org.springframework.web.reactive.function.client.WebClient; @@ -49,7 +50,7 @@ class SampleSessionWebFluxRedisApplicationTests { @Container @ServiceConnection - private static final RedisContainer redis = new RedisContainer(); + private static final RedisContainer redis = TestImage.container(RedisContainer.class); @LocalServerPort private int port;