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();

Reply via email to