1
0
Files
DiAL/openspec/changes/add-icmp-checker/tasks.md
lanyuanxiaoyao 393e8da5fd feat: 新增 ICMP/Ping checker 设计提案
- 定义 ping target 配置:host、count、packetSize
- 定义 ping expect 断言:alive、maxPacketLoss、maxAvgLatencyMs、maxMaxLatencyMs
- 设计跨平台 ping 输出解析器(Linux/macOS/Windows 含多语言支持)
- 双重超时保障:ping 命令自身超时 + AbortSignal 兜底
- 扩展 checker-runner-abstraction spec 支持 ping checker 子进程控制
- 更新 probe-config spec 支持 ping type 配置
2026-05-18 00:33:11 +08:00

2.5 KiB
Raw Blame History

1. 类型与 Schema 定义

  • 1.1 创建 src/server/checker/runner/icmp/types.ts,定义 PingTargetConfig、PingExpectConfig、ResolvedPingConfig、ResolvedPingTarget、PingStats 接口
  • 1.2 创建 src/server/checker/runner/icmp/schema.ts,定义 TypeBox schemaconfig、expect导出 icmpCheckerSchemas

2. 跨平台解析器

  • 2.1 创建 src/server/checker/runner/icmp/parse.ts,实现 parsePingOutput(stdout, platform) 函数,支持 Linux/macOS/Windows 三平台解析
  • 2.2 创建 tests/server/checker/runner/icmp/parse.test.ts,覆盖 Linux、macOS、Windows 英文、Windows 中文、全部丢包、无法解析等场景

3. 断言函数

  • 3.1 创建 src/server/checker/runner/icmp/expect.ts,实现 checkAlive、checkPacketLoss、checkAvgLatency、checkMaxLatency 函数
  • 3.2 创建 tests/server/checker/runner/icmp/expect.test.ts,覆盖各断言函数的通过和失败场景

4. 配置校验

  • 4.1 创建 src/server/checker/runner/icmp/validate.ts,实现 validatePingConfig 语义校验
  • 4.2 创建 tests/server/checker/runner/icmp/validate.test.ts,覆盖 host 缺失、count/packetSize 非法、未知字段等场景

5. Checker 主体实现

  • 5.1 创建 src/server/checker/runner/icmp/execute.ts,实现 IcmpChecker classexecute、resolve、serialize、validate
  • 5.2 创建 src/server/checker/runner/icmp/index.ts,导出 IcmpChecker
  • 5.3 在 src/server/checker/runner/index.ts 中 import IcmpChecker 并将 new IcmpChecker() 添加到 checkers 数组

6. 集成测试

  • 6.1 创建 tests/server/checker/runner/icmp/execute.test.ts,测试 IcmpChecker 的 execute 方法mock Bun.spawn
  • 6.2 更新 tests/server/checker/runner/registry.test.ts,验证 ping type 已注册
  • 6.3 更新 tests/server/checker/config-loader.test.ts,添加 ping target 配置解析和校验测试

7. Schema 导出与文档

  • 7.1 更新 probe-config.schema.json,包含 ping target 和 expect 的 schema 片段
  • 7.2 更新 probes.example.yaml,添加 ping checker 配置示例
  • 7.3 更新 README.md添加 ping checker 说明和系统依赖ping 命令)注明
  • 7.4 更新 DEVELOPMENT.md如有必要

8. 质量保障

  • 8.1 执行完整测试套件bun test确保所有测试通过
  • 8.2 执行代码检查lint和格式检查format确保无错误
  • 8.3 验证 probe-config.schema.json 与运行期 schema 一致(运行 schema 生成脚本)