Commit Graph

93 Commits

Author SHA1 Message Date
Stéphane Nicoll 921b9fd6ac Merge branch '3.4.x'
Build and Deploy Snapshot / Build and Deploy Snapshot (push) Has been cancelled Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[early-access:true toolchain:true version:24], map[id:${{ vars.UBUNTU_MEDIUM || 'ubuntu-latest' }} name:Linux]) (push) Has been cancelled Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[early-access:true toolchain:true version:24], map[id:windows-latest name:Windows]) (push) Has been cancelled Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:false version:17], map[id:${{ vars.UBUNTU_MEDIUM || 'ubuntu-latest' }} name:Linux]) (push) Has been cancelled Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:false version:17], map[id:windows-latest name:Windows]) (push) Has been cancelled Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:false version:21], map[id:${{ vars.UBUNTU_MEDIUM || 'ubuntu-latest' }} name:Linux]) (push) Has been cancelled Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:false version:21], map[id:windows-latest name:Windows]) (push) Has been cancelled Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:false version:22], map[id:${{ vars.UBUNTU_MEDIUM || 'ubuntu-latest' }} name:Linux]) (push) Has been cancelled Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:false version:22], map[id:windows-latest name:Windows]) (push) Has been cancelled Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:true version:23], map[id:${{ vars.UBUNTU_MEDIUM || 'ubuntu-latest' }} name:Linux]) (push) Has been cancelled Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:true version:23], map[id:windows-latest name:Windows]) (push) Has been cancelled Details
Run System Tests / Java ${{ matrix.java.version}} (map[toolchain:false version:17]) (push) Has been cancelled Details
Run System Tests / Java ${{ matrix.java.version}} (map[toolchain:true version:21]) (push) Has been cancelled Details
Build and Deploy Snapshot / Trigger Docs Build (push) Has been cancelled Details
Build and Deploy Snapshot / Verify (push) Has been cancelled Details
Closes gh-45595
2025-05-18 09:28:38 +02:00
Stéphane Nicoll fab15af876 Merge branch '3.3.x' into 3.4.x
Build and Deploy Snapshot / Build and Deploy Snapshot (push) Has been cancelled Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[early-access:true toolchain:true version:24], map[id:${{ vars.UBUNTU_MEDIUM || 'ubuntu-latest' }} name:Linux]) (push) Has been cancelled Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[early-access:true toolchain:true version:24], map[id:windows-latest name:Windows]) (push) Has been cancelled Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:false version:17], map[id:${{ vars.UBUNTU_MEDIUM || 'ubuntu-latest' }} name:Linux]) (push) Has been cancelled Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:false version:17], map[id:windows-latest name:Windows]) (push) Has been cancelled Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:false version:21], map[id:${{ vars.UBUNTU_MEDIUM || 'ubuntu-latest' }} name:Linux]) (push) Has been cancelled Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:false version:21], map[id:windows-latest name:Windows]) (push) Has been cancelled Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:false version:22], map[id:${{ vars.UBUNTU_MEDIUM || 'ubuntu-latest' }} name:Linux]) (push) Has been cancelled Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:false version:22], map[id:windows-latest name:Windows]) (push) Has been cancelled Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:true version:23], map[id:${{ vars.UBUNTU_MEDIUM || 'ubuntu-latest' }} name:Linux]) (push) Has been cancelled Details
CI / ${{ matrix.os.name}} | Java ${{ matrix.java.version}} (map[toolchain:true version:23], map[id:windows-latest name:Windows]) (push) Has been cancelled Details
Run System Tests / Java ${{ matrix.java.version}} (map[toolchain:false version:17]) (push) Has been cancelled Details
Run System Tests / Java ${{ matrix.java.version}} (map[toolchain:true version:21]) (push) Has been cancelled Details
Build and Deploy Snapshot / Trigger Docs Build (push) Has been cancelled Details
Build and Deploy Snapshot / Verify (push) Has been cancelled Details
Closes gh-45594
2025-05-18 09:26:57 +02:00
Johnny Lim 0a54804a0f Polish
See gh-45592

