snapshot before legacy cleanup

This commit is contained in:
Naeel
2026-04-27 07:36:06 +03:00
parent 9461026546
commit 7cfe20bf76
25 changed files with 1430 additions and 261 deletions
+34 -27
View File
@@ -2,10 +2,42 @@
set -uo pipefail
BASE="https://fission.kube5s.ru/console/api"
ROOT_DIR=$(cd "$(dirname "$0")" && pwd)
NS_CLEANUP_SCRIPT="${ROOT_DIR}/cleanup_test_namespaces.sh"
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)
cleanup_namespaces() {
local subs=()
subs+=("${GO_NS}")
subs+=("alice@test.local" "routetest-alice@test.local" "routetest-bob@test.local")
subs+=("val-user@test.local" "dup-user@test.local" "upd-user@test.local" "get-user@test.local")
subs+=("ns-u1@test.local" "ns-u2@test.local" "alice-del@test.local" "carol-del@test.local")
subs+=("py-user@test.local" "js-user@test.local" "ttl-user@test.local" "body-user@test.local")
subs+=("stress-user@test.local" "brand-new-empty-user-xyzqwerty@test.local" "chain-user@test.local")
subs+=("dup2-user-${RUN_ID}@test.local" "name-user-${RUN_ID}@test.local")
subs+=("len57-user-${RUN_ID}@test.local" "big-user-${RUN_ID}@test.local" "size-user-${RUN_ID}@test.local")
subs+=("ttl-exp-${RUN_ID}@test.local" "race-${RUN_ID}@test.local")
subs+=("mfunc-${RUN_ID}@test.local" "victim-${RUN_ID}@test.local" "attacker-${RUN_ID}@test.local")
subs+=("lang-multi-${RUN_ID}@test.local" "lang-inv-${RUN_ID}@test.local")
local uid
for uid in $(seq 1 10); do
subs+=("u${uid}-${RUN_ID}@test.local")
done
for uid in $(seq 1 3); do
subs+=("fullcycle-u${uid}-${RUN_ID}@test.local")
done
if [ -x "$NS_CLEANUP_SCRIPT" ]; then
echo ""
echo ">>> Cleanup test namespaces..."
"$NS_CLEANUP_SCRIPT" "${subs[@]}" || true
fi
}
trap cleanup_namespaces EXIT
# GO_NS фиксированный — namespace создаётся один раз, Fission не рестартует при повторных прогонах.
# Первый прогон занимает ~5 мин (rolling restart Fission), последующие — мгновенно.
GO_NS="go-livetest@test.local"
@@ -688,9 +720,9 @@ Z_VICTIM_LIST=$(curl -s ${BASE}/functions -H "X-Test-Sub: ${VICTIM_USER}" \
echo ""
echo ">>> БЛОК AA: PHP — создание и вызов"
# Все три блока (AA/AB/AC) используют ОДИН namespace, чтобы избежать повторных executor rollouts.
# Оба блока (AA/AB) используют ОДИН namespace, чтобы избежать повторных executor rollouts.
# Первая функция (PHP) вызывает addNSToFission → executor rollout (~60s).
# Ruby и Perl создаются в том же namespace → rollout не нужен → пулы стартуют сразу.
# Ruby создаётся в том же namespace → rollout не нужен → пул стартует сразу.
LANG_NS="lang-multi-${RUN_ID}@test.local"
PHP_CODE=$(python3 -c "import json; print(json.dumps('<?php\nfunction handler(\$context) {\n \$context[\"response\"]->getBody()->write(\"php-ok\");\n}'))")
@@ -739,31 +771,6 @@ done
[ "$STATUS" = "200" ] && pass "Ruby: invoke → 200" || fail "Ruby: invoke → got $STATUS (body: $RAW)"
echo "$RAW" | grep -q "ruby-ok" && pass "Ruby: тело содержит ruby-ok" || fail "Ruby: тело не содержит ruby-ok (got: $RAW)"
# ──────────────────────────────────────────────
echo ""
echo ">>> БЛОК AC: Perl — создание и вызов"
PERL_CODE=$(python3 -c "import json; print(json.dumps('sub {\n return \"perl-ok\";\n}'))")
R=$(curl -s -w "\n%{http_code}" -X POST ${BASE}/functions \
-H "X-Test-Sub: ${LANG_NS}" -H "Content-Type: application/json" \
-d "{\"name\":\"perl-fn\",\"language\":\"perl\",\"code\":${PERL_CODE},\"ttl\":\"10m\"}")
CODE=$(echo "$R" | tail -1)
check_http "$CODE" "201" "Perl: create → 201"
# Ждём пока poolmgr поднимет pod (retry до 200s).
# Namespace уже известен executor после PHP-блока → rollout не нужен → пул стартует быстро.
STATUS=""; RAW=""
for _try in $(seq 1 20); do
sleep 10
INV=$(curl -s -X POST ${BASE}/functions/perl-fn/invoke \
-H "X-Test-Sub: ${LANG_NS}")
STATUS=$(echo "$INV" | python3 -c "import sys,json; print(json.load(sys.stdin).get('status','?'))" 2>/dev/null)
RAW=$(echo "$INV" | python3 -c "import sys,json; print(json.load(sys.stdin).get('response_raw','?'))" 2>/dev/null)
[ "$STATUS" = "200" ] && break
done
[ "$STATUS" = "200" ] && pass "Perl: invoke → 200" || fail "Perl: invoke → got $STATUS (body: $RAW)"
echo "$RAW" | grep -q "perl-ok" && pass "Perl: тело содержит perl-ok" || fail "Perl: тело не содержит perl-ok (got: $RAW)"
# ──────────────────────────────────────────────
echo ""
echo ">>> БЛОК AD: Невалидный язык → 400"