snapshot before legacy cleanup
This commit is contained in:
+34
-27
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user