Signed-off-by: Johnny Lim <izeye@naver.com>
2025-05-18 09:20:33 +02:00
Phillip Webb bc91c35644 Merge branch '3.4.x'
Closes gh-44993
2025-04-03 18:05:13 -07:00
Phillip Webb c96835bc9d Merge branch '3.3.x' into 3.4.x
Closes gh-44992
2025-04-03 18:02:57 -07:00
Moritz Halbritter b62a0c1ae0 Add SSL support to Docker Compose and Testcontainers infrastructure
See gh-41137

Co-authored-by: Phillip Webb <phil.webb@broadcom.com>
2025-02-17 13:23:15 +01:00
Phillip Webb a49719d73e Use consistent exception messages in Assert calls
Update `Assert` calls to consistently use messages of the form
"'item' must [not] ...".

Closes gh-43780
2025-01-11 21:18:47 -08:00
Phillip Webb ccc1b5da28 Don't call `Startable.start()` for already started containers
Add a new `TestcontainersStartup.start` static method and update the
existing start methods so that `Startable.start()` is only called when
the container is not already running.

Prior to this commit, we assumed that `Startable.start()` calls were
idempotent and could be safely made multiple times. Whilst this appears
to be true for stock `GenericContainer` based startables, users may have
their own `start()` method that does not expect to be called multiple
times.

The implemented detection logic will not be applied if a `Startable`
is not also a `Container`. In these cases, the implementation will need
to deal directly with multiple `start()` calls.

Fixed gh-43253
2024-12-12 15:26:59 -08:00
Dmytro Nosan 5be0049ed9 Add a test to verify that ReflectionHint for Hazelcast ClientConfig is present
See gh-42874
2024-10-25 08:44:26 +02:00
Eddú Meléndez d9dfb0389e Add container support for ClickHouse
See gh-42837
2024-10-23 13:54:58 +02:00
Stéphane Nicoll b7979cf443 Use AbstractAotProcessor.AOT_PROCESSING instead of duplicate constant
Closes gh-42461
2024-10-18 10:12:01 +02:00
Andy Wilkinson 3c095b4ec2 Prefer DynamicPropertyRegistar to DynamicPropertyRegistry
Closes gh-41996
2024-10-10 15:25:44 +01:00
Phillip Webb fa686bb593 Support Testcontainer Redis with custom image names
Update `RedisContainerConnectionDetailsFactory` so that it can also
support `RedisContainer` with a custom name.

Closes gh-41450
2024-08-29 19:26:20 -07:00
Andy Wilkinson d56dd741d0 Merge branch '3.3.x'
Closes gh-41860
2024-08-14 19:04:18 +01:00
Andy Wilkinson e7e5ed1508 Don't initialize containers during AOT processing
Fixes gh-41838
2024-08-14 18:56:00 +01:00
Andy Wilkinson 2216b48e64 Match one of multiple names in ContainerConnectionDetailsFactory
Closes gh-41543

Co-Authored-By: Eddú Meléndez <eddu.melendez@gmail.com>
2024-07-17 10:43:50 +01:00
Andy Wilkinson 375b3b16a0 Remove APIs that were deprecated for removal in 3.4.0
Closes gh-41435
2024-07-10 13:31:21 +01:00
Andy Wilkinson 6fbf08fa9a Update spring-boot-docker-compose to use docker-test plugin
See gh-41228
2024-06-26 19:46:03 +01:00
Andy Wilkinson 3f1f801461 Update spring-boot-testcontainers to use docker-test plugin
See gh-41228
2024-06-26 19:45:52 +01:00
Phillip Webb 712d935c8e Fix checkstyle violation
See gh-35786
2024-06-25 22:16:03 -07:00
Phillip Webb eef4c3c2c0 Allow TestcontainersLifecycleBeanPostProcessor to detect scoped beans
Update `TestcontainersLifecycleBeanPostProcessor` so that scoped beans
are included.

