modelcontextprotocol / modelcontextprotocol/java-sdk

Support running test cases in offline environments

オープン
#636 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

enhancement P3 tests
主要言語
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 -o option 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 main branch
  • JDK: 21
  • OS: Linux

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. 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

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。