fix: AE test fixed GO_NS+600s retry; tf: go-builder-fast:v1 in simple_function

This commit is contained in:
Naeel
2026-04-25 16:46:06 +03:00
parent 7fccd39a73
commit 78553de39d
2 changed files with 15 additions and 7 deletions
@@ -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,
+14 -6
View File
@@ -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}")