Files
fission-console/scripts/test_fn_archives.sh

54 lines
2.1 KiB
Bash

#!/usr/bin/env bash
# Тест загрузки функций из архива для 4 языков
# НЕ запускать автоматически! Только ручной вызов из run_all.sh или отдельно.
set -euo pipefail
ROOT_DIR=$(cd "$(dirname "$0")" && pwd)
API_URL="https://fission.kube5s.ru/console/api"
# Примеры: test-archive-py, test-archive-node, ...
LANGS=(py node ruby php)
FILES=(py-hello.zip node-hello.zip ruby-hello.zip php-hello.zip)
RUNTIMES=(python nodejs ruby php)
for i in ${!LANGS[@]}; do
lang="${LANGS[$i]}"
file="${FILES[$i]}"
runtime="${RUNTIMES[$i]}"
FN="t-archive-${lang}-$(date +%s%N | tail -c 6)"
SUB="test-archive-${lang}@test.local"
echo "=== [${lang}] Тест архива: $file, runtime: $runtime, fn: $FN ==="
# 1. Загрузка архива (multipart)
RESP=$(curl -s -X POST "$API_URL/packages" \
-H "X-Auth-Token: $SUB" \
-F "file=@../test-archives/$file" \
-F "runtime=$runtime")
PKG_ID=$(echo "$RESP" | grep -o '"id":"[^"]*"' | head -1 | cut -d'"' -f4)
if [[ -z "$PKG_ID" ]]; then
echo "[FAIL] Не удалось загрузить архив ($file): $RESP"
continue
fi
echo "[OK] Архив загружен, package id: $PKG_ID"
# 2. Создание функции
RESP=$(curl -s -X POST "$API_URL/functions" \
-H "X-Auth-Token: $SUB" \
-H "Content-Type: application/json" \
-d "{\"name\":\"$FN\",\"package\":\"$PKG_ID\",\"runtime\":\"$runtime\"}")
if echo "$RESP" | grep -q '"error"'; then
echo "[FAIL] Не удалось создать функцию: $RESP"
continue
fi
echo "[OK] Функция создана: $FN"
# 3. Вызов функции
RESP=$(curl -s -X POST "$API_URL/functions/$FN/invoke" \
-H "X-Auth-Token: $SUB" \
-H "Content-Type: application/json" \
-d '{}')
echo "Invoke response: $RESP"
# 4. Удаление функции
curl -s -X DELETE "$API_URL/functions/$FN" -H "X-Auth-Token: $SUB" > /dev/null
echo "[OK] Функция удалена: $FN"
done
echo "Тесты архивов подготовлены. Для запуска — вручную или из run_all.sh."