modelcontextprotocol / modelcontextprotocol/java-sdk
Support running test cases in offline environments
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Java
- Sterne
- 3.7k
- Forks
- 1.1k
- Ø Merge
- 1 T. 15 Std.
- Gemergte PRs (30 T.)
- 9
Beschreibung
Description:
Several test cases in mcp-test and other src/test rely on external HTTP endpoints, which cause test failures in offline CI/CD environments.
For example, test case testToolCallSuccess of AbstractStatelessIntegrationTest.java throws an AssertionError if a GET request to raw.githubusercontent.com/modelcontextprotocol/java-sdk/refs/heads/main/README.md has null or empty response.
Goal:
- Support running maven test lifecycle for offline environments.
- Specifically, all test cases shall pass when
-ooption is appended to mvn test command, provided that all required docker images have already been imported (the default container pull policy will allow this to work offline).
Proposed changes:
Instead of sending GET request using an HTTP client, use a mock client that reads README.md from local file.
HttpClient mockClient = mock(HttpClient.class);
HttpResponse<String> mockResponse = mock(HttpResponse.class);
// Relative path of README.md depending on project directory
when(mockResponse.body()).thenReturn(Files.readString(Path.of("../README.md").toAbsolutePath()));
when(mockResponse.statusCode()).thenReturn(200);
when(mockClient.send(any(HttpRequest.class), any(HttpResponse.BodyHandler.class))).thenReturn(mockResponse);
Environment:
- MCP Java SDK: current
mainbranch - JDK: 21
- OS: Linux
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne mit testToolCallSuccess in AbstractStatelessIntegrationTest.java und prüfe die zugehörigen Tests unter mcp-test und src/test auf externe HTTP-Endpunkte. Führe den Maven-Testlebenszyklus mit -o aus, nachdem die erforderlichen Docker-Images verfügbar sind. Erledigt ist die Aufgabe, wenn die Testsuite in einer Offline-Umgebung ohne Kontaktaufnahme mit externen Endpunkten erfolgreich durchläuft.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- docker, java
- Bereich
- build-system, testing-qa
- Issue-Typ
- Feature
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 48/100