Merge branch '4.0.x' into 4.1.x

Closes gh-51628
This commit is contained in:
Stéphane Nicoll
2026-09-08 16:57:00 +02:00
132 changed files with 209 additions and 364 deletions
@@ -52,7 +52,7 @@ import static org.assertj.core.api.Assertions.assertThat;
class BootBuildImageRegistryIntegrationTests {
@Container
static final RegistryContainer registry = TestImage.container(RegistryContainer.class);
static final RegistryContainer registry = TestImage.forContainer(RegistryContainer.class);
String registryAddress;
@@ -44,7 +44,7 @@ import static org.assertj.core.api.Assertions.assertThat;
class BuildImageRegistryIntegrationTests extends AbstractArchiveIntegrationTests {
@Container
static final RegistryContainer registry = TestImage.container(RegistryContainer.class);
static final RegistryContainer registry = TestImage.forContainer(RegistryContainer.class);
DockerClient dockerClient;
@@ -127,7 +127,7 @@ class ImportTestcontainersTests {
static class ImportWithoutValue {
@ContainerAnnotation
static PostgreSQLContainer container = TestImage.container(PostgreSQLContainer.class);
static PostgreSQLContainer container = TestImage.forContainer(PostgreSQLContainer.class);
}
@@ -151,14 +151,14 @@ class ImportTestcontainersTests {
@ImportTestcontainers
static class NonStaticContainer {
PostgreSQLContainer container = TestImage.container(PostgreSQLContainer.class);
PostgreSQLContainer container = TestImage.forContainer(PostgreSQLContainer.class);
}
interface ContainerDefinitions {
@ContainerAnnotation
PostgreSQLContainer container = TestImage.container(PostgreSQLContainer.class);
PostgreSQLContainer container = TestImage.forContainer(PostgreSQLContainer.class);
}
@@ -170,7 +170,7 @@ class ImportTestcontainersTests {
@ImportTestcontainers
static class ContainerDefinitionsWithDynamicPropertySource {
static PostgreSQLContainer container = TestImage.container(PostgreSQLContainer.class);
static PostgreSQLContainer container = TestImage.forContainer(PostgreSQLContainer.class);
@DynamicPropertySource
static void containerProperties(DynamicPropertyRegistry registry) {
@@ -90,7 +90,7 @@ class TestcontainersImportWithPropertiesInjectedIntoLoadTimeWeaverAwareBeanInteg
static class Containers {
@Container
static PostgreSQLContainer container = TestImage.container(PostgreSQLContainer.class);
static PostgreSQLContainer container = TestImage.forContainer(PostgreSQLContainer.class);
@DynamicPropertySource
static void setConnectionProperties(DynamicPropertyRegistry registry) {
@@ -65,7 +65,7 @@ class TestcontainersLifecycleOrderIntegrationTests {
@Bean
@ServiceConnection
RedisContainer redisContainer() {
return TestImage.container(EventRecordingRedisContainer.class);
return TestImage.forContainer(EventRecordingRedisContainer.class);
}
}
@@ -77,7 +77,7 @@ class TestcontainersLifecycleOrderWithScopeIntegrationTests {
@Scope("custom")
@ServiceConnection
RedisContainer redisContainer() {
return TestImage.container(EventRecordingRedisContainer.class);
return TestImage.forContainer(EventRecordingRedisContainer.class);
}
}
@@ -55,17 +55,17 @@ class TestcontainersParallelStartupIntegrationTests {
@Bean
static PostgreSQLContainer container1() {
return TestImage.container(PostgreSQLContainer.class);
return TestImage.forContainer(PostgreSQLContainer.class);
}
@Bean
static PostgreSQLContainer container2() {
return TestImage.container(PostgreSQLContainer.class);
return TestImage.forContainer(PostgreSQLContainer.class);
}
@Bean
static PostgreSQLContainer container3() {
return TestImage.container(PostgreSQLContainer.class);
return TestImage.forContainer(PostgreSQLContainer.class);
}
}
@@ -52,13 +52,13 @@ class TestcontainersParallelStartupWithImportTestcontainersIntegrationTests {
static class Containers {
@Container
static PostgreSQLContainer container1 = TestImage.container(PostgreSQLContainer.class);
static PostgreSQLContainer container1 = TestImage.forContainer(PostgreSQLContainer.class);
@Container
static PostgreSQLContainer container2 = TestImage.container(PostgreSQLContainer.class);
static PostgreSQLContainer container2 = TestImage.forContainer(PostgreSQLContainer.class);
@Container
static PostgreSQLContainer container3 = TestImage.container(PostgreSQLContainer.class);
static PostgreSQLContainer container3 = TestImage.forContainer(PostgreSQLContainer.class);
}
@@ -67,7 +67,7 @@ class TestcontainersPropertySourceAutoConfigurationTests {
@Bean
RedisContainer redisContainer(DynamicPropertyRegistry properties) {
RedisContainer container = TestImage.container(RedisContainer.class);
RedisContainer container = TestImage.forContainer(RedisContainer.class);
properties.add("container.port", container::getFirstMappedPort);
return container;
}
@@ -81,7 +81,7 @@ class TestcontainersPropertySourceAutoConfigurationTests {
@Bean
RedisContainer redisContainer() {
return TestImage.container(RedisContainer.class);
return TestImage.forContainer(RedisContainer.class);
}
@Bean
@@ -143,7 +143,7 @@ class ServiceConnectionAutoConfigurationTests {
@Bean
@ServiceConnection
PostgreSQLContainer postgresContainer() {
return TestImage.container(PostgreSQLContainer.class);
return TestImage.forContainer(PostgreSQLContainer.class);
}
}
@@ -176,7 +176,7 @@ class ServiceConnectionAutoConfigurationTests {
static class TestcontainersRootBeanDefinition extends RootBeanDefinition implements TestcontainerBeanDefinition {
private final PostgreSQLContainer container = TestImage.container(PostgreSQLContainer.class);
private final PostgreSQLContainer container = TestImage.forContainer(PostgreSQLContainer.class);
TestcontainersRootBeanDefinition() {
setBeanClass(PostgreSQLContainer.class);
@@ -46,7 +46,7 @@ class ServiceConnectionStartsConnectionOnceIntegrationTests {
@Container
@ServiceConnection
static final StartCountingPostgreSQLContainer postgres = TestImage
static final StartCountingPostgreSQLContainer postgres = TestImage.POSTGRESQL
.container(StartCountingPostgreSQLContainer.class);
@Test
@@ -22,6 +22,7 @@ import java.util.List;
import org.awaitility.Awaitility;
import org.junit.jupiter.api.Test;
import org.testcontainers.activemq.ActiveMQContainer;
import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;
@@ -30,7 +31,6 @@ import org.springframework.boot.activemq.autoconfigure.ActiveMQAutoConfiguration
import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
import org.springframework.boot.jms.autoconfigure.JmsAutoConfiguration;
import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
import org.springframework.boot.testsupport.container.ActiveMQClassicContainer;
import org.springframework.boot.testsupport.container.TestImage;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -51,7 +51,7 @@ class ActiveMQClassicContainerConnectionDetailsFactoryIntegrationTests {
@Container
@ServiceConnection
static final ActiveMQClassicContainer activemq = TestImage.container(ActiveMQClassicContainer.class);
static final ActiveMQContainer activemq = TestImage.ACTIVE_MQ_CLASSIC.container();
@Autowired
private JmsClient jmsClient;
@@ -22,6 +22,7 @@ import java.util.List;
import org.awaitility.Awaitility;
import org.junit.jupiter.api.Test;
import org.testcontainers.containers.GenericContainer;
import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;
@@ -30,7 +31,6 @@ import org.springframework.boot.activemq.autoconfigure.ActiveMQAutoConfiguration
import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
import org.springframework.boot.jms.autoconfigure.JmsAutoConfiguration;
import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
import org.springframework.boot.testsupport.container.SymptomaActiveMQContainer;
import org.springframework.boot.testsupport.container.TestImage;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -51,7 +51,7 @@ class ActiveMQContainerConnectionDetailsFactoryIntegrationTests {
@Container
@ServiceConnection
static final SymptomaActiveMQContainer activemq = TestImage.container(SymptomaActiveMQContainer.class);
static final GenericContainer<?> activemq = TestImage.ACTIVE_MQ_SYMPTOMA.container();
@Autowired
private JmsClient jmsClient;
@@ -57,7 +57,7 @@ class DeprecatedRabbitContainerConnectionDetailsFactoryIntegrationTests {
@Container
@ServiceConnection
static final RabbitMQContainer rabbit = TestImage.container(RabbitMQContainer.class);
static final RabbitMQContainer rabbit = TestImage.forContainer(RabbitMQContainer.class);
@Autowired(required = false)
private RabbitConnectionDetails connectionDetails;
@@ -54,7 +54,7 @@ class RabbitContainerConnectionDetailsFactoryIntegrationTests {
@Container
@ServiceConnection
static final RabbitMQContainer rabbit = TestImage.container(RabbitMQContainer.class);
static final RabbitMQContainer rabbit = TestImage.forContainer(RabbitMQContainer.class);
@Autowired(required = false)
private RabbitConnectionDetails connectionDetails;
@@ -69,7 +69,7 @@ class RabbitStreamContainerConnectionDetailsFactoryIntegrationTests {
static final RabbitMQContainer rabbit = getRabbitMqStreamContainer();
private static RabbitMQContainer getRabbitMqStreamContainer() {
RabbitMQContainer container = TestImage.container(RabbitMQContainer.class);
RabbitMQContainer container = TestImage.forContainer(RabbitMQContainer.class);
container.addExposedPorts(RABBITMQ_STREAMS_PORT);
String enabledPlugins = "[rabbitmq_stream,rabbitmq_prometheus].";
container.withCopyToContainer(Transferable.of(enabledPlugins), "/etc/rabbitmq/enabled_plugins");
@@ -74,7 +74,7 @@ class RabbitStreamWithSslContainerConnectionDetailsFactoryIntegrationTests {
static final RabbitMQContainer rabbit = getRabbitMqStreamContainer();
private static RabbitMQContainer getRabbitMqStreamContainer() {
RabbitMQContainer container = TestImage.container(RabbitMQContainer.class);
RabbitMQContainer container = TestImage.forContainer(RabbitMQContainer.class);
container.addExposedPorts(RABBITMQ_STREAMS_TLS_PORT);
String enabledPlugins = "[rabbitmq_stream,rabbitmq_prometheus].";
container.withCopyToContainer(Transferable.of(enabledPlugins), "/etc/rabbitmq/enabled_plugins");
@@ -70,14 +70,14 @@ class SeparateContainersRabbitAndRabbitStreamContainerConnectionDetailsFactoryIn
@Container
@ServiceConnection
static final RabbitMQContainer rabbit = TestImage.container(RabbitMQContainer.class);
static final RabbitMQContainer rabbit = TestImage.forContainer(RabbitMQContainer.class);
@Container
@ServiceConnection(type = RabbitStreamConnectionDetails.class)
static final RabbitMQContainer rabbitStream = getRabbitMqStreamContainer();
private static RabbitMQContainer getRabbitMqStreamContainer() {
RabbitMQContainer container = TestImage.container(RabbitMQContainer.class);
RabbitMQContainer container = TestImage.forContainer(RabbitMQContainer.class);
container.addExposedPorts(RABBITMQ_STREAMS_PORT);
String enabledPlugins = "[rabbitmq_stream,rabbitmq_prometheus].";
container.withCopyToContainer(Transferable.of(enabledPlugins), "/etc/rabbitmq/enabled_plugins");
@@ -73,7 +73,7 @@ class SingleContainerRabbitAndRabbitStreamContainerConnectionDetailsFactoryInteg
static final RabbitMQContainer rabbit = getRabbitMqStreamContainer();
private static RabbitMQContainer getRabbitMqStreamContainer() {
RabbitMQContainer container = TestImage.container(RabbitMQContainer.class);
RabbitMQContainer container = TestImage.forContainer(RabbitMQContainer.class);
container.addExposedPorts(RABBITMQ_STREAMS_PORT);
String enabledPlugins = "[rabbitmq_stream,rabbitmq_prometheus].";
container.withCopyToContainer(Transferable.of(enabledPlugins), "/etc/rabbitmq/enabled_plugins");
@@ -22,6 +22,7 @@ import java.util.List;
import org.awaitility.Awaitility;
import org.junit.jupiter.api.Test;
import org.testcontainers.activemq.ArtemisContainer;
import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;
@@ -30,7 +31,6 @@ import org.springframework.boot.artemis.autoconfigure.ArtemisAutoConfiguration;
import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
import org.springframework.boot.jms.autoconfigure.JmsAutoConfiguration;
import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
import org.springframework.boot.testsupport.container.ArtemisLegacyContainer;
import org.springframework.boot.testsupport.container.TestImage;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -51,7 +51,7 @@ class ArtemisContainerConnectionDetailsFactoryIntegrationTests {
@Container
@ServiceConnection
static final ArtemisLegacyContainer artemis = TestImage.container(ArtemisLegacyContainer.class);
static final ArtemisContainer artemis = TestImage.ARTEMIS_LEGACY.container();
@Autowired
private JmsClient jmsClient;
@@ -52,7 +52,7 @@ import static org.assertj.core.api.Assertions.assertThat;
class BatchDataMongoAutoConfigurationIntegrationTests {
@Container
static final MongoDBContainer mongoDb = TestImage.container(MongoDBContainer.class).withReplicaSet();
static final MongoDBContainer mongoDb = TestImage.forContainer(MongoDBContainer.class).withReplicaSet();
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
.withUserConfiguration(JobConfiguration.class)
@@ -50,7 +50,7 @@ import static org.assertj.core.api.Assertions.assertThat;
class RedisCacheMetricsTests {
@Container
static final RedisContainer redis = TestImage.container(RedisContainer.class);
static final RedisContainer redis = TestImage.forContainer(RedisContainer.class);
private static final Tags TAGS = Tags.of("app", "test").and("cache", "test");
@@ -44,7 +44,7 @@ import static org.mockito.Mockito.spy;
class CassandraAutoConfigurationIntegrationTests {
@Container
static final CassandraContainer cassandra = TestImage.container(CassandraContainer.class);
static final CassandraContainer cassandra = TestImage.forContainer(CassandraContainer.class);
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
.withConfiguration(AutoConfigurations.of(CassandraAutoConfiguration.class))
@@ -53,7 +53,7 @@ import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
class CassandraAutoConfigurationWithPasswordAuthenticationIntegrationTests {
@Container
static final CassandraContainer cassandra = TestImage.container(PasswordAuthenticatorCassandraContainer.class)
static final CassandraContainer cassandra = TestImage.forContainer(PasswordAuthenticatorCassandraContainer.class)
.withStartupAttempts(5)
.waitingFor(new CassandraWaitStrategy());
@@ -44,7 +44,7 @@ class CassandraContainerConnectionDetailsFactoryTests {
@Container
@ServiceConnection
static final CassandraContainer cassandra = TestImage.container(CassandraContainer.class);
static final CassandraContainer cassandra = TestImage.forContainer(CassandraContainer.class);
@Autowired(required = false)
private CassandraConnectionDetails connectionDetails;
@@ -51,7 +51,7 @@ class CouchbaseAutoConfigurationIntegrationTests {
private static final String BUCKET_NAME = "cbbucket";
@Container
static final CouchbaseContainer couchbase = TestImage.container(CouchbaseContainer.class)
static final CouchbaseContainer couchbase = TestImage.forContainer(CouchbaseContainer.class)
.withEnabledServices(CouchbaseService.KV)
.withCredentials("spring", "password")
.withBucket(new BucketDefinition(BUCKET_NAME).withPrimaryIndex(false));
@@ -46,7 +46,7 @@ class CouchbaseContainerConnectionDetailsFactoryTests {
@Container
@ServiceConnection
static final CouchbaseContainer couchbase = TestImage.container(CouchbaseContainer.class)
static final CouchbaseContainer couchbase = TestImage.forContainer(CouchbaseContainer.class)
.withEnabledServices(CouchbaseService.KV, CouchbaseService.INDEX, CouchbaseService.QUERY)
.withBucket(new BucketDefinition("cbbucket"));
@@ -56,7 +56,7 @@ class DataCassandraTestIntegrationTests {
@Container
@ServiceConnection
static final CassandraContainer cassandra = TestImage.container(CassandraContainer.class);
static final CassandraContainer cassandra = TestImage.forContainer(CassandraContainer.class);
@Autowired
private CassandraTemplate cassandraTemplate;
@@ -54,7 +54,7 @@ class DataCassandraTestWithIncludeFilterIntegrationTests {
@Container
@ServiceConnection
static final CassandraContainer cassandra = TestImage.container(CassandraContainer.class);
static final CassandraContainer cassandra = TestImage.forContainer(CassandraContainer.class);
@Autowired
private ExampleRepository exampleRepository;
@@ -47,7 +47,7 @@ import static org.assertj.core.api.Assertions.assertThat;
class DataCassandraAutoConfigurationIntegrationTests {
@Container
static final CassandraContainer cassandra = TestImage.container(CassandraContainer.class);
static final CassandraContainer cassandra = TestImage.forContainer(CassandraContainer.class);
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
.withConfiguration(
@@ -52,7 +52,7 @@ class DataCouchbaseTestIntegrationTests {
@Container
@ServiceConnection
static final CouchbaseContainer couchbase = TestImage.container(CouchbaseContainer.class)
static final CouchbaseContainer couchbase = TestImage.forContainer(CouchbaseContainer.class)
.withEnabledServices(CouchbaseService.KV, CouchbaseService.INDEX, CouchbaseService.QUERY)
.withBucket(new BucketDefinition(BUCKET_NAME));
@@ -50,7 +50,7 @@ class DataCouchbaseTestReactiveIntegrationTests {
@Container
@ServiceConnection
static final CouchbaseContainer couchbase = TestImage.container(CouchbaseContainer.class)
static final CouchbaseContainer couchbase = TestImage.forContainer(CouchbaseContainer.class)
.withEnabledServices(CouchbaseService.KV, CouchbaseService.INDEX, CouchbaseService.QUERY)
.withBucket(new BucketDefinition(BUCKET_NAME));
@@ -48,7 +48,7 @@ class DataCouchbaseTestWithIncludeFilterIntegrationTests {
@Container
@ServiceConnection
static final CouchbaseContainer couchbase = TestImage.container(CouchbaseContainer.class)
static final CouchbaseContainer couchbase = TestImage.forContainer(CouchbaseContainer.class)
.withEnabledServices(CouchbaseService.KV, CouchbaseService.INDEX, CouchbaseService.QUERY)
.withBucket(new BucketDefinition("cbbucket"));
@@ -49,7 +49,7 @@ class DataElasticsearchTestIntegrationTests {
@Container
@ServiceConnection
static final ElasticsearchContainer elasticsearch = TestImage.container(ElasticsearchContainer.class);
static final ElasticsearchContainer elasticsearch = TestImage.forContainer(ElasticsearchContainer.class);
@Autowired
private ElasticsearchTemplate elasticsearchTemplate;
@@ -44,7 +44,7 @@ class DataElasticsearchTestPropertiesIntegrationTests {
@Container
@ServiceConnection
static final ElasticsearchContainer elasticsearch = TestImage.container(ElasticsearchContainer.class);
static final ElasticsearchContainer elasticsearch = TestImage.forContainer(ElasticsearchContainer.class);
@Autowired
private Environment environment;
@@ -45,7 +45,7 @@ class DataElasticsearchTestReactiveIntegrationTests {
@Container
@ServiceConnection
static final ElasticsearchContainer elasticsearch = TestImage.container(ElasticsearchContainer.class);
static final ElasticsearchContainer elasticsearch = TestImage.forContainer(ElasticsearchContainer.class);
@Autowired
private ReactiveElasticsearchTemplate elasticsearchTemplate;
@@ -46,7 +46,7 @@ class DataElasticsearchTestWithIncludeFilterIntegrationTests {
@Container
@ServiceConnection
static final ElasticsearchContainer elasticsearch = TestImage.container(ElasticsearchContainer.class);
static final ElasticsearchContainer elasticsearch = TestImage.forContainer(ElasticsearchContainer.class);
@Autowired
private ExampleRepository exampleRepository;
@@ -45,7 +45,7 @@ import static org.assertj.core.api.Assertions.assertThat;
class DataElasticsearchAutoConfigurationIntegrationTests {
@Container
static final ElasticsearchContainer elasticsearch = TestImage.container(ElasticsearchContainer.class);
static final ElasticsearchContainer elasticsearch = TestImage.ELASTICSEARCH.container();
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
.withConfiguration(AutoConfigurations.of(ElasticsearchRestClientAutoConfiguration.class,
@@ -51,7 +51,7 @@ import static org.assertj.core.api.Assertions.assertThat;
class DataElasticsearchReactiveRepositoriesAutoConfigurationTests {
@Container
static final ElasticsearchContainer elasticsearch = TestImage.container(ElasticsearchContainer.class);
static final ElasticsearchContainer elasticsearch = TestImage.forContainer(ElasticsearchContainer.class);
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
.withConfiguration(AutoConfigurations.of(ElasticsearchClientAutoConfiguration.class,
@@ -49,7 +49,7 @@ import static org.assertj.core.api.Assertions.assertThat;
class DataElasticsearchRepositoriesAutoConfigurationTests {
@Container
static final ElasticsearchContainer elasticsearch = TestImage.container(ElasticsearchContainer.class);
static final ElasticsearchContainer elasticsearch = TestImage.forContainer(ElasticsearchContainer.class);
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
.withConfiguration(AutoConfigurations.of(ElasticsearchRestClientAutoConfiguration.class,
@@ -68,7 +68,7 @@ class DataJdbcRepositoriesAutoConfigurationDialectResolutionTests {
private <C extends JdbcDatabaseContainer<?>> void withContainer(Class<C> containerType,
ThrowingConsumer<ApplicationContextRunner> callback) {
C container = TestImage.container(containerType);
C container = TestImage.forContainer(containerType);
try {
container.start();
ApplicationContextRunner contextRunner = new ApplicationContextRunner()
@@ -46,7 +46,8 @@ class DataLdapTestDockerTests {
@Container
@ServiceConnection
static final OpenLdapContainer openLdap = TestImage.container(OpenLdapContainer.class).withEnv("LDAP_TLS", "false");
static final OpenLdapContainer openLdap = TestImage.forContainer(OpenLdapContainer.class)
.withEnv("LDAP_TLS", "false");
@Autowired
private ApplicationContext applicationContext;
@@ -49,7 +49,7 @@ class DataMongoTestIntegrationTests {
@Container
@ServiceConnection
static final MongoDBContainer mongoDb = TestImage.container(MongoDBContainer.class);
static final MongoDBContainer mongoDb = TestImage.forContainer(MongoDBContainer.class);
@Autowired
private MongoTemplate mongoTemplate;
@@ -44,7 +44,7 @@ class DataMongoTestReactiveIntegrationTests {
@Container
@ServiceConnection
static final MongoDBContainer mongoDb = TestImage.container(MongoDBContainer.class);
static final MongoDBContainer mongoDb = TestImage.forContainer(MongoDBContainer.class);
@Autowired
private ReactiveMongoTemplate mongoTemplate;
@@ -43,7 +43,7 @@ class DataMongoTestWithIncludeFilterIntegrationTests {
@Container
@ServiceConnection
static final MongoDBContainer mongoDb = TestImage.container(MongoDBContainer.class);
static final MongoDBContainer mongoDb = TestImage.forContainer(MongoDBContainer.class);
@Autowired
private ExampleService service;
@@ -48,7 +48,7 @@ class TransactionalDataMongoTestIntegrationTests {
@Container
@ServiceConnection
static final MongoDBContainer mongoDb = TestImage.container(MongoDBContainer.class).withReplicaSet();
static final MongoDBContainer mongoDb = TestImage.forContainer(MongoDBContainer.class).withReplicaSet();
@Autowired
private ExampleRepository exampleRepository;
@@ -51,7 +51,7 @@ class DataNeo4jTestIntegrationTests {
@Container
@ServiceConnection
static final Neo4jContainer neo4j = TestImage.container(Neo4jContainer.class);
static final Neo4jContainer neo4j = TestImage.forContainer(Neo4jContainer.class);
@Autowired
private Neo4jTemplate neo4jTemplate;
@@ -44,7 +44,7 @@ class DataNeo4jTestPropertiesIntegrationTests {
@Container
@ServiceConnection
static final Neo4jContainer neo4j = TestImage.container(Neo4jContainer.class).withoutAuthentication();
static final Neo4jContainer neo4j = TestImage.forContainer(Neo4jContainer.class).withoutAuthentication();
@Autowired
private Environment environment;
@@ -57,7 +57,7 @@ class DataNeo4jTestReactiveIntegrationTests {
@Container
@ServiceConnection
static final Neo4jContainer neo4j = TestImage.container(Neo4jContainer.class).withoutAuthentication();
static final Neo4jContainer neo4j = TestImage.forContainer(Neo4jContainer.class).withoutAuthentication();
@Autowired
private ReactiveNeo4jTemplate neo4jTemplate;
@@ -44,7 +44,7 @@ class DataNeo4jTestWithIncludeFilterIntegrationTests {
@Container
@ServiceConnection
static final Neo4jContainer neo4j = TestImage.container(Neo4jContainer.class).withoutAuthentication();
static final Neo4jContainer neo4j = TestImage.forContainer(Neo4jContainer.class).withoutAuthentication();
@Autowired
private ExampleService service;
@@ -44,7 +44,7 @@ import static org.assertj.core.api.Assertions.assertThat;
class Neo4jRepositoriesAutoConfigurationIntegrationTests {
@Container
static final Neo4jContainer neo4j = TestImage.container(Neo4jContainer.class);
static final Neo4jContainer neo4j = TestImage.forContainer(Neo4jContainer.class);
@DynamicPropertySource
static void neo4jProperties(DynamicPropertyRegistry registry) {
@@ -52,7 +52,7 @@ class DataRedisTestIntegrationTests {
@Container
@ServiceConnection
static RedisContainer redis = TestImage.container(RedisContainer.class);
static RedisContainer redis = TestImage.forContainer(RedisContainer.class);
@Autowired
private RedisOperations<Object, Object> operations;
@@ -44,7 +44,7 @@ class DataRedisTestPropertiesIntegrationTests {
@Container
@ServiceConnection
static final RedisContainer redis = TestImage.container(RedisContainer.class);
static final RedisContainer redis = TestImage.forContainer(RedisContainer.class);
@Autowired
private Environment environment;
@@ -48,7 +48,7 @@ class DataRedisTestReactiveIntegrationTests {
@Container
@ServiceConnection
static RedisContainer redis = TestImage.container(RedisContainer.class);
static RedisContainer redis = TestImage.forContainer(RedisContainer.class);
@Autowired
private ReactiveRedisOperations<Object, Object> operations;
@@ -43,7 +43,7 @@ class DataRedisTestWithIncludeFilterIntegrationTests {
@Container
@ServiceConnection
static final RedisContainer redis = TestImage.container(RedisContainer.class);
static final RedisContainer redis = TestImage.forContainer(RedisContainer.class);
@Autowired
private ExampleRepository exampleRepository;
@@ -42,7 +42,7 @@ import static org.awaitility.Awaitility.await;
class DataRedisAnnotationDrivenConfigurationIntegrationTests {
@Container
static final RedisContainer redis = TestImage.container(RedisContainer.class);
static final RedisContainer redis = TestImage.forContainer(RedisContainer.class);
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
.withConfiguration(AutoConfigurations.of(DataRedisAutoConfiguration.class))
@@ -45,7 +45,7 @@ import static org.assertj.core.api.Assertions.assertThat;
class DataRedisRepositoriesAutoConfigurationTests {
@Container
public static RedisContainer redis = TestImage.container(RedisContainer.class);
public static RedisContainer redis = TestImage.forContainer(RedisContainer.class);
private final AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
@@ -45,7 +45,7 @@ class RedisContainerConnectionDetailsFactoryTests {
@Container
@ServiceConnection
static final RedisContainer redis = TestImage.container(RedisContainer.class);
static final RedisContainer redis = TestImage.forContainer(RedisContainer.class);
@Autowired(required = false)
private DataRedisConnectionDetails connectionDetails;
@@ -46,7 +46,7 @@ class RedisStackContainerConnectionDetailsFactoryTests {
@Container
@ServiceConnection
static final RedisStackContainer redis = TestImage.container(RedisStackContainer.class);
static final RedisStackContainer redis = TestImage.forContainer(RedisStackContainer.class);
@Autowired(required = false)
private DataRedisConnectionDetails connectionDetails;
@@ -46,7 +46,7 @@ class RedisStackServerContainerConnectionDetailsFactoryTests {
@Container
@ServiceConnection
static final RedisStackServerContainer redis = TestImage.container(RedisStackServerContainer.class);
static final RedisStackServerContainer redis = TestImage.forContainer(RedisStackServerContainer.class);
@Autowired(required = false)
private DataRedisConnectionDetails connectionDetails;
@@ -41,7 +41,7 @@ import static org.assertj.core.api.Assertions.assertThat;
class ElasticsearchClientAutoConfigurationIntegrationTests {
@Container
static final ElasticsearchContainer elasticsearch = TestImage.container(ElasticsearchContainer.class);
static final ElasticsearchContainer elasticsearch = TestImage.forContainer(ElasticsearchContainer.class);
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
.withConfiguration(AutoConfigurations.of(JacksonAutoConfiguration.class,
@@ -46,7 +46,7 @@ import static org.assertj.core.api.Assertions.assertThat;
class ElasticsearchRestClientAutoConfigurationIntegrationTests {
@Container
static final ElasticsearchContainer elasticsearch = TestImage.container(ElasticsearchContainer.class);
static final ElasticsearchContainer elasticsearch = TestImage.forContainer(ElasticsearchContainer.class);
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
.withConfiguration(AutoConfigurations.of(ElasticsearchRestClientAutoConfiguration.class));
@@ -31,7 +31,7 @@ import org.springframework.boot.elasticsearch.autoconfigure.ElasticsearchClientA
import org.springframework.boot.elasticsearch.autoconfigure.ElasticsearchConnectionDetails;
import org.springframework.boot.elasticsearch.autoconfigure.ElasticsearchRestClientAutoConfiguration;
import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
import org.springframework.boot.testsupport.container.ElasticsearchContainer9;
import org.springframework.boot.testsupport.container.TestImage;
import org.springframework.context.annotation.Configuration;
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
@@ -48,8 +48,8 @@ class ElasticsearchContainerConnectionDetailsFactoryTests {
@Container
@ServiceConnection
static final ElasticsearchContainer elasticsearch = new ElasticsearchContainer9().withStartupAttempts(5)
.withStartupTimeout(Duration.ofMinutes(10));
static final ElasticsearchContainer elasticsearch = TestImage.ELASTICSEARCH_9
.container((setup) -> setup.withStartupAttempts(5).withStartupTimeout(Duration.ofMinutes(10)));
@Autowired(required = false)
private ElasticsearchConnectionDetails connectionDetails;
@@ -46,7 +46,7 @@ class FlywayContainerConnectionDetailsFactoryTests {
@Container
@ServiceConnection
static final PostgreSQLContainer postgres = TestImage.container(PostgreSQLContainer.class);
static final PostgreSQLContainer postgres = TestImage.forContainer(PostgreSQLContainer.class);
@Autowired(required = false)
private JdbcConnectionDetails connectionDetails;
@@ -51,7 +51,7 @@ class CustomClusterNameHazelcastContainerConnectionDetailsFactoryIntegrationTest
@Container
@ServiceConnection
static final HazelcastContainer hazelcast = TestImage.container(HazelcastContainer.class)
static final HazelcastContainer hazelcast = TestImage.forContainer(HazelcastContainer.class)
.withClusterName("spring-boot");
@Autowired(required = false)
@@ -47,7 +47,7 @@ class HazelcastContainerConnectionDetailsFactoryIntegrationTests {
@Container
@ServiceConnection
static final HazelcastContainer hazelcast = TestImage.container(HazelcastContainer.class);
static final HazelcastContainer hazelcast = TestImage.forContainer(HazelcastContainer.class);
@Autowired(required = false)
private HazelcastConnectionDetails connectionDetails;
@@ -50,7 +50,7 @@ import static org.assertj.core.api.Assertions.assertThat;
class AutoConfigureTestDatabaseDynamicPropertySourceIntegrationTests {
@Container
static PostgreSQLContainer postgres = TestImage.container(PostgreSQLContainer.class);
static PostgreSQLContainer postgres = TestImage.forContainer(PostgreSQLContainer.class);
@Autowired
private DataSource dataSource;
@@ -52,7 +52,7 @@ import static org.assertj.core.api.Assertions.assertThat;
class AutoConfigureTestDatabaseNonTestDatabaseIntegrationTests {
@Container
static PostgreSQLContainer postgres = TestImage.container(PostgreSQLContainer.class);
static PostgreSQLContainer postgres = TestImage.forContainer(PostgreSQLContainer.class);
@Autowired
private DataSource dataSource;
@@ -51,7 +51,7 @@ class AutoConfigureTestDatabaseServiceConnectionIntegrationTests {
@Container
@ServiceConnection
static PostgreSQLContainer postgres = TestImage.container(PostgreSQLContainer.class);
static PostgreSQLContainer postgres = TestImage.forContainer(PostgreSQLContainer.class);
@Autowired
private DataSource dataSource;
@@ -48,7 +48,7 @@ class JdbcContainerConnectionDetailsFactoryTests {
@Container
@ServiceConnection
static final PostgreSQLContainer postgres = TestImage.container(PostgreSQLContainer.class);
static final PostgreSQLContainer postgres = TestImage.forContainer(PostgreSQLContainer.class);
@Autowired(required = false)
private JdbcConnectionDetails connectionDetails;
@@ -56,7 +56,7 @@ class ApacheKafkaContainerConnectionDetailsFactoryIntegrationTests {
@Container
@ServiceConnection
static final KafkaContainer kafka = TestImage.container(KafkaContainer.class);
static final KafkaContainer kafka = TestImage.forContainer(KafkaContainer.class);
@Autowired
private KafkaTemplate<String, String> kafkaTemplate;
@@ -55,7 +55,7 @@ class ConfluentKafkaContainerConnectionDetailsFactoryIntegrationTests {
@Container
@ServiceConnection
static final ConfluentKafkaContainer kafka = TestImage.container(ConfluentKafkaContainer.class);
static final ConfluentKafkaContainer kafka = TestImage.forContainer(ConfluentKafkaContainer.class);
@Autowired
private KafkaTemplate<String, String> kafkaTemplate;
@@ -53,7 +53,7 @@ class RedpandaContainerConnectionDetailsFactoryIntegrationTests {
@Container
@ServiceConnection
static final RedpandaContainer redpanda = TestImage.container(RedpandaContainer.class);
static final RedpandaContainer redpanda = TestImage.forContainer(RedpandaContainer.class);
@Autowired
KafkaTemplate<String, String> kafkaTemplate;
@@ -47,7 +47,7 @@ class LLdapContainerConnectionDetailsFactoryIntegrationTests {
@Container
@ServiceConnection
static final LLdapContainer lldap = TestImage.container(LLdapContainer.class);
static final LLdapContainer lldap = TestImage.forContainer(LLdapContainer.class);
@Autowired
private LdapTemplate ldapTemplate;
@@ -47,7 +47,8 @@ class OpenLdapContainerConnectionDetailsFactoryIntegrationTests {
@Container
@ServiceConnection
static final OpenLdapContainer openLdap = TestImage.container(OpenLdapContainer.class).withEnv("LDAP_TLS", "false");
static final OpenLdapContainer openLdap = TestImage.forContainer(OpenLdapContainer.class)
.withEnv("LDAP_TLS", "false");
@Autowired
private LdapTemplate ldapTemplate;
@@ -46,7 +46,7 @@ class LiquibaseContainerConnectionDetailsFactoryTests {
@Container
@ServiceConnection
static final PostgreSQLContainer postgres = TestImage.container(PostgreSQLContainer.class);
static final PostgreSQLContainer postgres = TestImage.forContainer(PostgreSQLContainer.class);
@Autowired(required = false)
private JdbcConnectionDetails connectionDetails;
@@ -92,7 +92,7 @@ class MailSenderAutoConfigurationIntegrationTests {
class ImplicitTlsTests {
@Container
private static final MailpitContainer mailpit = TestImage.container(MailpitContainer.class)
private static final MailpitContainer mailpit = TestImage.forContainer(MailpitContainer.class)
.withSmtpRequireTls(true)
.withSmtpTlsCert(MountableFile
.forClasspathResource("/org/springframework/boot/mail/autoconfigure/ssl/test-server.crt"))
@@ -153,7 +153,7 @@ class MailSenderAutoConfigurationIntegrationTests {
class StarttlsTests {
@Container
private static final MailpitContainer mailpit = TestImage.container(MailpitContainer.class)
private static final MailpitContainer mailpit = TestImage.forContainer(MailpitContainer.class)
.withSmtpRequireStarttls(true)
.withSmtpTlsCert(MountableFile
.forClasspathResource("/org/springframework/boot/mail/autoconfigure/ssl/test-server.crt"))
@@ -58,7 +58,7 @@ class GrafanaOpenTelemetryMetricsContainerConnectionDetailsFactoryIntegrationTes
@Container
@ServiceConnection
static final LgtmStackContainer container = TestImage.container(LgtmStackContainer.class);
static final LgtmStackContainer container = TestImage.forContainer(LgtmStackContainer.class);
@Autowired
private MeterRegistry meterRegistry;
@@ -68,10 +68,10 @@ class OpenTelemetryMetricsContainerConnectionDetailsFactoryIntegrationTests {
@Container
@ServiceConnection
static final GenericContainer<?> container = TestImage.OTEL_COLLECTOR.genericContainer()
.withCommand("--config=/etc/" + CONFIG_FILE_NAME)
.withCopyToContainer(MountableFile.forClasspathResource(CONFIG_FILE_NAME), "/etc/" + CONFIG_FILE_NAME)
.withExposedPorts(4318, 9090);
static final GenericContainer<?> container = TestImage.OTEL_COLLECTOR
.container((setup) -> setup.withCommand("--config=/etc/" + CONFIG_FILE_NAME)
.withCopyToContainer(MountableFile.forClasspathResource(CONFIG_FILE_NAME), "/etc/" + CONFIG_FILE_NAME)
.withExposedPorts(4318, 9090));
@Autowired
private MeterRegistry meterRegistry;
@@ -44,7 +44,7 @@ class GrafanaOpenTelemetryTracingContainerConnectionDetailsFactoryIntegrationTes
@Container
@ServiceConnection
static final LgtmStackContainer container = TestImage.container(LgtmStackContainer.class);
static final LgtmStackContainer container = TestImage.forContainer(LgtmStackContainer.class);
@Autowired
private OtlpTracingConnectionDetails connectionDetails;
@@ -44,8 +44,8 @@ class OpenTelemetryTracingContainerConnectionDetailsFactoryIntegrationTests {
@Container
@ServiceConnection
static final GenericContainer<?> container = TestImage.OTEL_COLLECTOR.genericContainer()
.withExposedPorts(4317, 4318);
static final GenericContainer<?> container = TestImage.OTEL_COLLECTOR
.container((setup) -> setup.withExposedPorts(4317, 4318));
@Autowired
private OtlpTracingConnectionDetails connectionDetails;
@@ -45,7 +45,7 @@ import static org.assertj.core.api.Assertions.assertThat;
class MongoHealthIndicatorIntegrationTests {
@Container
static MongoDBContainer mongo = TestImage.container(MongoDBContainer.class);
static MongoDBContainer mongo = TestImage.forContainer(MongoDBContainer.class);
@Test
void standardApi() {
@@ -47,7 +47,7 @@ import static org.assertj.core.api.Assertions.assertThat;
class MongoReactiveHealthIndicatorIntegrationTests {
@Container
static MongoDBContainer mongo = TestImage.container(MongoDBContainer.class);
static MongoDBContainer mongo = TestImage.forContainer(MongoDBContainer.class);
@Test
void standardApi() {
@@ -45,7 +45,7 @@ class DeprecatedMongoDbContainerConnectionDetailsFactoryTests {
@Container
@ServiceConnection
static final MongoDBContainer mongoDb = TestImage.container(MongoDBContainer.class);
static final MongoDBContainer mongoDb = TestImage.forContainer(MongoDBContainer.class);
@Autowired(required = false)
private MongoConnectionDetails connectionDetails;
@@ -42,7 +42,7 @@ class MongoDbAtlasLocalContainerConnectionDetailsFactoryIntegrationTests {
@Container
@ServiceConnection
static final MongoDBAtlasLocalContainer mongoDb = TestImage.container(MongoDBAtlasLocalContainer.class);
static final MongoDBAtlasLocalContainer mongoDb = TestImage.forContainer(MongoDBAtlasLocalContainer.class);
@Autowired(required = false)
private MongoConnectionDetails connectionDetails;
@@ -53,7 +53,7 @@ import static org.assertj.core.api.Assertions.assertThat;
class Neo4jAutoConfigurationIntegrationTests {
@Container
private static final Neo4jContainer neo4j = TestImage.container(Neo4jContainer.class);
private static final Neo4jContainer neo4j = TestImage.forContainer(Neo4jContainer.class);
@SpringBootTest
@Nested
@@ -49,7 +49,7 @@ class Neo4jReactiveHealthIndicatorIntegrationTests {
// gh-33428
@Container
private static final Neo4jContainer neo4jServer = TestImage.container(Neo4jContainer.class);
private static final Neo4jContainer neo4jServer = TestImage.forContainer(Neo4jContainer.class);
@DynamicPropertySource
static void neo4jProperties(DynamicPropertyRegistry registry) {
@@ -45,7 +45,7 @@ class DeprecatedNeo4jContainerConnectionDetailsFactoryIntegrationTests {
@Container
@ServiceConnection
static final Neo4jContainer<?> container = TestImage.container(Neo4jContainer.class);
static final Neo4jContainer<?> container = TestImage.forContainer(Neo4jContainer.class);
@Autowired(required = false)
private Neo4jConnectionDetails connectionDetails;
@@ -44,7 +44,7 @@ class GrafanaOtlpLoggingContainerConnectionDetailsFactoryTests {
@Container
@ServiceConnection
static final LgtmStackContainer container = TestImage.container(LgtmStackContainer.class);
static final LgtmStackContainer container = TestImage.forContainer(LgtmStackContainer.class);
@Autowired
private OtlpLoggingConnectionDetails connectionDetails;
@@ -44,8 +44,8 @@ class OtelCollectorOltpLoggingContainerConnectionDetailsFactoryTests {
@Container
@ServiceConnection
static final GenericContainer<?> container = TestImage.OTEL_COLLECTOR.genericContainer()
.withExposedPorts(4317, 4318);
static final GenericContainer<?> container = TestImage.OTEL_COLLECTOR
.container((setup) -> setup.withExposedPorts(4317, 4318));
@Autowired
private OtlpLoggingConnectionDetails connectionDetails;
@@ -49,7 +49,7 @@ import static org.assertj.core.api.Assertions.assertThat;
class PulsarAutoConfigurationIntegrationTests {
@Container
static final PulsarContainer pulsar = TestImage.container(PulsarContainer.class);
static final PulsarContainer pulsar = TestImage.forContainer(PulsarContainer.class);
private static final CountDownLatch listenLatch = new CountDownLatch(1);
@@ -57,7 +57,7 @@ class DeprecatedPulsarContainerConnectionDetailsFactoryIntegrationTests {
@Container
@ServiceConnection
@SuppressWarnings("unused")
static final PulsarContainer pulsar = TestImage.container(PulsarContainer.class);
static final PulsarContainer pulsar = TestImage.forContainer(PulsarContainer.class);
@Autowired
private PulsarTemplate<String> pulsarTemplate;
@@ -53,7 +53,7 @@ class PulsarContainerConnectionDetailsFactoryIntegrationTests {
@Container
@ServiceConnection
@SuppressWarnings("unused")
static final PulsarContainer pulsar = TestImage.container(PulsarContainer.class);
static final PulsarContainer pulsar = TestImage.forContainer(PulsarContainer.class);
@Autowired
private PulsarTemplate<String> pulsarTemplate;
@@ -47,7 +47,7 @@ class OracleFreeR2dbcContainerConnectionDetailsFactoryIntegrationTests {
@Container
@ServiceConnection
static final OracleContainer oracle = TestImage.container(OracleContainer.class);
static final OracleContainer oracle = TestImage.forContainer(OracleContainer.class);
@Autowired
ConnectionFactory connectionFactory;
@@ -51,7 +51,7 @@ class OracleXeR2dbcContainerConnectionDetailsFactoryIntegrationTests {
@Container
@ServiceConnection
static final OracleContainer oracle = TestImage.container(OracleContainer.class);
static final OracleContainer oracle = TestImage.forContainer(OracleContainer.class);
@Autowired
ConnectionFactory connectionFactory;
@@ -61,7 +61,7 @@ import static org.assertj.core.api.Assertions.entry;
class SessionDataRedisAutoConfigurationTests extends AbstractSessionAutoConfigurationTests {
@Container
public static RedisContainer redis = TestImage.container(RedisContainer.class);
public static RedisContainer redis = TestImage.forContainer(RedisContainer.class);
@BeforeEach
void prepareContextRunner() {
@@ -64,7 +64,7 @@ import static org.assertj.core.api.Assertions.entry;
class SessionDataRedisReactiveAutoConfigurationTests extends AbstractSessionReactiveAutoConfigurationTests {
@Container
public static RedisContainer redis = TestImage.container(RedisContainer.class);
public static RedisContainer redis = TestImage.forContainer(RedisContainer.class);
@BeforeEach
void prepareRunner() {
@@ -45,7 +45,7 @@ class ZipkinContainerConnectionDetailsFactoryIntegrationTests {
@Container
@ServiceConnection
static final GenericContainer<?> zipkin = TestImage.container(ZipkinContainer.class);
static final GenericContainer<?> zipkin = TestImage.forContainer(ZipkinContainer.class);
@Autowired(required = false)
private ZipkinConnectionDetails connectionDetails;
@@ -21,6 +21,7 @@ import java.time.Duration;
import org.awaitility.Awaitility;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.testcontainers.activemq.ActiveMQContainer;
import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;
@@ -29,7 +30,6 @@ 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.container.ActiveMQClassicContainer;
import org.springframework.boot.testsupport.container.TestImage;
import static org.assertj.core.api.Assertions.assertThat;
@@ -47,7 +47,7 @@ class SampleActiveMqTests {
@Container
@ServiceConnection
private static final ActiveMQClassicContainer container = TestImage.container(ActiveMQClassicContainer.class);
private static final ActiveMQContainer container = TestImage.ACTIVE_MQ_CLASSIC.container();
@Autowired
private Producer producer;
@@ -49,7 +49,7 @@ class SampleAmqpSimpleApplicationSslTests {
@ServiceConnection
@PemKeyStore(certificate = "classpath:ssl/test-client.crt", privateKey = "classpath:ssl/test-client.key")
@PemTrustStore("classpath:ssl/test-ca.crt")
static final SecureRabbitMqContainer rabbit = TestImage.container(SecureRabbitMqContainer.class);
static final SecureRabbitMqContainer rabbit = TestImage.forContainer(SecureRabbitMqContainer.class);
@Autowired
private Sender sender;

Some files were not shown because too many files have changed in this diff Show More