modelcontextprotocol / modelcontextprotocol/java-sdk
Support running test cases in offline environments
まだ誰も着手していません。
- 主要言語
- Java
- スター
- 3.7k
- フォーク
- 1.1k
- 平均マージ
- 1日 15時間
- マージ済み PR(30日)
- 9
説明
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
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
AbstractStatelessIntegrationTest.java の testToolCallSuccess から始め、外部 HTTP エンドポイントに関する mcp-test と src/test 配下の関連テストを確認します。必要な Docker イメージが利用可能になった後、-o を付けて Maven のテストライフサイクルを実行します。オフライン環境で外部エンドポイントに接続せずにテストスイートが成功すれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- docker, java
- 領域
- build-system, testing-qa
- issue の種類
- 機能追加
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 48/100