diff --git a/VM/vm_stress_test.sh b/VM/vm_stress_test.sh index a4b7a2b..5c0a37d 100755 --- a/VM/vm_stress_test.sh +++ b/VM/vm_stress_test.sh @@ -300,15 +300,21 @@ phase_2_idempotent() { phase_header 2 "IDEMPOTENT — повторный apply без изменений" # Тот же run_id что применялся в фазе 1 → apply должен вернуть 0 changed + # sless_job — эфемерный ресурс, каждый apply пересоздаёт job-ресурсы (add+destroy). + # Идемпотентность = "0 changed" (ноль in-place изменений), а не "0 add/destroy". + # VM и vApp не должны изменяться никогда. if tf_apply \ -var "install_packages=true" \ -var "install_nginx=true" \ -var "install_docker=true" \ -var "install_run_id=$RUN_ID"; then - if grep -q '0 added, 0 changed, 0 destroyed' /tmp/vm_tf_apply.log; then - pass "2.1 повторный apply → 0 added, 0 changed, 0 destroyed" + if grep -q ', 0 changed,' /tmp/vm_tf_apply.log; then + pass "2.1 повторный apply → 0 changed (sless_job пересоздан — ожидаемо)" + grep -E 'Resources:' /tmp/vm_tf_apply.log | tail -1 | while read -r line; do + info " $line" + done else - fail "2.1 повторный apply изменил ресурсы (ожидали 0 changed)" + fail "2.1 повторный apply изменил persistent ресурсы (ожидали 0 changed)" grep -E 'added|changed|destroyed' /tmp/vm_tf_apply.log | tail -3 | while read -r line; do info " $line" done @@ -517,18 +523,18 @@ phase_6_manual_purge() { return 1 fi - # Ждать пока sless_job отработает: docker самый долгий (k8s Job + apt-install). - # vm_wait_binary полит каждые 15s до 180s вместо sleep 5. - if vm_wait_binary "$ip" "docker" 180; then + # Ждать пока sless_job отработает: docker самый долгий (k8s Job + образ + apt-install ~200MB). + # docker-ce требует до 5 минут на первой установке — ставим 360s. + if vm_wait_binary "$ip" "docker" 360; then pass "6.5 docker установлен заново" else - fail "6.5 docker НЕ установлен после re-apply (таймаут 180s)" + fail "6.5 docker НЕ установлен после re-apply (таймаут 360s)" fi - if vm_wait_binary "$ip" "nginx" 120; then + if vm_wait_binary "$ip" "nginx" 240; then pass "6.6 nginx установлен заново" else - fail "6.6 nginx НЕ установлен после re-apply (таймаут 120s)" + fail "6.6 nginx НЕ установлен после re-apply (таймаут 240s)" fi if vm_check_binary "$ip" "jq"; then @@ -720,16 +726,21 @@ phase_10_final() { -var "install_run_id=$rid" || warn "восстановление не удалось" fi - # Idempotency финально: повторный apply → 0 changed + # Idempotency финально: повторный apply → 0 changed. + # sless_job пересоздаются (add+destroy) — это нормально для job-ресурса. + # Проверяем только "0 changed" — VM и vApp не должны изменяться. if tf_apply \ -var "install_packages=true" \ -var "install_nginx=true" \ -var "install_docker=true" \ -var "install_run_id=$RUN_ID"; then - if grep -q '0 added, 0 changed, 0 destroyed' /tmp/vm_tf_apply.log; then - pass "10.2 финальный apply → 0 added, 0 changed, 0 destroyed" + if grep -q ', 0 changed,' /tmp/vm_tf_apply.log; then + pass "10.2 финальный apply → 0 changed (sless_job пересоздан — ожидаемо)" + grep -E 'Resources:' /tmp/vm_tf_apply.log | tail -1 | while read -r line; do + info " $line" + done else - fail "10.2 финальный apply изменил ресурсы (ожидали 0 changed)" + fail "10.2 финальный apply изменил persistent ресурсы (ожидали 0 changed)" grep -E 'added|changed|destroyed' /tmp/vm_tf_apply.log | tail -3 | while read -r line; do info " $line" done