From 837425402077d2fefea9d58034f757c0d04d40e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Fri, 15 May 2026 14:16:30 +0400 Subject: [PATCH] chore: gitignore scripts/test_layer1.sh --- .gitignore | 1 + scripts/test_layer1.sh | 158 ----------------------------------------- 2 files changed, 1 insertion(+), 158 deletions(-) delete mode 100644 scripts/test_layer1.sh diff --git a/.gitignore b/.gitignore index 1f4f825..e9ac3e5 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,4 @@ token.txt # Test logs test-results/ +scripts/test_layer1.sh diff --git a/scripts/test_layer1.sh b/scripts/test_layer1.sh deleted file mode 100644 index 12606c8..0000000 --- a/scripts/test_layer1.sh +++ /dev/null @@ -1,158 +0,0 @@ -#!/usr/bin/env bash -# test_layer1.sh — простой тест пропатченного Fission NSWatcher (Layer 1 only). -# Без консоли. Только kubectl + fission CLI. -# -# Что проверяем: -# 1. Создаём NS с меткой fission.io/managed=true -# 2. Executor регистрирует его через NSWatcher (лог) -# 3. Создаём Python env + function в новом NS -# 4. Вызываем функцию — должна ответить 200 -# -# Запуск: bash ~/terra/fission/test_layer1.sh - -set -uo pipefail - -NS="l1-test-$(date +%s | tail -c 6)" -PASS=0; FAIL=0 - -green() { echo -e "\033[32m PASS: $1\033[0m"; PASS=$((PASS+1)); } -red() { echo -e "\033[31m FAIL: $1\033[0m"; FAIL=$((FAIL+1)); } - -echo "" -echo "========================================" -echo " Layer 1 NSWatcher — простой тест" -echo " NS: $NS" -echo "========================================" - -# ── 1. Создаём NS с меткой ──────────────────────────────────────────────────── -echo "" -echo ">>> [1/5] Создаём NS $NS с меткой fission.io/managed=true..." -kubectl create ns "$NS" -kubectl label ns "$NS" fission.io/managed=true --overwrite - -kubectl get ns "$NS" --show-labels | grep "fission.io/managed" -if [ $? -eq 0 ]; then - green "NS создан с меткой" -else - red "Метка не применилась" - exit 1 -fi - -# ── 2. Ждём регистрации в executor ──────────────────────────────────────────── -echo "" -echo ">>> [2/5] Ждём регистрации NS в executor (до 15 сек)..." - -DEADLINE=$((SECONDS + 15)) -REGISTERED=false -while [ $SECONDS -lt $DEADLINE ]; do - if kubectl logs -n fission deployment/executor 2>/dev/null | grep "registered namespace" | grep -q "$NS"; then - REGISTERED=true - break - fi - sleep 2 -done - -if [ "$REGISTERED" = "true" ]; then - green "Executor зарегистрировал NS $NS" -else - red "Executor НЕ зарегистрировал NS за 15 сек" - echo " Лог executor (последние строки про namespace):" - kubectl logs -n fission deployment/executor 2>/dev/null | grep "namespace" | tail -5 -fi - -# ── 3. Создаём environment в новом NS ───────────────────────────────────────── -echo "" -echo ">>> [3/5] Создаём Python environment в NS $NS..." - -fission env create \ - --name py-env \ - --namespace "$NS" \ - --image ghcr.io/fission/python-env:latest \ - --poolsize 1 2>&1 - -if kubectl get environment py-env -n "$NS" &>/dev/null; then - green "Environment py-env создан в $NS" -else - red "Environment не создался" -fi - -# ── 4. Создаём функцию ──────────────────────────────────────────────────────── -echo "" -echo ">>> [4/5] Создаём функцию hello..." - -cat > /tmp/hello.py << 'EOF' -def main(): - return "hello from layer1" -EOF - -fission fn create \ - --name hello \ - --namespace "$NS" \ - --env py-env \ - --code /tmp/hello.py 2>&1 - -fission httptrigger create \ - --name hello-route \ - --namespace "$NS" \ - --function hello \ - --url "/${NS}/hello" \ - --method GET 2>&1 - -if kubectl get httptrigger hello-route -n "$NS" &>/dev/null; then - green "Function + HTTPTrigger созданы" -else - red "HTTPTrigger не создался" -fi - -# ── 5. Вызываем функцию через внутренний router с JWT ──────────────────────── -echo "" -echo ">>> [5/5] Вызываем функцию через internal router + JWT (cold start до 180 сек)..." - -ROUTER_INT="http://router.fission.svc.cluster.local" -DEADLINE=$((SECONDS + 180)) -FN_OK=false - -while [ $SECONDS -lt $DEADLINE ]; do - RESULT=$(kubectl run fn-probe-$$ --rm -i --restart=Never \ - --image=curlimages/curl:8.7.1 \ - --namespace=fission \ - -- sh -c " - TOKEN=\$(curl -sf --max-time 15 -X POST ${ROUTER_INT}/auth/login \ - -H 'Content-Type: application/json' \ - -d '{\"username\":\"admin\",\"password\":\"7XG1lSg0EFqPLE4pf3He\"}' \ - | grep -o '\"accesstoken\":\"[^\"]*' | cut -d'\"' -f4) - if [ -z \"\$TOKEN\" ]; then echo 'LOGIN_FAIL|||000'; exit 0; fi - curl -s -w '|||%{http_code}' --max-time 90 \ - -H \"Authorization: Bearer \$TOKEN\" \ - ${ROUTER_INT}/${NS}/hello - " 2>/dev/null | grep "|||" || echo "|||000") - CODE=$(echo "$RESULT" | grep -o '|||[0-9]*' | tr -d '|||') - BODY=$(echo "$RESULT" | sed 's/|||[0-9]*$//') - echo " HTTP $CODE — $(echo "$BODY" | head -c 80)" - [ "$CODE" = "200" ] && FN_OK=true && break - sleep 5 -done - -if [ "$FN_OK" = "true" ]; then - green "Функция ответила 200: $BODY" -else - red "Функция не ответила 200 (timeout)" - echo " Логи router (last 3):" - kubectl logs -n fission deployment/router 2>/dev/null | tail -3 -fi - -# ── Cleanup ─────────────────────────────────────────────────────────────────── -echo "" -echo ">>> Cleanup..." -fission httptrigger delete --name hello-route --namespace "$NS" 2>/dev/null || true -fission fn delete --name hello --namespace "$NS" 2>/dev/null || true -fission env delete --name py-env --namespace "$NS" 2>/dev/null || true -kubectl delete ns "$NS" --wait=false 2>/dev/null || true -echo " Готово." - -# ── Итог ───────────────────────────────────────────────────────────────────── -echo "" -echo "========================================" -echo " ИТОГ: PASS=$PASS FAIL=$FAIL" -echo "========================================" -[ $FAIL -eq 0 ] && exit 0 || exit 1