Skip to content

test(mcp): Support task integration tests#3185

Merged
hengyunabc merged 7 commits intoalibaba:masterfrom
Yeaury:fix/mcp-task-integration
May 8, 2026
Merged

test(mcp): Support task integration tests#3185
hengyunabc merged 7 commits intoalibaba:masterfrom
Yeaury:fix/mcp-task-integration

Conversation

@Yeaury
Copy link
Copy Markdown
Contributor

@Yeaury Yeaury commented May 1, 2026

变更说明

本 PR 为 arthas-mcp-integration-test 增加 MCP task 能力的集成测试覆盖,并补充用于稳定并发场景的目标 JVM 方法。

涉及文件:

  • arthas-mcp-integration-test/src/test/java/com/taobao/arthas/mcp/it/task/ArthasMcpTasksIT.java
  • arthas-mcp-integration-test/src/test/java/com/taobao/arthas/mcp/it/task/ArthasMcpTasksConcurrencyIT.java
  • arthas-mcp-integration-test/src/test/java/com/taobao/arthas/mcp/it/task/ArthasMcpTaskTestSupport.java
  • arthas-mcp-integration-test/src/test/java/com/taobao/arthas/mcp/it/TargetJvmApp.java

主要内容

1. 新增基础 task 集成测试

新增 ArthasMcpTasksIT,覆盖以下主链路:

  • initialize 返回 task capabilities
  • tools/list 中 task-aware tools 的 taskSupport=OPTIONAL
  • tools/call 带 task metadata 创建 task
  • tasks/list
  • tasks/get
  • tasks/result
  • tasks/cancel
  • task TTL 过期后的 tasks/get / tasks/result 行为

2. 新增并发 task 集成测试

新增 ArthasMcpTasksConcurrencyIT,验证多个 task-aware 命令并发执行。

当前并发测试不是简单地同时发 3 个 watch 到同一个方法,而是:

  • watch -> hotMethodA
  • trace -> hotMethodB
  • stack -> hotMethodC

避免把测试重点落在单一命令对同一目标方法的增强竞争上,使测试更聚焦 MCP task 并发执行能力本身。

3. 抽取共享测试支撑

新增 ArthasMcpTaskTestSupport,统一复用:

  • 目标 JVM 启动与 attach
  • 最小 MCP HTTP + SSE 客户端
  • task 创建、查询、结果获取、取消
  • 通用断言与等待逻辑
  • 多种 task-aware 命令参数构造

这样可以减少 task 测试文件之间的重复实现,后续扩展 task 用例也更方便。

4. 扩展 TargetJvmApp

修改 TargetJvmApp,新增:

  • hotMethodA
  • hotMethodB
  • hotMethodC

并在主循环中持续调用这些方法,为并发 task 集成测试提供稳定、可区分的目标方法。

Yeaury added 7 commits May 1, 2026 23:56
- add task ITs for capabilities, create/get/result and cancel
- add TTL expiration coverage for tasks/get and tasks/result
- add dedicated concurrency IT for multiple task-aware tools
- extract shared MCP task test support
- extend TargetJvmApp with multiple hot methods for stable concurrent testing
Body:
Reduce DEFAULT_MAX_CONCURRENT_TASK_SESSIONS from 10 to 5 to better
protect the target JVM from excessive concurrent instrumentation.
@hengyunabc hengyunabc merged commit c18caa6 into alibaba:master May 8, 2026
16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants