test(vps-xray): 精确锚定 grep 匹配、补充容错验证断言
This commit is contained in:
@@ -205,47 +205,53 @@ rm -f "$RESTART_STATE_FILE"
|
||||
|
||||
# 无状态文件 → 首次必须执行
|
||||
out=$("$GUARD_BIN" 2>&1)
|
||||
is "首次执行重启" "$(grep -c 'systemctl restart xray' "$SYSTEMCTL_LOG")" "1"
|
||||
is "首次执行重启" "$(grep -c '^systemctl restart xray$' "$SYSTEMCTL_LOG")" "1"
|
||||
is "首次写入时间戳" "$([ -f "$RESTART_STATE_FILE" ] && echo yes)" "yes"
|
||||
|
||||
# 刚重启过 → 必须跳过
|
||||
: > "$SYSTEMCTL_LOG"
|
||||
out=$("$GUARD_BIN" 2>&1)
|
||||
is "刚重启过则跳过" "$(grep -c 'systemctl restart xray' "$SYSTEMCTL_LOG")" "0"
|
||||
is "刚重启过则跳过" "$(grep -c '^systemctl restart xray$' "$SYSTEMCTL_LOG")" "0"
|
||||
is "跳过时有提示" "$(echo "$out" | grep -c '跳过')" "1"
|
||||
|
||||
# 距上次 6 天 → 仍未满 7 天,跳过
|
||||
echo "$(( $(date +%s) - 6 * 86400 ))" > "$RESTART_STATE_FILE"
|
||||
: > "$SYSTEMCTL_LOG"
|
||||
"$GUARD_BIN" > /dev/null 2>&1
|
||||
is "6 天不足 7 天则跳过" "$(grep -c 'systemctl restart xray' "$SYSTEMCTL_LOG")" "0"
|
||||
is "6 天不足 7 天则跳过" "$(grep -c '^systemctl restart xray$' "$SYSTEMCTL_LOG")" "0"
|
||||
|
||||
# 距上次 7 天差 100 秒 → 300 秒容差内,必须执行
|
||||
echo "$(( $(date +%s) - 7 * 86400 + 100 ))" > "$RESTART_STATE_FILE"
|
||||
: > "$SYSTEMCTL_LOG"
|
||||
"$GUARD_BIN" > /dev/null 2>&1
|
||||
is "容差内视为已满 7 天" "$(grep -c 'systemctl restart xray' "$SYSTEMCTL_LOG")" "1"
|
||||
is "容差内视为已满 7 天" "$(grep -c '^systemctl restart xray$' "$SYSTEMCTL_LOG")" "1"
|
||||
|
||||
# 距上次 7 天差 600 秒 → 超出容差,跳过
|
||||
echo "$(( $(date +%s) - 7 * 86400 + 600 ))" > "$RESTART_STATE_FILE"
|
||||
: > "$SYSTEMCTL_LOG"
|
||||
"$GUARD_BIN" > /dev/null 2>&1
|
||||
is "超出容差仍判不足" "$(grep -c 'systemctl restart xray' "$SYSTEMCTL_LOG")" "0"
|
||||
is "超出容差仍判不足" "$(grep -c '^systemctl restart xray$' "$SYSTEMCTL_LOG")" "0"
|
||||
|
||||
# 状态文件内容被写坏 → 按 0 处理,立即执行
|
||||
echo "garbage" > "$RESTART_STATE_FILE"
|
||||
: > "$SYSTEMCTL_LOG"
|
||||
"$GUARD_BIN" > /dev/null 2>&1
|
||||
is "状态文件非法时立即执行" "$(grep -c 'systemctl restart xray' "$SYSTEMCTL_LOG")" "1"
|
||||
is "状态文件非法时立即执行" "$(grep -c '^systemctl restart xray$' "$SYSTEMCTL_LOG")" "1"
|
||||
is "非法内容被覆盖为数字" \
|
||||
"$(grep -cE '^[0-9]+$' "$RESTART_STATE_FILE")" "1"
|
||||
|
||||
echo "garbage" > "$RESTART_STATE_FILE"
|
||||
: > "$SYSTEMCTL_LOG"
|
||||
guard_err=$("$GUARD_BIN" 2>&1 >/dev/null)
|
||||
is "状态文件非法时不产生算术求值报错" \
|
||||
"$(printf '%s' "$guard_err" | grep -c 'integer expression')" "0"
|
||||
|
||||
# 每日模式:距上次 1 天即执行
|
||||
render_restart_units 1 04:00 Asia/Shanghai
|
||||
echo "$(( $(date +%s) - 86400 ))" > "$RESTART_STATE_FILE"
|
||||
: > "$SYSTEMCTL_LOG"
|
||||
"$GUARD_BIN" > /dev/null 2>&1
|
||||
is "N=1 时满一天即执行" "$(grep -c 'systemctl restart xray' "$SYSTEMCTL_LOG")" "1"
|
||||
is "N=1 时满一天即执行" "$(grep -c '^systemctl restart xray$' "$SYSTEMCTL_LOG")" "1"
|
||||
|
||||
# 时间戳先于重启写入:用一个必定失败的 systemctl 桩验证
|
||||
cat > "${STUB}/systemctl" << 'STUBEOF'
|
||||
|
||||
Reference in New Issue
Block a user