Просмотр исходного кода

test(s8): add defensive regression child cleanup

YY968XX 1 месяц назад
Родитель
Сommit
f803cbc7bd
1 измененных файлов с 12 добавлено и 0 удалено
  1. 12 0
      scripts/s8/rule-evaluator-regression.sh

+ 12 - 0
scripts/s8/rule-evaluator-regression.sh

@@ -31,6 +31,17 @@ echo "============================================================"
 echo "S8 Regression Driver — baseline_before=${baseline_before}"
 echo "============================================================"
 
+# 每个 child 结束后调用:清理 TEMP_SCHED_% 残留,防止跨 child 状态污染。
+# 不清除 demo rule 10/11/12、DEMO-S2/S3 数据、或真实业务 exception。
+# 不动 detection_state:避免与 Job scheduler 并发竞态破坏 active_exception_id 回填。
+# 各 child 自身负责 setup 阶段清自己的 detection_state。
+cleanup_between_children() {
+  local label="$1"
+  mysql_run "UPDATE ado_s8_watch_rule SET enabled=0, lock_token=NULL, locked_by=NULL, lock_until=NULL, updated_at=NOW() WHERE rule_code LIKE 'TEMP_SCHED_%' AND tenant_id=${TENANT_ID} AND factory_id=${FACTORY_ID} AND enabled=1;" 2>/dev/null || true
+  mysql_run "UPDATE ado_s8_exception SET is_deleted=1, updated_at=NOW() WHERE source_rule_code LIKE 'TEMP_SCHED_%' AND is_deleted=0;" 2>/dev/null || true
+  echo "[teardown] after ${label}: TEMP_SCHED_% disabled + active exceptions soft-deleted"
+}
+
 run_child() {
   local label="$1"
   local script="$2"
@@ -68,6 +79,7 @@ run_child() {
   fi
   CHILD_RESULTS+=("${label}: ${status} (pass=${p} fail=${f} skip=${s} rc=${rc})")
   echo "[${label}] result: ${status} pass=${p} fail=${f} skip=${s} rc=${rc}"
+  cleanup_between_children "${label}"
 }
 
 run_child "sched-exec"   "${SCRIPT_DIR}/sched-exec-regression.sh"