This is an automated email from the ASF dual-hosted git repository.
epugh pushed a commit to branch branch_10x
in repository https://gitbox.apache.org/repos/asf/solr.git
The following commit(s) were added to refs/heads/branch_10x by this push:
new 5cb1f57fbc5 Update dependency
com.adobe.testing:s3mock-testsupport-common to v5 (#4596)
5cb1f57fbc5 is described below
commit 5cb1f57fbc558f21f63d6079f178d8b538acd170
Author: Solr Bot <[email protected]>
AuthorDate: Tue Aug 25 13:35:15 2026 +0200
Update dependency com.adobe.testing:s3mock-testsupport-common to v5 (#4596)
Updates Solr’s s3-repository test dependency on Adobe S3Mock to the 5.x
line, which removes the prior JUnit4/embedded-server approach and instead runs
S3Mock via Testcontainers. The PR adapts the module’s tests, documentation, and
dependency metadata accordingly.
Co-authored-by: Eric Pugh <[email protected]>
(cherry picked from commit fc5be874ef1c4b62f92927564a80029309c8ba11)
---
...com-adobe-testing-s3mock-testsupport-common.yml | 7 ++
gradle/libs.versions.toml | 5 +-
solr/licenses/aws-crt-0.45.1.jar.sha1 | 1 -
solr/licenses/aws-crt-client-2.42.37.jar.sha1 | 1 -
solr/licenses/aws-java-sdk-core-1.12.794.jar.sha1 | 1 -
solr/licenses/aws-java-sdk-kms-1.12.794.jar.sha1 | 1 -
solr/licenses/aws-java-sdk-s3-1.12.794.jar.sha1 | 1 -
.../licenses/jackson-datatype-jdk8-2.22.0.jar.sha1 | 1 -
.../jackson-module-parameter-names-2.22.0.jar.sha1 | 1 -
solr/licenses/jmespath-java-1.12.794.jar.sha1 | 1 -
solr/licenses/joda-time-2.14.2.jar.sha1 | 1 -
solr/licenses/kotlin-stdlib-2.3.21.jar.sha1 | 1 +
solr/licenses/micrometer-commons-1.14.13.jar.sha1 | 1 -
.../micrometer-observation-1.14.13.jar.sha1 | 1 -
solr/licenses/s3mock-4.12.4.jar.sha1 | 1 -
solr/licenses/s3mock-junit4-4.12.4.jar.sha1 | 1 -
solr/licenses/s3mock-testcontainers-5.1.0.jar.sha1 | 1 +
.../s3mock-testsupport-common-4.12.4.jar.sha1 | 1 -
solr/licenses/snakeyaml-2.4.jar.sha1 | 1 -
solr/licenses/spring-aop-6.2.14.jar.sha1 | 1 -
solr/licenses/spring-beans-6.2.14.jar.sha1 | 1 -
solr/licenses/spring-boot-3.5.8.jar.sha1 | 1 -
.../spring-boot-autoconfigure-3.5.8.jar.sha1 | 1 -
solr/licenses/spring-boot-starter-3.5.8.jar.sha1 | 1 -
.../spring-boot-starter-json-3.5.8.jar.sha1 | 1 -
.../spring-boot-starter-logging-3.5.8.jar.sha1 | 1 -
.../spring-boot-starter-tomcat-3.5.8.jar.sha1 | 1 -
.../spring-boot-starter-web-3.5.8.jar.sha1 | 1 -
solr/licenses/spring-context-6.2.14.jar.sha1 | 1 -
solr/licenses/spring-core-6.2.14.jar.sha1 | 1 -
solr/licenses/spring-expression-6.2.14.jar.sha1 | 1 -
solr/licenses/spring-jcl-6.2.14.jar.sha1 | 1 -
solr/licenses/spring-web-6.2.14.jar.sha1 | 1 -
solr/licenses/spring-webmvc-6.2.14.jar.sha1 | 1 -
solr/licenses/tomcat-embed-core-10.1.49.jar.sha1 | 1 -
solr/licenses/tomcat-embed-el-10.1.49.jar.sha1 | 1 -
.../tomcat-embed-websocket-10.1.49.jar.sha1 | 1 -
.../url-connection-client-2.42.37.jar.sha1 | 1 -
solr/modules/s3-repository/README.md | 2 +-
solr/modules/s3-repository/build.gradle | 34 +------
solr/modules/s3-repository/gradle.lockfile | 101 ++++++++-------------
.../org/apache/solr/s3/AbstractS3ClientTest.java | 16 +++-
.../org/apache/solr/s3/S3BackupRepositoryTest.java | 20 ++--
.../apache/solr/s3/S3IncrementalBackupTest.java | 16 +++-
.../org/apache/solr/s3/S3InstallShardTest.java | 18 ++--
.../org/apache/solr/s3/S3MockContainerRule.java | 95 +++++++++++++++++++
.../solr/s3/S3MockTestcontainersThreadFilter.java | 33 +++++++
.../org/apache/solr/s3/S3OutputStreamTest.java | 15 ++-
48 files changed, 235 insertions(+), 163 deletions(-)
diff --git
a/changelog/unreleased/PR#4596-update-com-adobe-testing-s3mock-testsupport-common.yml
b/changelog/unreleased/PR#4596-update-com-adobe-testing-s3mock-testsupport-common.yml
new file mode 100644
index 00000000000..77e41830df6
--- /dev/null
+++
b/changelog/unreleased/PR#4596-update-com-adobe-testing-s3mock-testsupport-common.yml
@@ -0,0 +1,7 @@
+title: Update com.adobe.testing:s3mock-testsupport-common to v5
+type: dependency_update
+authors:
+- name: solrbot
+links:
+- name: PR#4596
+ url: https://github.com/apache/solr/pull/4596
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index cebee1467f8..8301bb2bb69 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -13,7 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
[versions]
-adobe-testing-s3mock = "4.12.4"
+adobe-testing-s3mock = "5.1.0"
amazon-awssdk = "2.42.37"
androidx-adaptive = "1.3.0-alpha07"
androidx-lifecycle = "2.10.0"
@@ -221,8 +221,7 @@ swagger3-core = { id =
"io.swagger.core.v3.swagger-gradle-plugin", version.ref =
thetaphi-forbiddenapis = { id = "de.thetaphi.forbiddenapis", version.ref =
"thetaphi-forbiddenapis" }
[libraries]
-adobe-testing-s3mock-junit4 = { module = "com.adobe.testing:s3mock-junit4",
version.ref = "adobe-testing-s3mock" }
-adobe-testing-s3mock-testsupportcommon = { module =
"com.adobe.testing:s3mock-testsupport-common", version.ref =
"adobe-testing-s3mock" }
+adobe-testing-s3mock-testcontainers = { module =
"com.adobe.testing:s3mock-testcontainers", version.ref = "adobe-testing-s3mock"
}
amazon-awssdk-apacheclient = { module =
"software.amazon.awssdk:apache-client", version.ref = "amazon-awssdk" }
amazon-awssdk-auth = { module = "software.amazon.awssdk:auth", version.ref =
"amazon-awssdk" }
amazon-awssdk-awscore = { module = "software.amazon.awssdk:aws-core",
version.ref = "amazon-awssdk" }
diff --git a/solr/licenses/aws-crt-0.45.1.jar.sha1
b/solr/licenses/aws-crt-0.45.1.jar.sha1
deleted file mode 100644
index 15decfc5028..00000000000
--- a/solr/licenses/aws-crt-0.45.1.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-8bc83c38dc07d6762aa35753c9c0f7f959b0e85c
diff --git a/solr/licenses/aws-crt-client-2.42.37.jar.sha1
b/solr/licenses/aws-crt-client-2.42.37.jar.sha1
deleted file mode 100644
index cca3601b605..00000000000
--- a/solr/licenses/aws-crt-client-2.42.37.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-878585e8678fe4dfce4d0608be99fd0c9c25a240
diff --git a/solr/licenses/aws-java-sdk-core-1.12.794.jar.sha1
b/solr/licenses/aws-java-sdk-core-1.12.794.jar.sha1
deleted file mode 100644
index 052602eb6bf..00000000000
--- a/solr/licenses/aws-java-sdk-core-1.12.794.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-9c6cc73ccf8a043f83e41272c1d3dde61ace274c
diff --git a/solr/licenses/aws-java-sdk-kms-1.12.794.jar.sha1
b/solr/licenses/aws-java-sdk-kms-1.12.794.jar.sha1
deleted file mode 100644
index 867595330d1..00000000000
--- a/solr/licenses/aws-java-sdk-kms-1.12.794.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-f62bca2da988f3b58e13b980f5d5af135f61b091
diff --git a/solr/licenses/aws-java-sdk-s3-1.12.794.jar.sha1
b/solr/licenses/aws-java-sdk-s3-1.12.794.jar.sha1
deleted file mode 100644
index 0fd93feb5d4..00000000000
--- a/solr/licenses/aws-java-sdk-s3-1.12.794.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-a5b815e823ab29e5bac3dd4fc2340a275af61f2d
diff --git a/solr/licenses/jackson-datatype-jdk8-2.22.0.jar.sha1
b/solr/licenses/jackson-datatype-jdk8-2.22.0.jar.sha1
deleted file mode 100644
index 8262c0b49f4..00000000000
--- a/solr/licenses/jackson-datatype-jdk8-2.22.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-5eaa676681bbb4a4036c097d13cb50835f513212
diff --git a/solr/licenses/jackson-module-parameter-names-2.22.0.jar.sha1
b/solr/licenses/jackson-module-parameter-names-2.22.0.jar.sha1
deleted file mode 100644
index dd896bd834a..00000000000
--- a/solr/licenses/jackson-module-parameter-names-2.22.0.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-8bf5fd8adffde5ee34638be4f3fc69153cf74958
diff --git a/solr/licenses/jmespath-java-1.12.794.jar.sha1
b/solr/licenses/jmespath-java-1.12.794.jar.sha1
deleted file mode 100644
index a26cd9733d3..00000000000
--- a/solr/licenses/jmespath-java-1.12.794.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-3a3000c9e9ea0a372c438d7cf18d72faf037abed
diff --git a/solr/licenses/joda-time-2.14.2.jar.sha1
b/solr/licenses/joda-time-2.14.2.jar.sha1
deleted file mode 100644
index 33c00443e88..00000000000
--- a/solr/licenses/joda-time-2.14.2.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-3860f88b96c286330a895f65ba126f09a0b33bba
diff --git a/solr/licenses/kotlin-stdlib-2.3.21.jar.sha1
b/solr/licenses/kotlin-stdlib-2.3.21.jar.sha1
new file mode 100644
index 00000000000..624ff9a6e75
--- /dev/null
+++ b/solr/licenses/kotlin-stdlib-2.3.21.jar.sha1
@@ -0,0 +1 @@
+a2ee2c4e220fee522f0451b723bab2a43f3481a7
diff --git a/solr/licenses/micrometer-commons-1.14.13.jar.sha1
b/solr/licenses/micrometer-commons-1.14.13.jar.sha1
deleted file mode 100644
index e442c66ddb8..00000000000
--- a/solr/licenses/micrometer-commons-1.14.13.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-27570cdb63946dc2e95a0de5b75cd0bc9943a210
diff --git a/solr/licenses/micrometer-observation-1.14.13.jar.sha1
b/solr/licenses/micrometer-observation-1.14.13.jar.sha1
deleted file mode 100644
index 69164a4c286..00000000000
--- a/solr/licenses/micrometer-observation-1.14.13.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-b9414791188efbfd823886047d0e6c3d20b2cd8d
diff --git a/solr/licenses/s3mock-4.12.4.jar.sha1
b/solr/licenses/s3mock-4.12.4.jar.sha1
deleted file mode 100644
index 24a91521648..00000000000
--- a/solr/licenses/s3mock-4.12.4.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-92d7e1b5f8398b18d585ddae4ee2f5ef3bc53342
diff --git a/solr/licenses/s3mock-junit4-4.12.4.jar.sha1
b/solr/licenses/s3mock-junit4-4.12.4.jar.sha1
deleted file mode 100644
index 0e27eab225d..00000000000
--- a/solr/licenses/s3mock-junit4-4.12.4.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-7ccdf31e3db85f4228b6a076324573d452675800
diff --git a/solr/licenses/s3mock-testcontainers-5.1.0.jar.sha1
b/solr/licenses/s3mock-testcontainers-5.1.0.jar.sha1
new file mode 100644
index 00000000000..fd6b264bba0
--- /dev/null
+++ b/solr/licenses/s3mock-testcontainers-5.1.0.jar.sha1
@@ -0,0 +1 @@
+fa4251cd48d49ba09076aac96cf4858e43622895
diff --git a/solr/licenses/s3mock-testsupport-common-4.12.4.jar.sha1
b/solr/licenses/s3mock-testsupport-common-4.12.4.jar.sha1
deleted file mode 100644
index d233465edc0..00000000000
--- a/solr/licenses/s3mock-testsupport-common-4.12.4.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-f96c0850fa5de07a15de2a9c6b9faae4db69e123
diff --git a/solr/licenses/snakeyaml-2.4.jar.sha1
b/solr/licenses/snakeyaml-2.4.jar.sha1
deleted file mode 100644
index 8739f8c1762..00000000000
--- a/solr/licenses/snakeyaml-2.4.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-e0666b825b796f85521f02360e77f4c92c5a7a07
diff --git a/solr/licenses/spring-aop-6.2.14.jar.sha1
b/solr/licenses/spring-aop-6.2.14.jar.sha1
deleted file mode 100644
index 368f3398445..00000000000
--- a/solr/licenses/spring-aop-6.2.14.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-9928bf6218013fc04292bd2bb37a0099d7582e97
diff --git a/solr/licenses/spring-beans-6.2.14.jar.sha1
b/solr/licenses/spring-beans-6.2.14.jar.sha1
deleted file mode 100644
index 52013b69cc9..00000000000
--- a/solr/licenses/spring-beans-6.2.14.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-7c3cc4477ba26f863848111a21e28886cadaccd9
diff --git a/solr/licenses/spring-boot-3.5.8.jar.sha1
b/solr/licenses/spring-boot-3.5.8.jar.sha1
deleted file mode 100644
index bcbea4a1bb6..00000000000
--- a/solr/licenses/spring-boot-3.5.8.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-449b94d19de085ffb767c7e4b6e888e754a059b5
diff --git a/solr/licenses/spring-boot-autoconfigure-3.5.8.jar.sha1
b/solr/licenses/spring-boot-autoconfigure-3.5.8.jar.sha1
deleted file mode 100644
index e27a4ad25cc..00000000000
--- a/solr/licenses/spring-boot-autoconfigure-3.5.8.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-313f6befb3e1e87b06703c087b6589ce15fd9ef7
diff --git a/solr/licenses/spring-boot-starter-3.5.8.jar.sha1
b/solr/licenses/spring-boot-starter-3.5.8.jar.sha1
deleted file mode 100644
index 566e8d97b51..00000000000
--- a/solr/licenses/spring-boot-starter-3.5.8.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-757ed1793f8c7d560cc837359f5816a1f495a087
diff --git a/solr/licenses/spring-boot-starter-json-3.5.8.jar.sha1
b/solr/licenses/spring-boot-starter-json-3.5.8.jar.sha1
deleted file mode 100644
index d3f8495a25a..00000000000
--- a/solr/licenses/spring-boot-starter-json-3.5.8.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-9ab24564f45685c64e90bbf228402fec824c157d
diff --git a/solr/licenses/spring-boot-starter-logging-3.5.8.jar.sha1
b/solr/licenses/spring-boot-starter-logging-3.5.8.jar.sha1
deleted file mode 100644
index a4ffa258c35..00000000000
--- a/solr/licenses/spring-boot-starter-logging-3.5.8.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-86b7491d89ee273db4dfb6a162dd612be4710a6b
diff --git a/solr/licenses/spring-boot-starter-tomcat-3.5.8.jar.sha1
b/solr/licenses/spring-boot-starter-tomcat-3.5.8.jar.sha1
deleted file mode 100644
index d9404adad7d..00000000000
--- a/solr/licenses/spring-boot-starter-tomcat-3.5.8.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-91f0e20dc5ae0a5cc01153fedd0ed6375358fcfb
diff --git a/solr/licenses/spring-boot-starter-web-3.5.8.jar.sha1
b/solr/licenses/spring-boot-starter-web-3.5.8.jar.sha1
deleted file mode 100644
index a7474d2ce99..00000000000
--- a/solr/licenses/spring-boot-starter-web-3.5.8.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-f4afb8ae01d775b91dbfa365012be55789d3e0de
diff --git a/solr/licenses/spring-context-6.2.14.jar.sha1
b/solr/licenses/spring-context-6.2.14.jar.sha1
deleted file mode 100644
index 9b58eb8555e..00000000000
--- a/solr/licenses/spring-context-6.2.14.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-68022d7abfd427ff31e95cac9b7c1832e92f43d8
diff --git a/solr/licenses/spring-core-6.2.14.jar.sha1
b/solr/licenses/spring-core-6.2.14.jar.sha1
deleted file mode 100644
index 0bac2aea3a9..00000000000
--- a/solr/licenses/spring-core-6.2.14.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-0f8096a2102dbd9b2e864e19276d36d79efb7f0f
diff --git a/solr/licenses/spring-expression-6.2.14.jar.sha1
b/solr/licenses/spring-expression-6.2.14.jar.sha1
deleted file mode 100644
index 057bf320ebb..00000000000
--- a/solr/licenses/spring-expression-6.2.14.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-4da9a87ad43d4e95a542b0ee3ed53308c535d7da
diff --git a/solr/licenses/spring-jcl-6.2.14.jar.sha1
b/solr/licenses/spring-jcl-6.2.14.jar.sha1
deleted file mode 100644
index 17dad14e1b5..00000000000
--- a/solr/licenses/spring-jcl-6.2.14.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-54e46d799759e21a4e32fdb5fe487c0330d4acb4
diff --git a/solr/licenses/spring-web-6.2.14.jar.sha1
b/solr/licenses/spring-web-6.2.14.jar.sha1
deleted file mode 100644
index c1acc13eee3..00000000000
--- a/solr/licenses/spring-web-6.2.14.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-e2d19ddcef801d93143b6337e62bfd53c1490fbf
diff --git a/solr/licenses/spring-webmvc-6.2.14.jar.sha1
b/solr/licenses/spring-webmvc-6.2.14.jar.sha1
deleted file mode 100644
index 1622e2178ad..00000000000
--- a/solr/licenses/spring-webmvc-6.2.14.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-c3f0f0651a4ffe212cbf8389e043a7c20450859c
diff --git a/solr/licenses/tomcat-embed-core-10.1.49.jar.sha1
b/solr/licenses/tomcat-embed-core-10.1.49.jar.sha1
deleted file mode 100644
index f96378ea84c..00000000000
--- a/solr/licenses/tomcat-embed-core-10.1.49.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-e307b4b4e7ef975f5358c01ed014c80b830f39f9
diff --git a/solr/licenses/tomcat-embed-el-10.1.49.jar.sha1
b/solr/licenses/tomcat-embed-el-10.1.49.jar.sha1
deleted file mode 100644
index 3a43658193c..00000000000
--- a/solr/licenses/tomcat-embed-el-10.1.49.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-2258d147a49331d34e36ea96abc7664b263f399e
diff --git a/solr/licenses/tomcat-embed-websocket-10.1.49.jar.sha1
b/solr/licenses/tomcat-embed-websocket-10.1.49.jar.sha1
deleted file mode 100644
index 031248ad77d..00000000000
--- a/solr/licenses/tomcat-embed-websocket-10.1.49.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-9e89b260c504cb6c3be5e56707ef55869a684ed3
diff --git a/solr/licenses/url-connection-client-2.42.37.jar.sha1
b/solr/licenses/url-connection-client-2.42.37.jar.sha1
deleted file mode 100644
index 6ac8dc316df..00000000000
--- a/solr/licenses/url-connection-client-2.42.37.jar.sha1
+++ /dev/null
@@ -1 +0,0 @@
-0d6dc3d6fdf3404e29321698c0c7ea4b0de2c90d
diff --git a/solr/modules/s3-repository/README.md
b/solr/modules/s3-repository/README.md
index 7d703071a98..2657da6357c 100644
--- a/solr/modules/s3-repository/README.md
+++ b/solr/modules/s3-repository/README.md
@@ -40,7 +40,7 @@ This plugin uses the [default AWS credentials provider
chain](https://docs.aws.a
To run / test locally, first spin up S3Mock:
mkdir /tmp/s3
- docker run -p 9090:9090 --env initialBuckets=TEST_BUCKET -v
/tmp/s3:/s3mockroot -t adobe/s3mock
+ docker run -p 9090:9090 --env
COM_ADOBE_TESTING_S3MOCK_STORE_INITIAL_BUCKETS=TEST_BUCKET -v
/tmp/s3:/s3mockroot -t adobe/s3mock:5.1.0
Add this to your `solr.xml`:
diff --git a/solr/modules/s3-repository/build.gradle
b/solr/modules/s3-repository/build.gradle
index da302c354d2..9828152e0ee 100644
--- a/solr/modules/s3-repository/build.gradle
+++ b/solr/modules/s3-repository/build.gradle
@@ -20,8 +20,10 @@ apply plugin: 'java-library'
description = 'S3 Repository'
ext {
- // S3Mock 4.x runs on embedded Tomcat, which is incompatible with the Java
SecurityManager
- // (Tomcat's PrivilegedSetAccessControlContext fails under an SM). Disable
it for these tests.
+ // S3Mock now runs as a Testcontainers-managed Docker container
(S3MockContainerRule), which
+ // does PATH scanning, spawns processes, and talks to the Docker daemon over
a Unix socket --
+ // none of which play well with a static SecurityManager policy. Same
rationale as
+ // solr:cross-dc-manager and solr:modules:extraction, Solr's other
Testcontainers consumers.
useSecurityManager = false
}
@@ -61,27 +63,10 @@ dependencies {
testImplementation libs.hamcrest.hamcrest
- testImplementation(libs.adobe.testing.s3mock.junit4) {
- transitive = false
- }
- testImplementation(libs.adobe.testing.s3mock.testsupportcommon) {
- // Don't pull in separate versions of these libs, just use what Solr
already has
- exclude group: 'org.apache.logging.log4j', module: 'log4j-to-slf4j'
- exclude group: 'ch.qos.logback', module: 'logback-classic'
- exclude group: 'org.eclipse.jetty', module: '*'
- exclude group: 'io.netty', module: '*'
- exclude group: 'commons-io', module: 'commons-io'
- exclude group: 'commons-codec', module: 'commons-codec'
- exclude group: 'org.apache.commons', module: 'commons-lang3'
- exclude group: 'software.amazon.awssdk', module: 'netty-nio-client'
- exclude group: 'org.codehaus.woodstox', module: 'stax2-api'
- exclude group: 'org.springframework.boot', module:
'spring-boot-actuator-autoconfigure'
- }
+ testImplementation libs.adobe.testing.s3mock.testcontainers
testImplementation libs.commonsio.commonsio
- testRuntimeOnly libs.eclipse.jetty.ee10.webapp
-
testImplementation(libs.mockito.core, {
exclude group: "net.bytebuddy", module: "byte-buddy-agent"
})
@@ -91,15 +76,6 @@ dependencies {
}
test {
- // S3Mock uses Spring Boot under the hood, which tries to do too much auto
configuration that we don't want
- environment "spring.autoconfigure.exclude",
- "org.springframework.boot.autoconfigure.solr.SolrAutoConfiguration"
- environment "spring.jmx.enabled", "false"
-
- // Without this, randomizedtesting will think our tests leak threads (b/c
S3Mock's Jetty hasn't bothered to clean up yet)
- environment "server.jetty.threads.idle-timeout", "1s"
-
- // Reduce logging noise during the tests
environment "aws.accessKeyId", "foo"
environment "aws.secretAccessKey", "bar"
}
diff --git a/solr/modules/s3-repository/gradle.lockfile
b/solr/modules/s3-repository/gradle.lockfile
index 40029fbddaa..fdd3a7c36ec 100644
--- a/solr/modules/s3-repository/gradle.lockfile
+++ b/solr/modules/s3-repository/gradle.lockfile
@@ -2,28 +2,21 @@
# Manual edits can break the build and are not advised.
# This file is expected to be part of source control.
# To regenerate this file, run: ./gradlew
:solr:modules:s3-repository:dependencies --write-locks
-com.adobe.testing:s3mock-junit4:4.12.4=jarValidation,testCompileClasspath,testRuntimeClasspath
-com.adobe.testing:s3mock-testsupport-common:4.12.4=jarValidation,testCompileClasspath,testRuntimeClasspath
-com.adobe.testing:s3mock:4.12.4=jarValidation,testCompileClasspath,testRuntimeClasspath
-com.amazonaws:aws-java-sdk-core:1.12.794=jarValidation,testCompileClasspath,testRuntimeClasspath
-com.amazonaws:aws-java-sdk-kms:1.12.794=jarValidation,testCompileClasspath,testRuntimeClasspath
-com.amazonaws:aws-java-sdk-s3:1.12.794=jarValidation,testCompileClasspath,testRuntimeClasspath
-com.amazonaws:jmespath-java:1.12.794=jarValidation,testCompileClasspath,testRuntimeClasspath
+com.adobe.testing:s3mock-testcontainers:5.1.0=jarValidation,testCompileClasspath,testRuntimeClasspath
com.carrotsearch.randomizedtesting:randomizedtesting-runner:2.9.1=jarValidation,testCompileClasspath,testRuntimeClasspath
com.carrotsearch:hppc:0.10.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
com.fasterxml.jackson.core:jackson-annotations:2.22=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-com.fasterxml.jackson.core:jackson-core:2.22.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-com.fasterxml.jackson.core:jackson-databind:2.22.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:2.22.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+com.fasterxml.jackson.core:jackson-core:2.22.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
+com.fasterxml.jackson.core:jackson-databind:2.22.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
+com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:2.22.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
com.fasterxml.jackson.dataformat:jackson-dataformat-smile:2.22.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
-com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.22.0=jarValidation,testCompileClasspath,testRuntimeClasspath
-com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.22.0=jarValidation,testCompileClasspath,testRuntimeClasspath
-com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.22.0=jarValidation,testCompileClasspath,testRuntimeClasspath
com.fasterxml.jackson.module:jackson-module-jakarta-xmlbind-annotations:2.22.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
-com.fasterxml.jackson.module:jackson-module-parameter-names:2.22.0=jarValidation,testCompileClasspath,testRuntimeClasspath
com.fasterxml.jackson:jackson-bom:2.22.0=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-com.fasterxml.woodstox:woodstox-core:7.2.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+com.fasterxml.woodstox:woodstox-core:7.2.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
com.github.ben-manes.caffeine:caffeine:3.2.4=annotationProcessor,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testRuntimeClasspath
+com.github.docker-java:docker-java-api:3.7.1=jarValidation,testCompileClasspath,testRuntimeClasspath
+com.github.docker-java:docker-java-transport-zerodep:3.7.1=jarValidation,testCompileClasspath,testRuntimeClasspath
+com.github.docker-java:docker-java-transport:3.7.1=jarValidation,testCompileClasspath,testRuntimeClasspath
com.github.kevinstern:software-and-algorithms:1.0=annotationProcessor,errorprone,testAnnotationProcessor
com.google.auto.service:auto-service-annotations:1.0.1=annotationProcessor,errorprone,testAnnotationProcessor
com.google.auto.value:auto-value-annotations:1.11.1=annotationProcessor,errorprone,testAnnotationProcessor
@@ -49,8 +42,6 @@
commons-io:commons-io:2.22.0=compileClasspath,jarValidation,runtimeClasspath,run
io.dropwizard.metrics:metrics-core:4.2.39=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
io.github.eisop:dataflow-errorprone:3.41.0-eisop1=annotationProcessor,errorprone,testAnnotationProcessor
io.github.java-diff-utils:java-diff-utils:4.12=annotationProcessor,errorprone,testAnnotationProcessor
-io.micrometer:micrometer-commons:1.14.13=jarValidation,testCompileClasspath,testRuntimeClasspath
-io.micrometer:micrometer-observation:1.14.13=jarValidation,testCompileClasspath,testRuntimeClasspath
io.netty:netty-buffer:4.2.17.Final=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
io.netty:netty-codec-base:4.2.17.Final=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
io.netty:netty-common:4.2.17.Final=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
@@ -83,19 +74,20 @@
io.prometheus:prometheus-metrics-model:1.8.0=jarValidation,runtimeClasspath,runt
io.sgr:s2-geometry-library-java:1.0.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
io.swagger.core.v3:swagger-annotations-jakarta:2.2.52=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
jakarta.activation:jakarta.activation-api:2.1.3=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
-jakarta.annotation:jakarta.annotation-api:3.0.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+jakarta.annotation:jakarta.annotation-api:3.0.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
jakarta.inject:jakarta.inject-api:2.0.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
jakarta.servlet:jakarta.servlet-api:6.1.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
jakarta.validation:jakarta.validation-api:3.1.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
jakarta.ws.rs:jakarta.ws.rs-api:4.0.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
jakarta.xml.bind:jakarta.xml.bind-api:4.0.2=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
javax.inject:javax.inject:1=annotationProcessor,errorprone,testAnnotationProcessor
-joda-time:joda-time:2.14.2=jarValidation,testCompileClasspath,testRuntimeClasspath
junit:junit:4.13.2=jarValidation,testCompileClasspath,testRuntimeClasspath
net.bytebuddy:byte-buddy:1.18.11=jarValidation,testCompileClasspath,testRuntimeClasspath
+net.java.dev.jna:jna:5.19.1=jarValidation,testCompileClasspath,testRuntimeClasspath
org.antlr:antlr4-runtime:4.13.2=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
+org.apache.commons:commons-compress:1.28.0=jarValidation,testCompileClasspath,testRuntimeClasspath
org.apache.commons:commons-exec:1.6.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
-org.apache.commons:commons-lang3:3.20.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
+org.apache.commons:commons-lang3:3.20.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
org.apache.commons:commons-math3:3.6.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
org.apache.curator:curator-client:5.9.0=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
org.apache.curator:curator-framework:5.9.0=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
@@ -130,34 +122,30 @@
org.apache.lucene:lucene-spatial-extras:10.4.0=jarValidation,runtimeClasspath,ru
org.apache.lucene:lucene-spatial3d:10.4.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
org.apache.lucene:lucene-suggest:10.4.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
org.apache.lucene:lucene-test-framework:10.4.0=jarValidation,testCompileClasspath,testRuntimeClasspath
-org.apache.tomcat.embed:tomcat-embed-core:10.1.49=jarValidation,testCompileClasspath,testRuntimeClasspath
-org.apache.tomcat.embed:tomcat-embed-el:10.1.49=jarValidation,testCompileClasspath,testRuntimeClasspath
-org.apache.tomcat.embed:tomcat-embed-websocket:10.1.49=jarValidation,testCompileClasspath,testRuntimeClasspath
org.apache.zookeeper:zookeeper-jute:3.9.5=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
org.apache.zookeeper:zookeeper:3.9.5=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
org.apiguardian:apiguardian-api:1.1.2=jarValidation,testRuntimeClasspath
org.codehaus.woodstox:stax2-api:4.3.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
-org.eclipse.jetty.ee10:jetty-ee10-servlet:12.0.34=jarValidation,testRuntimeClasspath
-org.eclipse.jetty.ee10:jetty-ee10-webapp:12.0.34=jarValidation,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-client-transport:12.0.34=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-client:12.0.34=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-common:12.0.34=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-hpack:12.0.34=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty.http2:jetty-http2-server:12.0.34=jarValidation,testRuntimeClasspath
-org.eclipse.jetty:jetty-alpn-client:12.0.34=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty:jetty-alpn-java-client:12.0.34=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
-org.eclipse.jetty:jetty-alpn-java-server:12.0.34=jarValidation,testRuntimeClasspath
-org.eclipse.jetty:jetty-alpn-server:12.0.34=jarValidation,testRuntimeClasspath
-org.eclipse.jetty:jetty-client:12.0.34=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
-org.eclipse.jetty:jetty-ee:12.0.34=jarValidation,testRuntimeClasspath
-org.eclipse.jetty:jetty-http:12.0.34=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty:jetty-io:12.0.34=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty:jetty-rewrite:12.0.34=jarValidation,testRuntimeClasspath
-org.eclipse.jetty:jetty-security:12.0.34=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
-org.eclipse.jetty:jetty-server:12.0.34=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
-org.eclipse.jetty:jetty-session:12.0.34=jarValidation,testRuntimeClasspath
-org.eclipse.jetty:jetty-util:12.0.34=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-org.eclipse.jetty:jetty-xml:12.0.34=jarValidation,testRuntimeClasspath
+org.eclipse.jetty.compression:jetty-compression-common:12.1.10=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
+org.eclipse.jetty.compression:jetty-compression-gzip:12.1.10=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
+org.eclipse.jetty.ee10:jetty-ee10-servlet:12.1.10=jarValidation,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-client-transport:12.1.10=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-client:12.1.10=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-common:12.1.10=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-hpack:12.1.10=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty.http2:jetty-http2-server:12.1.10=jarValidation,testRuntimeClasspath
+org.eclipse.jetty:jetty-alpn-client:12.1.10=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-alpn-java-client:12.1.10=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
+org.eclipse.jetty:jetty-alpn-java-server:12.1.10=jarValidation,testRuntimeClasspath
+org.eclipse.jetty:jetty-alpn-server:12.1.10=jarValidation,testRuntimeClasspath
+org.eclipse.jetty:jetty-client:12.1.10=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
+org.eclipse.jetty:jetty-http:12.1.10=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-io:12.1.10=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.eclipse.jetty:jetty-rewrite:12.1.10=jarValidation,testRuntimeClasspath
+org.eclipse.jetty:jetty-security:12.1.10=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
+org.eclipse.jetty:jetty-server:12.1.10=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
+org.eclipse.jetty:jetty-session:12.1.10=jarValidation,testRuntimeClasspath
+org.eclipse.jetty:jetty-util:12.1.10=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
org.glassfish.hk2.external:aopalliance-repackaged:4.0.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
org.glassfish.hk2:hk2-api:4.0.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
org.glassfish.hk2:hk2-locator:4.0.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
@@ -173,7 +161,7 @@
org.glassfish.jersey.media:jersey-media-json-jackson:4.0.2=jarValidation,runtime
org.glassfish.jersey:jersey-bom:4.0.2=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
org.hamcrest:hamcrest:3.0=jarValidation,testCompileClasspath,testRuntimeClasspath
org.javassist:javassist:3.30.2-GA=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
-org.jetbrains.kotlin:kotlin-stdlib:2.2.21=jarValidation,testCompileClasspath,testRuntimeClasspath
+org.jetbrains.kotlin:kotlin-stdlib:2.3.21=jarValidation,testCompileClasspath,testRuntimeClasspath
org.jetbrains:annotations:26.1.0=jarValidation,testCompileClasspath,testRuntimeClasspath
org.jspecify:jspecify:1.0.0=annotationProcessor,compileClasspath,errorprone,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath
org.junit.jupiter:junit-jupiter-api:5.6.2=jarValidation,testRuntimeClasspath
@@ -189,34 +177,18 @@
org.ow2.asm:asm-tree:9.10.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatf
org.ow2.asm:asm:9.10.1=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
org.pcollections:pcollections:4.0.1=annotationProcessor,errorprone,testAnnotationProcessor
org.reactivestreams:reactive-streams:1.0.4=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,testCompileClasspath,testRuntimeClasspath
+org.rnorth.duct-tape:duct-tape:1.0.8=jarValidation,testCompileClasspath,testRuntimeClasspath
org.semver4j:semver4j:6.0.0=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
org.slf4j:jcl-over-slf4j:2.0.18=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
-org.slf4j:jul-to-slf4j:2.0.18=jarValidation,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
+org.slf4j:jul-to-slf4j:2.0.18=solrPlatformLibs
org.slf4j:slf4j-api:2.0.18=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testCompileClasspath,testRuntimeClasspath
-org.springframework.boot:spring-boot-autoconfigure:3.5.8=jarValidation,testCompileClasspath,testRuntimeClasspath
-org.springframework.boot:spring-boot-starter-json:3.5.8=jarValidation,testCompileClasspath,testRuntimeClasspath
-org.springframework.boot:spring-boot-starter-logging:3.5.8=jarValidation,testCompileClasspath,testRuntimeClasspath
-org.springframework.boot:spring-boot-starter-tomcat:3.5.8=jarValidation,testCompileClasspath,testRuntimeClasspath
-org.springframework.boot:spring-boot-starter-web:3.5.8=jarValidation,testCompileClasspath,testRuntimeClasspath
-org.springframework.boot:spring-boot-starter:3.5.8=jarValidation,testCompileClasspath,testRuntimeClasspath
-org.springframework.boot:spring-boot:3.5.8=jarValidation,testCompileClasspath,testRuntimeClasspath
-org.springframework:spring-aop:6.2.14=jarValidation,testCompileClasspath,testRuntimeClasspath
-org.springframework:spring-beans:6.2.14=jarValidation,testCompileClasspath,testRuntimeClasspath
-org.springframework:spring-context:6.2.14=jarValidation,testCompileClasspath,testRuntimeClasspath
-org.springframework:spring-core:6.2.14=jarValidation,testCompileClasspath,testRuntimeClasspath
-org.springframework:spring-expression:6.2.14=jarValidation,testCompileClasspath,testRuntimeClasspath
-org.springframework:spring-jcl:6.2.14=jarValidation,testCompileClasspath,testRuntimeClasspath
-org.springframework:spring-web:6.2.14=jarValidation,testCompileClasspath,testRuntimeClasspath
-org.springframework:spring-webmvc:6.2.14=jarValidation,testCompileClasspath,testRuntimeClasspath
+org.testcontainers:testcontainers:2.0.5=jarValidation,testCompileClasspath,testRuntimeClasspath
org.xerial.snappy:snappy-java:1.1.10.8=jarValidation,runtimeClasspath,runtimeLibs,solrPlatformLibs,testRuntimeClasspath
-org.yaml:snakeyaml:2.4=jarValidation,testCompileClasspath,testRuntimeClasspath
-software.amazon.awssdk.crt:aws-crt:0.45.1=jarValidation,testCompileClasspath,testRuntimeClasspath
software.amazon.awssdk:annotations:2.42.37=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,testCompileClasspath,testRuntimeClasspath
software.amazon.awssdk:apache-client:2.42.37=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,testCompileClasspath,testRuntimeClasspath
software.amazon.awssdk:arns:2.42.37=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,testCompileClasspath,testRuntimeClasspath
software.amazon.awssdk:auth:2.42.37=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,testCompileClasspath,testRuntimeClasspath
software.amazon.awssdk:aws-core:2.42.37=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,testCompileClasspath,testRuntimeClasspath
-software.amazon.awssdk:aws-crt-client:2.42.37=jarValidation,testCompileClasspath,testRuntimeClasspath
software.amazon.awssdk:aws-query-protocol:2.42.37=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,testCompileClasspath,testRuntimeClasspath
software.amazon.awssdk:aws-xml-protocol:2.42.37=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,testCompileClasspath,testRuntimeClasspath
software.amazon.awssdk:bom:2.42.37=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,testCompileClasspath,testRuntimeClasspath
@@ -241,7 +213,6 @@
software.amazon.awssdk:s3:2.42.37=compileClasspath,jarValidation,runtimeClasspat
software.amazon.awssdk:sdk-core:2.42.37=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,testCompileClasspath,testRuntimeClasspath
software.amazon.awssdk:sts:2.42.37=jarValidation,runtimeClasspath,runtimeLibs,testRuntimeClasspath
software.amazon.awssdk:third-party-jackson-core:2.42.37=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,testCompileClasspath,testRuntimeClasspath
-software.amazon.awssdk:url-connection-client:2.42.37=jarValidation,testCompileClasspath,testRuntimeClasspath
software.amazon.awssdk:utils-lite:2.42.37=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,testCompileClasspath,testRuntimeClasspath
software.amazon.awssdk:utils:2.42.37=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,testCompileClasspath,testRuntimeClasspath
software.amazon.eventstream:eventstream:1.0.1=compileClasspath,jarValidation,runtimeClasspath,runtimeLibs,testCompileClasspath,testRuntimeClasspath
diff --git
a/solr/modules/s3-repository/src/test/org/apache/solr/s3/AbstractS3ClientTest.java
b/solr/modules/s3-repository/src/test/org/apache/solr/s3/AbstractS3ClientTest.java
index 242ab9b81e2..a68c16d0636 100644
---
a/solr/modules/s3-repository/src/test/org/apache/solr/s3/AbstractS3ClientTest.java
+++
b/solr/modules/s3-repository/src/test/org/apache/solr/s3/AbstractS3ClientTest.java
@@ -16,13 +16,15 @@
*/
package org.apache.solr.s3;
-import com.adobe.testing.s3mock.junit4.S3MockRule;
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URI;
import java.net.URISyntaxException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Path;
+import org.apache.lucene.tests.util.QuickPatchThreadsFilter;
+import org.apache.solr.SolrIgnoredThreadsFilter;
import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.util.SocketProxy;
import org.junit.After;
@@ -31,14 +33,18 @@ import org.junit.ClassRule;
import software.amazon.awssdk.profiles.ProfileFileSystemSetting;
/** Abstract class for test with S3Mock. */
+@ThreadLeakFilters(
+ filters = {
+ SolrIgnoredThreadsFilter.class,
+ QuickPatchThreadsFilter.class,
+ S3MockTestcontainersThreadFilter.class
+ })
public class AbstractS3ClientTest extends SolrTestCaseJ4 {
protected static final String BUCKET_NAME = "test-bucket";
@ClassRule
- @SuppressWarnings("removal")
- public static final S3MockRule S3_MOCK_RULE =
- S3MockRule.builder().silent().withInitialBuckets(BUCKET_NAME).build();
+ public static final S3MockContainerRule S3_MOCK_RULE = new
S3MockContainerRule(BUCKET_NAME);
S3StorageClient client;
private SocketProxy proxy;
@@ -52,7 +58,7 @@ public class AbstractS3ClientTest extends SolrTestCaseJ4 {
// We are using a proxy in front of S3Mock to be able to test connection
loss
proxy = new SocketProxy();
- proxy.open(URI.create("http://localhost:" + S3_MOCK_RULE.getHttpPort()));
+ proxy.open(URI.create(S3_MOCK_RULE.getHttpEndpoint()));
client =
new S3StorageClient(
BUCKET_NAME,
diff --git
a/solr/modules/s3-repository/src/test/org/apache/solr/s3/S3BackupRepositoryTest.java
b/solr/modules/s3-repository/src/test/org/apache/solr/s3/S3BackupRepositoryTest.java
index 96f89a35b44..e75f9bef733 100644
---
a/solr/modules/s3-repository/src/test/org/apache/solr/s3/S3BackupRepositoryTest.java
+++
b/solr/modules/s3-repository/src/test/org/apache/solr/s3/S3BackupRepositoryTest.java
@@ -18,7 +18,7 @@ package org.apache.solr.s3;
import static org.apache.solr.s3.S3BackupRepository.S3_SCHEME;
-import com.adobe.testing.s3mock.junit4.S3MockRule;
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
@@ -37,6 +37,8 @@ import org.apache.lucene.store.IOContext;
import org.apache.lucene.store.IndexInput;
import org.apache.lucene.store.IndexOutput;
import org.apache.lucene.store.OutputStreamIndexOutput;
+import org.apache.lucene.tests.util.QuickPatchThreadsFilter;
+import org.apache.solr.SolrIgnoredThreadsFilter;
import org.apache.solr.cloud.api.collections.AbstractBackupRepositoryTest;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.core.backup.repository.BackupRepository;
@@ -48,6 +50,12 @@ import software.amazon.awssdk.core.sync.ResponseTransformer;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3.S3Client;
+@ThreadLeakFilters(
+ filters = {
+ SolrIgnoredThreadsFilter.class,
+ QuickPatchThreadsFilter.class,
+ S3MockTestcontainersThreadFilter.class
+ })
public class S3BackupRepositoryTest extends AbstractBackupRepositoryTest {
private static final String BUCKET_NAME =
S3BackupRepositoryTest.class.getSimpleName();
@@ -55,13 +63,7 @@ public class S3BackupRepositoryTest extends
AbstractBackupRepositoryTest {
public Path temporaryFolder;
@ClassRule
- @SuppressWarnings("removal")
- public static final S3MockRule S3_MOCK_RULE =
- S3MockRule.builder()
- .silent()
- .withInitialBuckets(BUCKET_NAME)
- .withSecureConnection(false)
- .build();
+ public static final S3MockContainerRule S3_MOCK_RULE = new
S3MockContainerRule(BUCKET_NAME);
@Before
@Override
@@ -336,7 +338,7 @@ public class S3BackupRepositoryTest extends
AbstractBackupRepositoryTest {
NamedList<Object> args = new NamedList<>();
args.add(S3BackupRepositoryConfig.REGION, Region.US_EAST_1.id());
args.add(S3BackupRepositoryConfig.BUCKET_NAME, BUCKET_NAME);
- args.add(S3BackupRepositoryConfig.ENDPOINT, "http://localhost:" +
S3_MOCK_RULE.getHttpPort());
+ args.add(S3BackupRepositoryConfig.ENDPOINT,
S3_MOCK_RULE.getHttpEndpoint());
return args;
}
diff --git
a/solr/modules/s3-repository/src/test/org/apache/solr/s3/S3IncrementalBackupTest.java
b/solr/modules/s3-repository/src/test/org/apache/solr/s3/S3IncrementalBackupTest.java
index a0f1d1111a7..d2afd7e8119 100644
---
a/solr/modules/s3-repository/src/test/org/apache/solr/s3/S3IncrementalBackupTest.java
+++
b/solr/modules/s3-repository/src/test/org/apache/solr/s3/S3IncrementalBackupTest.java
@@ -17,10 +17,12 @@
package org.apache.solr.s3;
-import com.adobe.testing.s3mock.junit4.S3MockRule;
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
import java.lang.invoke.MethodHandles;
import org.apache.lucene.tests.util.LuceneTestCase;
+import org.apache.lucene.tests.util.QuickPatchThreadsFilter;
+import org.apache.solr.SolrIgnoredThreadsFilter;
import org.apache.solr.cloud.api.collections.AbstractIncrementalBackupTest;
import org.apache.solr.util.LogLevel;
import org.junit.BeforeClass;
@@ -33,6 +35,12 @@ import software.amazon.awssdk.regions.Region;
@LuceneTestCase.Nightly
@LuceneTestCase.SuppressCodecs({"SimpleText"})
@ThreadLeakLingering(linger = 10)
+@ThreadLeakFilters(
+ filters = {
+ SolrIgnoredThreadsFilter.class,
+ QuickPatchThreadsFilter.class,
+ S3MockTestcontainersThreadFilter.class
+ })
@LogLevel(
value =
"org.apache.solr.cloud=DEBUG;org.apache.solr.cloud.api.collections=DEBUG;org.apache.solr.cloud.overseer=DEBUG")
@@ -42,9 +50,7 @@ public class S3IncrementalBackupTest extends
AbstractIncrementalBackupTest {
private static final String BUCKET_NAME =
S3IncrementalBackupTest.class.getSimpleName();
@ClassRule
- @SuppressWarnings("removal")
- public static final S3MockRule S3_MOCK_RULE =
-
S3MockRule.builder().withInitialBuckets(BUCKET_NAME).withSecureConnection(false).build();
+ public static final S3MockContainerRule S3_MOCK_RULE = new
S3MockContainerRule(BUCKET_NAME);
public static final String SOLR_XML =
"<solr>\n"
@@ -128,7 +134,7 @@ public class S3IncrementalBackupTest extends
AbstractIncrementalBackupTest {
.replace("BAD_BUCKET", BUCKET_NAME)
.replace("BUCKET", BUCKET_NAME)
.replace("REGION", Region.US_EAST_1.id())
- .replace("ENDPOINT", "http://localhost:" +
S3_MOCK_RULE.getHttpPort()))
+ .replace("ENDPOINT", S3_MOCK_RULE.getHttpEndpoint()))
.configure();
}
diff --git
a/solr/modules/s3-repository/src/test/org/apache/solr/s3/S3InstallShardTest.java
b/solr/modules/s3-repository/src/test/org/apache/solr/s3/S3InstallShardTest.java
index c44e2170a39..b239ae4b660 100644
---
a/solr/modules/s3-repository/src/test/org/apache/solr/s3/S3InstallShardTest.java
+++
b/solr/modules/s3-repository/src/test/org/apache/solr/s3/S3InstallShardTest.java
@@ -17,9 +17,10 @@
package org.apache.solr.s3;
-import com.adobe.testing.s3mock.junit4.S3MockRule;
-import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering;
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
import org.apache.lucene.tests.util.LuceneTestCase;
+import org.apache.lucene.tests.util.QuickPatchThreadsFilter;
+import org.apache.solr.SolrIgnoredThreadsFilter;
import org.apache.solr.cloud.api.collections.AbstractIncrementalBackupTest;
import org.apache.solr.cloud.api.collections.AbstractInstallShardTest;
import org.apache.solr.handler.admin.api.InstallShardData;
@@ -35,7 +36,12 @@ import software.amazon.awssdk.regions.Region;
*/
// Backups do checksum validation against a footer value not present in
'SimpleText'
@LuceneTestCase.SuppressCodecs({"SimpleText"})
-@ThreadLeakLingering(linger = 10)
+@ThreadLeakFilters(
+ filters = {
+ SolrIgnoredThreadsFilter.class,
+ QuickPatchThreadsFilter.class,
+ S3MockTestcontainersThreadFilter.class
+ })
public class S3InstallShardTest extends AbstractInstallShardTest {
private static final String BUCKET_NAME =
S3InstallShardTest.class.getSimpleName();
@@ -61,9 +67,7 @@ public class S3InstallShardTest extends
AbstractInstallShardTest {
AbstractInstallShardTest.defaultSolrXmlTextWithBackupRepository(BACKUP_REPOSITORY_XML);
@ClassRule
- @SuppressWarnings("removal")
- public static final S3MockRule S3_MOCK_RULE =
-
S3MockRule.builder().withInitialBuckets(BUCKET_NAME).withSecureConnection(false).build();
+ public static final S3MockContainerRule S3_MOCK_RULE = new
S3MockContainerRule(BUCKET_NAME);
@BeforeClass
public static void setupClass() throws Exception {
@@ -78,7 +82,7 @@ public class S3InstallShardTest extends
AbstractInstallShardTest {
SOLR_XML
.replace("BUCKET", BUCKET_NAME)
.replace("REGION", Region.US_EAST_1.id())
- .replace("ENDPOINT", "http://localhost:" +
S3_MOCK_RULE.getHttpPort()))
+ .replace("ENDPOINT", S3_MOCK_RULE.getHttpEndpoint()))
.configure();
bootstrapBackupRepositoryData("/");
diff --git
a/solr/modules/s3-repository/src/test/org/apache/solr/s3/S3MockContainerRule.java
b/solr/modules/s3-repository/src/test/org/apache/solr/s3/S3MockContainerRule.java
new file mode 100644
index 00000000000..48eb7a84021
--- /dev/null
+++
b/solr/modules/s3-repository/src/test/org/apache/solr/s3/S3MockContainerRule.java
@@ -0,0 +1,95 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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
+ *
+ * http://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.apache.solr.s3;
+
+import com.adobe.testing.s3mock.testcontainers.S3MockContainer;
+import java.lang.invoke.MethodHandles;
+import java.net.URI;
+import org.junit.Assume;
+import org.junit.rules.ExternalResource;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.testcontainers.utility.DockerImageName;
+import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
+import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
+import software.amazon.awssdk.regions.Region;
+import software.amazon.awssdk.services.s3.S3Client;
+import software.amazon.awssdk.services.s3.S3Configuration;
+
+/**
+ * JUnit rule that manages a single S3Mock testcontainer. Declare as a {@code
@ClassRule} so the
+ * (expensive to start) mock server is shared across all {@code @Test} methods
in a class instead of
+ * being restarted for each one; JUnit starts it before, and stops it after,
the whole class runs.
+ *
+ * <p>Skips the calling test (via {@link Assume}) instead of failing outright
if
+ * Docker/Testcontainers isn't available in this environment.
+ */
+public class S3MockContainerRule extends ExternalResource {
+
+ private static final Logger log =
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+
+ public static final String S3MOCK_DOCKER_IMAGE = "adobe/s3mock:5.1.0";
+
+ private final String bucketName;
+
+ private S3MockContainer s3MockContainer;
+
+ public S3MockContainerRule(String bucketName) {
+ this.bucketName = bucketName;
+ }
+
+ @Override
+ protected void before() {
+ s3MockContainer =
+ new S3MockContainer(DockerImageName.parse(S3MOCK_DOCKER_IMAGE))
+ .withInitialBuckets(bucketName);
+ try {
+ s3MockContainer.start();
+ } catch (Throwable t) {
+ Assume.assumeNoException("Docker/Testcontainers not available; skipping
test", t);
+ }
+ }
+
+ @Override
+ protected void after() {
+ if (s3MockContainer != null) {
+ try {
+ s3MockContainer.stop();
+ } catch (Exception e) {
+ log.error("Exception stopping S3Mock container", e);
+ } finally {
+ s3MockContainer = null;
+ }
+ }
+ }
+
+ /** Full HTTP endpoint URL (including mapped host/port). */
+ public String getHttpEndpoint() {
+ return s3MockContainer.getHttpEndpoint();
+ }
+
+ public S3Client createS3ClientV2() {
+ return S3Client.builder()
+ .endpointOverride(URI.create(s3MockContainer.getHttpEndpoint()))
+ .region(Region.US_EAST_1)
+ .credentialsProvider(
+ StaticCredentialsProvider.create(AwsBasicCredentials.create("foo",
"bar")))
+
.serviceConfiguration(S3Configuration.builder().pathStyleAccessEnabled(true).build())
+ .build();
+ }
+}
diff --git
a/solr/modules/s3-repository/src/test/org/apache/solr/s3/S3MockTestcontainersThreadFilter.java
b/solr/modules/s3-repository/src/test/org/apache/solr/s3/S3MockTestcontainersThreadFilter.java
new file mode 100644
index 00000000000..f4cb503a80c
--- /dev/null
+++
b/solr/modules/s3-repository/src/test/org/apache/solr/s3/S3MockTestcontainersThreadFilter.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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
+ *
+ * http://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.apache.solr.s3;
+
+import com.carrotsearch.randomizedtesting.ThreadFilter;
+
+/** Ignore known non-daemon threads spawned by Testcontainers/S3Mock in these
tests. */
+public class S3MockTestcontainersThreadFilter implements ThreadFilter {
+ @Override
+ public boolean reject(Thread t) {
+ if (t == null || t.getName() == null) return false;
+ String n = t.getName();
+ return n.startsWith("testcontainers-ryuk")
+ || n.startsWith("testcontainers-wait-")
+ || n.startsWith("testcontainers-pull-watchdog")
+ || n.startsWith("ducttape-");
+ }
+}
diff --git
a/solr/modules/s3-repository/src/test/org/apache/solr/s3/S3OutputStreamTest.java
b/solr/modules/s3-repository/src/test/org/apache/solr/s3/S3OutputStreamTest.java
index dd829b69d20..f887c55cd0f 100644
---
a/solr/modules/s3-repository/src/test/org/apache/solr/s3/S3OutputStreamTest.java
+++
b/solr/modules/s3-repository/src/test/org/apache/solr/s3/S3OutputStreamTest.java
@@ -16,12 +16,14 @@
*/
package org.apache.solr.s3;
-import com.adobe.testing.s3mock.junit4.S3MockRule;
+import com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
import com.carrotsearch.randomizedtesting.generators.RandomStrings;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.time.Duration;
+import org.apache.lucene.tests.util.QuickPatchThreadsFilter;
+import org.apache.solr.SolrIgnoredThreadsFilter;
import org.apache.solr.SolrTestCaseJ4;
import org.junit.After;
import org.junit.Before;
@@ -30,14 +32,17 @@ import org.junit.Test;
import software.amazon.awssdk.core.sync.ResponseTransformer;
import software.amazon.awssdk.services.s3.S3Client;
+@ThreadLeakFilters(
+ filters = {
+ SolrIgnoredThreadsFilter.class,
+ QuickPatchThreadsFilter.class,
+ S3MockTestcontainersThreadFilter.class
+ })
public class S3OutputStreamTest extends SolrTestCaseJ4 {
private static final String BUCKET =
S3OutputStreamTest.class.getSimpleName();
- @ClassRule
- @SuppressWarnings("removal")
- public static final S3MockRule S3_MOCK_RULE =
-
S3MockRule.builder().silent().withInitialBuckets(BUCKET).withSecureConnection(false).build();
+ @ClassRule public static final S3MockContainerRule S3_MOCK_RULE = new
S3MockContainerRule(BUCKET);
private S3Client s3;