Fixes gh-35786
2024-06-25 22:00:34 -07:00
Andy Wilkinson 491f34d25c Improve container test code
Replace `DockerImageNames` with a enum and relocate it from the
`testcontainers` to `container` package. The enum now also
becomes a common location that we can use to apply container
configuration such as timeouts.

Closes gh-41164

Co-authored-by: Phillip Webb <phil.webb@broadcom.com>
2024-06-19 20:10:03 -07:00
Andy Wilkinson 138307c13c Disable test context cache in spring-boot-testcontainers
Closes gh-41124
2024-06-17 11:43:00 +01:00
Ahmed Ashour 207327d97c Use method references when possible in test code
See gh-40974
2024-06-11 12:58:00 -07:00
Andy Wilkinson d340f87c22 Disable test when Docker is not available
See gh-40585
2024-05-22 09:58:23 +01:00
Andy Wilkinson 468e246dbb Make sure container's started before connection details use it
Prior to this commit, a Testcontainer that was managed as a bean
would not have been started in time if it was accessed before
the bean factory's configuration had been frozen. A common way
for this to occur is when using JPA. The entity manager factory
bean is LoadTimeWeaverAware which causes it to be created before
configuration is frozen. Creating this bean requires the DataSource
which in turn requires the JdbcConnectionDetails and its JDBC URL.
Getting the JDBC URL From the connection details requires the
container hosting the SQL database to have been started.

This commit updates ContainerConnectionDetails, the super-class for
all Testcontainer-based ConnectionDetails implementations, to publish
an event when the Container is retrieved from the details. When this
event is published, TestcontainersLifecycleBeanPostProcessor
initializes all containers that are defined as beans.

Closes gh-40585
2024-05-22 09:15:21 +01:00
Andy Wilkinson f440f2c3ac Merge branch '3.1.x' into 3.2.x
Closes gh-40834
2024-05-20 13:12:03 +01:00
Andy Wilkinson f5262d89df Add missing Testcontainers service connection tests
Closes gh-35039
2024-05-20 13:02:24 +01:00
Scott Frederick 3e2d151c0e Merge branch '3.1.x' into 3.2.x
Closes gh-40508
2024-04-24 15:08:50 -05:00
Scott Frederick f210d83062 Don't reuse Testcontainers containers if reuse is globally disabled
Fixes gh-39609
2024-04-24 14:37:59 -05:00
Andy Wilkinson 61ca87f7a4 Polish "Prevent double registration of event publisher registrar"
See gh-39297
2024-01-30 16:02:38 +00:00
Phillip Webb cff8cb98c7 Merge branch '3.1.x' into 3.2.x 2024-01-22 12:20:24 -08:00
Phillip Webb 88a8550609 Make OTEL tstcontainers integration test more resilient
Tweak awaitility assertions to fix timing error that often occurs on
local builds.
2024-01-16 10:49:25 -08:00
Phillip Webb 89874d351a Ensure containers are started before binding datasource properties
Update `TestcontainersLifecycleBeanPostProcessor` so that containers
are now initialized either on the first `postProcessAfterInitialization`
call with a frozen configuration or just before a test container
property is supplied.

Prior to this commit, it was assumed that the first post-process call
after the configuration was frozen was suitably early to initialize
the containers. This turns out to not be no always the case.

Specifically, in the `finishBeanFactoryInitialization` method of
`AbstractApplicationContext` we see that `LoadTimeWeaverAware` beans
are obtained before the configuration is frozen. One such bean is
`DefaultPersistenceUnitManager` which is likely to need datasource
properties that will require a started container.

To fix the problem, the `TestcontainersPropertySource` now publishes
a `BeforeTestcontainersPropertySuppliedEvent` to the ApplicationContext
just before any value is supplied. By listening for this event, we can
ensure that containers are initialized and started before any dynamic
property is read.

