From 78553de39d6e80e132d68f2462ae3b064431de3a Mon Sep 17 00:00:00 2001 From: Naeel Date: Sat, 25 Apr 2026 16:46:06 +0300 Subject: [PATCH] fix: AE test fixed GO_NS+600s retry; tf: go-builder-fast:v1 in simple_function --- .../resources/simple_function_resource.go | 2 +- tests_v2.sh | 20 +++++++++++++------ 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/terraform/provider/internal/resources/simple_function_resource.go b/terraform/provider/internal/resources/simple_function_resource.go index dba42de..203597a 100644 --- a/terraform/provider/internal/resources/simple_function_resource.go +++ b/terraform/provider/internal/resources/simple_function_resource.go @@ -68,7 +68,7 @@ var runtimeRegistry = map[string]runtimeMeta{ }, "go": { image: "ghcr.io/fission/go-env:latest", - builderImage: "ghcr.io/fission/go-builder:latest", + builderImage: "naeel/go-builder-fast:v1", deployType: "source", entrypoint: "Handler", poolSize: 3, diff --git a/tests_v2.sh b/tests_v2.sh index a9d817c..fa84d27 100644 --- a/tests_v2.sh +++ b/tests_v2.sh @@ -6,6 +6,12 @@ PASS=0; FAIL=0 RUN_ID=$(date +%s%N 2>/dev/null || date +%s)$(od -An -N2 -tu2 /dev/urandom 2>/dev/null | tr -d ' ' || echo "$$") RUN_ID=$(echo "$RUN_ID" | sha256sum 2>/dev/null | head -c 8 || echo "${RUN_ID}" | cut -c1-8) +# GO_NS фиксированный — namespace создаётся один раз, Fission не рестартует при повторных прогонах. +# Первый прогон занимает ~5 мин (rolling restart Fission), последующие — мгновенно. +GO_NS="go-livetest@test.local" +# Триггерим ensureUserNamespace заранее — Fission начнёт регистрировать NS пока идут остальные тесты. +curl -s -o /dev/null -X GET ${BASE}/functions -H "X-Test-Sub: ${GO_NS}" || true + pass() { PASS=$((PASS+1)); echo " PASS: $1"; } fail() { FAIL=$((FAIL+1)); echo " FAIL: $1"; } check_http() { local got=$1 want=$2 label=$3; [ "$got" = "$want" ] && pass "$label (HTTP $got)" || fail "$label --- got HTTP $got, want $want"; } @@ -772,19 +778,21 @@ check_http "$CODE" "400" "Невалидный язык cobol → 400" echo "" echo ">>> БЛОК AE: Go — создание и вызов" -# Go использует newdeploy executor + buildermgr (~60-90s на сборку). -# Используем отдельный namespace чтобы не ждать executor rollout. -GO_NS="go-${RUN_ID}@test.local" +# Go: namespace GO_NS уже прогрет в начале теста (curl в самом верху). +# При первом прогоне Fission делает rolling restart (~5 мин) — retry до 600s покрывает это. +# При последующих прогонах NS уже зарегистрирован → invoke занимает ~10-15s. GO_CODE=$(python3 -c "import json; print(json.dumps('package main\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n)\n\nfunc Handler(w http.ResponseWriter, r *http.Request) {\n\tfmt.Fprintf(w, \"go-ok\")\n}'))") +# Удаляем старую функцию если осталась от прошлого прогона (игнорируем ошибку) +curl -s -o /dev/null -X DELETE ${BASE}/functions/go-fn -H "X-Test-Sub: ${GO_NS}" || true R=$(curl -s -w "\n%{http_code}" -X POST ${BASE}/functions \ -H "X-Test-Sub: ${GO_NS}" -H "Content-Type: application/json" \ - -d "{\"name\":\"go-fn\",\"language\":\"go\",\"code\":${GO_CODE},\"ttl\":\"10m\"}") + -d "{\"name\":\"go-fn\",\"language\":\"go\",\"code\":${GO_CODE},\"ttl\":\"30m\"}") CODE=$(echo "$R" | tail -1) check_http "$CODE" "201" "Go: create → 201" -# Retry до 240s (24 итерации × 10s): ждём сборку + запуск newdeploy pod. +# Retry до 600s (60 итераций × 10s): первый прогон — ждём Fission rolling restart + build + pool pod. STATUS=""; RAW="" -for _try in $(seq 1 24); do +for _try in $(seq 1 60); do sleep 10 INV=$(curl -s -X POST ${BASE}/functions/go-fn/invoke \ -H "X-Test-Sub: ${GO_NS}")