This is an automated email from the ASF dual-hosted git repository.
epugh pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr-mcp.git
The following commit(s) were added to refs/heads/main by this push:
new ef1bac0 test: make Solr version configurable for compatibility
testing (#50)
ef1bac0 is described below
commit ef1bac053e3cf9a35a275852cf616411ce2681dc
Author: Aditya Parikh <[email protected]>
AuthorDate: Sat Feb 21 16:11:49 2026 -0500
test: make Solr version configurable for compatibility testing (#50)
---
AGENTS.md | 21 +++++++++++++++++++++
build.gradle.kts | 2 ++
.../mcp/server/TestcontainersConfiguration.java | 3 ++-
.../DockerImageHttpIntegrationTest.java | 2 +-
.../DockerImageStdioIntegrationTest.java | 2 +-
5 files changed, 27 insertions(+), 3 deletions(-)
diff --git a/AGENTS.md b/AGENTS.md
index 9e2499e..57dd384 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -73,6 +73,27 @@ Spring Boot Buildpacks output logs to stdout, breaking MCP's
STDIO protocol. Jib
- **Integration tests** (`*IntegrationTest.java`, `*DirectTest.java`): Real
Solr via Testcontainers
- **Docker tests** (`containerization/`): Tagged `@Tag("docker-integration")`,
run separately
+### Solr Version Compatibility Testing
+
+The Solr Docker image used in tests is configurable via the `solr.test.image`
system property (default: `solr:9.9-slim`):
+
+```bash
+./gradlew test -Dsolr.test.image=solr:8.11-slim # Solr 8.11
+./gradlew test -Dsolr.test.image=solr:9.4-slim # Solr 9.4
+./gradlew test -Dsolr.test.image=solr:9.9-slim # Solr 9.9 (default)
+```
+
+**Tested compatible versions:** 8.11, 9.4, 9.9
+
+### Solr 10 Compatibility Notes
+
+Solr 10 introduces breaking changes that will require updates to this project:
+
+- **MBeans removal:** `SolrInfoMBeanHandler` is removed.
`CollectionService.getCollectionStats()` uses `/admin/mbeans` for cache and
handler metrics — this will need to migrate to the `/admin/metrics` endpoint or
OpenTelemetry.
+- **Metrics migration:** Dropwizard metrics replaced by OpenTelemetry. All
metric names switch to snake_case. JMX, Prometheus exporter, SLF4J, and
Graphite reporters are removed.
+- **SolrJ base URL:** SolrClient now only accepts root URLs (e.g.,
`http://host:8983/solr`). This project already uses root URLs with per-request
collection names, so **no change needed** here.
+- **SolrJ dependency:** Upgrade `solr-solrj` from 9.x to 10.x in
`gradle/libs.versions.toml`. The Jetty BOM alignment (`jetty = "10.0.22"`) will
also need updating since Solr 10 uses Jetty 12.x.
+
## Key Configuration
Environment variables:
diff --git a/build.gradle.kts b/build.gradle.kts
index 8f2b971..496f8cc 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -153,6 +153,8 @@ tasks.withType<Test> {
excludeTags("docker-integration")
}
}
+ // Forward solr.test.image system property to test JVMs for Solr version
compatibility testing
+ systemProperty("solr.test.image", System.getProperty("solr.test.image",
"solr:9.9-slim"))
if (name != "dockerIntegrationTest") {
finalizedBy(tasks.jacocoTestReport)
}
diff --git
a/src/test/java/org/apache/solr/mcp/server/TestcontainersConfiguration.java
b/src/test/java/org/apache/solr/mcp/server/TestcontainersConfiguration.java
index d841108..0a0f91d 100644
--- a/src/test/java/org/apache/solr/mcp/server/TestcontainersConfiguration.java
+++ b/src/test/java/org/apache/solr/mcp/server/TestcontainersConfiguration.java
@@ -29,7 +29,8 @@ public class TestcontainersConfiguration {
@Bean
SolrContainer solr() {
- return new
SolrContainer(DockerImageName.parse("solr:9.9-slim"));
+ String solrImage = System.getProperty("solr.test.image");
+ return new SolrContainer(DockerImageName.parse(solrImage));
}
@Bean
diff --git
a/src/test/java/org/apache/solr/mcp/server/containerization/DockerImageHttpIntegrationTest.java
b/src/test/java/org/apache/solr/mcp/server/containerization/DockerImageHttpIntegrationTest.java
index 45863c6..224f53d 100644
---
a/src/test/java/org/apache/solr/mcp/server/containerization/DockerImageHttpIntegrationTest.java
+++
b/src/test/java/org/apache/solr/mcp/server/containerization/DockerImageHttpIntegrationTest.java
@@ -95,7 +95,7 @@ class DockerImageHttpIntegrationTest {
// Docker image name and tag from build-info.properties
private static final String DOCKER_IMAGE =
BuildInfoReader.getDockerImageName();
- private static final String SOLR_IMAGE = "solr:9.9-slim";
+ private static final String SOLR_IMAGE =
System.getProperty("solr.test.image");
private static final int HTTP_PORT = 8080;
// Network for container communication
diff --git
a/src/test/java/org/apache/solr/mcp/server/containerization/DockerImageStdioIntegrationTest.java
b/src/test/java/org/apache/solr/mcp/server/containerization/DockerImageStdioIntegrationTest.java
index 96a8a6a..26e6a27 100644
---
a/src/test/java/org/apache/solr/mcp/server/containerization/DockerImageStdioIntegrationTest.java
+++
b/src/test/java/org/apache/solr/mcp/server/containerization/DockerImageStdioIntegrationTest.java
@@ -85,7 +85,7 @@ class DockerImageStdioIntegrationTest {
// Docker image name and tag from build-info.properties
private static final String DOCKER_IMAGE =
BuildInfoReader.getDockerImageName();
- private static final String SOLR_IMAGE = "solr:9.9-slim";
+ private static final String SOLR_IMAGE =
System.getProperty("solr.test.image");
// Network for container communication
private static final Network network = Network.newNetwork();