Fixes gh-38913
2024-01-16 10:36:54 -08:00
Andy Wilkinson 7087897507 Merge branch '3.1.x' into 3.2.x
Closes gh-39091
2024-01-11 10:33:57 +00:00
Phillip Webb 5354ad15b3 Merge branch '3.1.x'
Closes gh-38877
2023-12-19 22:51:48 -08:00
Yanming Zhou d3a51e56b7 Remove unnecessary `static` modifiers
See gh-38739
2023-12-19 22:38:08 -08:00
Phillip Webb 561c7f749b Don't start containers imported via @ImportTestcontainers
Remove early start of containers imported via `@ImportTestcontainers`
so that parallel startup can happen.

Fixes gh-38831
2023-12-17 15:22:28 -08:00
Phillip Webb 6ae113c18a Fix parallel startup of testcontainers
Update `TestcontainersLifecycleBeanPostProcessor` so that containers
can actually be started in parallel.

Prior to this commit, `initializeStartables` would collect beans
and in the process trigger the `postProcessAfterInitialization` method
on each bean. This would see that  `startablesInitialized` was `true`
and call `startableBean.start` directly. The result of this was that
beans were actually started sequentially and when the `start` method
was finally called it had nothing to do.

The updated code uses an enum rather than a boolean so that the
`postProcessAfterInitialization` method no longer attempts to start
beans unless `initializeStartables` has finished.

Fixes gh-38831
2023-12-16 21:57:16 -08:00
Phillip Webb 6c3dec42e0 Add container support for Oracle Free which replaces Oracle XE
Update Docker Compose and Testcontainers support to work with
`gvenzl/oracle-free` which replaces `gvenzl/oracle-xe`.

Closes gh-38476
2023-11-21 11:51:59 -08:00
Phillip Webb 3a32e4e913 Merge branch '3.1.x'
Closes gh-38405
2023-11-20 16:27:46 -08:00
Phillip Webb f68df82b30 Support lenient ContainerConnectionDetailsFactory hint registration
Update `ContainerConnectionDetailsFactory` hint registration logic
so that types are optional on the classpath.

See gh-36606
Fixes gh-38392
2023-11-20 16:26:22 -08:00
Phillip Webb 663243e60c Fix open telemetry container lifecycle issues
Mark test as `@DirtiesContext` so that the context is closed before
the container.

Closes gh-38176
2023-11-01 18:16:38 -07:00
Moritz Halbritter ddf6b3f23b Merge branch '3.1.x'
Closes gh-38014
2023-10-25 10:26:02 +02:00
Moritz Halbritter 73685d1d02 Register required class names for reflection in Testcontainer factory
Closes gh-36606
2023-10-25 10:25:42 +02:00
Phillip Webb fcb75b6a1e Search implemented interfaces on superclass for @ServiceConnection
Refine original fix to also search interfaces on the superclass.

Fixes gh-37671
2023-10-19 10:52:19 +01:00
Moritz Halbritter 55dc2963ef Rename Testcontainers bean startup property
Old name: spring.testcontainers.startup
New name: spring.testcontainers.beans.startup

Closes gh-37073
2023-10-19 09:22:27 +02:00
Phillip Webb 4c3a0f09d7 Support parallel initialization of Testcontainers
Add support for a `spring.testcontainers.startup` property that can
be set to "sequential" or "parallel" to change how containers are
started.

Closes gh-37073
2023-10-14 23:58:25 -07:00
Phillip Webb e01e4f1912 Search implemented interfaces on superclass for @ServiceConnection
Refine original fix to also search interfaces on the superclass.

Fixes gh-37671
2023-10-14 19:43:41 -07:00
Johnny Lim 446677375e Polish gh-35082
See gh-37831
2023-10-12 14:17:02 +02:00