将 type/configKey 从 "command" 统一为 "cmd",源码目录 runner/command/ → runner/cmd/, spec 目录 command-checker/ → cmd-checker/,测试全部改用 bun -e 替代 Unix 系统命令, 归档 cmd-checker-enhancement 变更并同步 delta spec 到主 spec。
235 lines
4.8 KiB
YAML
235 lines
4.8 KiB
YAML
server:
|
|
host: "127.0.0.1"
|
|
port: 3000
|
|
dataDir: "/tmp/probes_data"
|
|
|
|
runtime:
|
|
maxConcurrentChecks: 20
|
|
|
|
defaults:
|
|
interval: "30s"
|
|
timeout: "10s"
|
|
http:
|
|
method: GET
|
|
maxBodyBytes: "10MB"
|
|
cmd:
|
|
maxOutputBytes: "1MB"
|
|
|
|
targets:
|
|
# ========== HTTP targets ==========
|
|
|
|
- name: "Baidu 首页可用"
|
|
type: http
|
|
group: "搜索引擎"
|
|
http:
|
|
url: "https://www.baidu.com"
|
|
expect:
|
|
status: [200]
|
|
maxDurationMs: 5000
|
|
|
|
- name: "JSON API — 完整流水线"
|
|
type: http
|
|
group: "后端服务"
|
|
interval: "1m"
|
|
timeout: "15s"
|
|
http:
|
|
url: "https://httpbin.org/json"
|
|
headers:
|
|
Accept: "application/json"
|
|
expect:
|
|
headers:
|
|
Content-Type:
|
|
contains: "application/json"
|
|
maxDurationMs: 8000
|
|
body:
|
|
- json:
|
|
path: "$.slideshow.title"
|
|
equals: "Sample Slide Show"
|
|
- json:
|
|
path: "$.slideshow.slides[0].title"
|
|
contains: "Wake"
|
|
- json:
|
|
path: "$.slideshow.slides[0].type"
|
|
equals: "all"
|
|
- regex: '"title"'
|
|
|
|
- name: "HTML 页面 — CSS 选择器"
|
|
type: http
|
|
http:
|
|
url: "https://httpbin.org/html"
|
|
expect:
|
|
body:
|
|
- css:
|
|
selector: "h1"
|
|
contains: "Moby-Dick"
|
|
- css:
|
|
selector: "body"
|
|
exists: true
|
|
|
|
- name: "HTML 页面 — XPath 提取节点文本"
|
|
type: http
|
|
http:
|
|
url: "https://httpbin.org/html"
|
|
expect:
|
|
body:
|
|
- xpath:
|
|
path: "/html/body/h1/text()"
|
|
contains: "Melville"
|
|
|
|
- name: "POST 接口测试"
|
|
type: http
|
|
http:
|
|
url: "https://httpbin.org/post"
|
|
method: POST
|
|
headers:
|
|
Content-Type: "application/json"
|
|
body: '{"action":"check","version":1}'
|
|
expect:
|
|
status: [200]
|
|
body:
|
|
- json:
|
|
path: "$.json.action"
|
|
equals: "check"
|
|
- json:
|
|
path: "$.json.version"
|
|
gte: 1
|
|
|
|
- name: "请求头验证"
|
|
type: http
|
|
http:
|
|
url: "https://httpbin.org/headers"
|
|
headers:
|
|
X-Custom-Header: "dial-server"
|
|
expect:
|
|
status: [200]
|
|
body:
|
|
- json:
|
|
path: "$.headers.X-Custom-Header"
|
|
equals: "dial-server"
|
|
|
|
- name: "响应头自定义校验"
|
|
type: http
|
|
http:
|
|
url: "https://httpbin.org/response-headers"
|
|
headers:
|
|
accept: "application/json"
|
|
expect:
|
|
body:
|
|
- json:
|
|
path: "$.Content-Type"
|
|
equals: "application/json"
|
|
|
|
- name: "多状态码允许"
|
|
type: http
|
|
http:
|
|
url: "https://httpbin.org/status/200"
|
|
expect:
|
|
status: [200, 201, 204]
|
|
|
|
- name: "状态码范围匹配"
|
|
type: http
|
|
http:
|
|
url: "https://httpbin.org/status/204"
|
|
expect:
|
|
status: ["2xx"]
|
|
|
|
- name: "自签名证书跳过 SSL"
|
|
type: http
|
|
http:
|
|
url: "https://internal.local/health"
|
|
ignoreSSL: true
|
|
expect:
|
|
status: ["2xx"]
|
|
|
|
- name: "跟随重定向"
|
|
type: http
|
|
http:
|
|
url: "https://httpbin.org/redirect/1"
|
|
maxRedirects: 5
|
|
expect:
|
|
status: [200]
|
|
|
|
# ========== Cmd targets ==========
|
|
|
|
- name: "Bun 版本输出匹配"
|
|
type: cmd
|
|
group: "系统检查"
|
|
cmd:
|
|
exec: "bun"
|
|
args: ["--version"]
|
|
expect:
|
|
exitCode: [0]
|
|
stdout:
|
|
- match: "^\\d+\\.\\d+\\.\\d+"
|
|
|
|
- name: "自定义文本输出"
|
|
type: cmd
|
|
cmd:
|
|
exec: "bun"
|
|
args: ["-e", "console.log('check ok')"]
|
|
expect:
|
|
stdout:
|
|
- equals: "check ok\n"
|
|
maxDurationMs: 3000
|
|
|
|
- name: "脚本执行无 stderr"
|
|
type: cmd
|
|
cmd:
|
|
exec: "bun"
|
|
args: ["-e", "process.stdout.write('ok')"]
|
|
expect:
|
|
exitCode: [0]
|
|
stderr:
|
|
- empty: true
|
|
|
|
- name: "日期脚本输出包含年份"
|
|
type: cmd
|
|
cmd:
|
|
exec: "bun"
|
|
args: ["-e", "console.log(new Date().getFullYear())"]
|
|
expect:
|
|
stdout:
|
|
- match: "^20\\d{2}\n?$"
|
|
|
|
- name: "环境变量覆盖"
|
|
type: cmd
|
|
cmd:
|
|
exec: "bun"
|
|
args: ["-e", "console.log(process.env.LANG ?? '')"]
|
|
env:
|
|
LANG: "C"
|
|
expect:
|
|
stdout:
|
|
- contains: "C"
|
|
|
|
- name: "运行平台非空输出"
|
|
type: cmd
|
|
cmd:
|
|
exec: "bun"
|
|
args: ["-e", "console.log(process.platform)"]
|
|
expect:
|
|
stdout:
|
|
- match: ".+"
|
|
|
|
- name: "多规则 stdout 顺序校验"
|
|
type: cmd
|
|
interval: "5m"
|
|
cmd:
|
|
exec: "bun"
|
|
args: ["-e", "console.log('version: 2.0.1, status: healthy')"]
|
|
expect:
|
|
stdout:
|
|
- contains: "version:"
|
|
- match: "\\d+\\.\\d+\\.\\d+"
|
|
- contains: "healthy"
|
|
|
|
- name: "stderr 内容检查"
|
|
type: cmd
|
|
cmd:
|
|
exec: "bun"
|
|
args: ["-e", "process.stderr.write('simulated error\\n'); process.exit(1)"]
|
|
expect:
|
|
exitCode: [1]
|
|
stderr:
|
|
- contains: "simulated error"
|