#!/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."