Commit Graph

3 Commits

Author SHA1 Message Date
f6c877b736 test(criteria): 收紧失败语义判据——只认「没进入监听」,并改用空闲端口
复核发现「坏 JSON 静默忽略」这条变异没被咬住:原判据只看退出码,而错误串
里本来就含 invalid JSON、端口又固定在 17699,实现把 Fatal 改成打日志后仍
可能因端口冲突拿到非零退出码,于是被误判为"已正确报错"。

- 新增 assert_died_before_listen:只要日志里出现 "listening on",就判失败。
  配置非法时进程必须启动前退出,不能带着默认口令继续提供服务。
- 所有启动分支改用 free_port 分配空闲端口——判据不能依赖宿主机上恰好没有
  进程占用固定端口(默认 7500 上通常就有生产实例)。
- 顺带断言配置文件里的 addr 真的生效(必须在该端口上监听),避免"进程活着"
  被当成"配置生效"。
2026-10-23 09:17:09 +08:00
ed62fd97a4 test(criteria): 坏 JSON / 未知键分支加超时兜底
判据要求「文件存在但不合法时非零退出」。若实现退化成只记日志继续启动,
进程会一直运行而不是报错——原写法会把判据自己挂死,现在用 timeout 兜底
并把 exit 124 明确判为失败(静默忽略),保证反向变异能被咬住。
2026-10-23 09:14:32 +08:00
f4d4e3cd52 test(criteria): 新增「配置文件启动 + 口令不泄漏」判据脚本
scripts/criteria/config-startup.sh 一条命令跑完正向判据:
构建与全量测试、优先级回归测试、配置文件启动后端到端验证
(/proc/<pid>/cmdline 与启动日志均不得出现明文口令)、
非法 JSON 必须非零退出、未知键必须被拒绝、文件缺失必须回落纯 flag、
交付的单元与示例配置不得含 -password。

退出码 0 = 通过,可直接在 CI / 复核里跑。
2026-10-23 09:13:29 +08:00