Open carlspring opened 4 years ago
I have some implementation idea to proceed with that task.
testEnvironment
.mvn clean install -Pintegration-tests -DtestEnvironment={value}
.value
property can be MIN_IO and AMAZON_S3.IntegrationTestBase
class which will have @BeforeAll
method annotated to run testcontainers if testEnvironment
property is MIN_IO.@carlspring @steve-todorov What are your thoughts about this solution?
Hi @mslowiak ,
I don't think the idea with the property would be the best one. We should use Maven profiles for this instead. You might want to run just the MinIO tests locally while you're developing something, but then again, when things are executed on the CI server, both profiles would be enabled.
Also, @steve-todorov is working on #184, which would be somewhat related, so feel free to have a look at it.
@mslowiak I've done something similar as part of #183 (PR-184). I've created two profiles it-s3
for s3
integration tests and it-minio
for minio ones. If you use -Pit-s3
it can pick up S3FS_*
env variables so you can run this in a container. Same goes for -Pit-minio
which picks up S3FS_MINIO_*
ones. Tests tagged with @MinioIntegrationTest
or @S3IntegrationTest
will be executed using the appropriate credentials. :)
I haven't looked into test containers that much, but maybe we could use a singleton instance which starts at the very beginning and we just expose those credentials as env variables?
Task Description
We should consider setting up our tests to use
testcontainers
.Tasks
The following tasks will need to be carried out:
testcontainers
and Amazon.~ - We'll be using JUnit Tags for now (see #183)testcontainers
so it starts the container and tests when-Pit-minio
is used.testcontainer
and use it in@MinioIntegrationTest
with@ExtendWith
in tests that can run against MinIO. An exampe of how to do this can be found here.URI
when creating the filesystem depending on therunning.it
property (i.e. for S3s3://s3.amazonaws.com/
ands3://localhost:9000/
for MinIO). Perhaps it would be a good idea to add this into theBaseIntegrationTest
as a method which generates the appropriate URI for you.testcontainers
via@MinioIntegrationTest
where this is possible. Some integration tests can be ran against S3 and MinIO since the APIs are compatible. If that is possible, then the test can be annotated with both@S3IntegrationTest
and@MinioIntegrationTest
.Task Relationships
This task:
Help