1
0

feat: 新增 ICMP/Ping checker,支持跨平台主机存活检测与延迟监控

实现 type: ping checker,通过 Bun.spawn 调用系统 ping 命令,自行实现跨平台
输出解析器(Linux/macOS/Windows 含中文 locale),支持 alive、丢包率、延迟、
耗时等 expect 断言,复用现有 checker 架构零外部依赖。

包含完整的类型定义、TypeBox schema、语义校验、命令构建、解析、断言、执行、
注册、配置加载测试,以及 probe-config.schema.json 更新和文档更新。

审查修复:提取 buildPingCommand 为独立纯函数并补充跨平台单测,补充
maxDurationMs/maxAvgLatencyMs 类型非法和空字符串 host 边界测试用例。

变更已归档,delta specs 已同步至 main specs。
This commit is contained in:
2026-05-18 10:45:17 +08:00
parent c51bc5a0d8
commit 550c427814
30 changed files with 1132 additions and 330 deletions

View File

@@ -83,6 +83,11 @@
]
}
}
},
"ping": {
"additionalProperties": false,
"type": "object",
"properties": {}
}
}
},
@@ -1142,6 +1147,107 @@
}
}
}
},
{
"additionalProperties": false,
"type": "object",
"required": [
"id",
"type",
"ping"
],
"properties": {
"description": {
"anyOf": [
{
"type": "null"
},
{
"maxLength": 500,
"type": "string"
}
]
},
"expect": {
"additionalProperties": false,
"type": "object",
"properties": {
"alive": {
"type": "boolean"
},
"maxAvgLatencyMs": {
"minimum": 0,
"type": "number"
},
"maxDurationMs": {
"minimum": 0,
"type": "number"
},
"maxMaxLatencyMs": {
"minimum": 0,
"type": "number"
},
"maxPacketLoss": {
"maximum": 100,
"minimum": 0,
"type": "number"
}
}
},
"group": {
"type": "string"
},
"id": {
"maxLength": 30,
"minLength": 1,
"type": "string"
},
"interval": {
"type": "string"
},
"name": {
"anyOf": [
{
"type": "null"
},
{
"maxLength": 30,
"minLength": 1,
"type": "string"
}
]
},
"timeout": {
"type": "string"
},
"type": {
"const": "ping",
"type": "string"
},
"ping": {
"additionalProperties": false,
"type": "object",
"required": [
"host"
],
"properties": {
"count": {
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"host": {
"minLength": 1,
"type": "string"
},
"packetSize": {
"maximum": 65500,
"minimum": 1,
"type": "integer"
}
}
}
}
}
]
}