- Определена архитектура managed IoT service - Согласовано решение: RabbitMQ (MVP), потом Kafka; EMQX + CRD контроллер - Создан подробный план для Sonnet (doc/iot-mvp-plan.md) - Добавлено правило в copilot-instructions: лог мышления в doc/thinking/ по датам - Полный ход рассуждений в doc/thinking/2026-04-04.md Ключевые решения: - IoT код в iot/ (легко вынести потом) - CRD IoTDevice + контроллер (как все остальное в sless) - EMQX HTTP Auth Backend для динамической аутентификации устройств - Архитектура broker-agnostic (легко переключить на Kafka) - Terraform: расширяем текущий provider (sless_iot_device ресурс)
50 lines
2.0 KiB
Bash
50 lines
2.0 KiB
Bash
#!/usr/bin/env bash
|
|
# 2026-04-01 — test_basic.sh: простая проверка что ресурсы созданы и outputs заполнены.
|
|
# Не делает apply/destroy — только читает state и outputs.
|
|
# Запуск: bash test_basic.sh
|
|
|
|
set -uo pipefail
|
|
DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
cd "$DIR"
|
|
|
|
GREEN="\033[0;32m"; RED="\033[0;31m"; NC="\033[0m"
|
|
PASS=0; FAIL=0
|
|
|
|
ok() { echo -e "${GREEN}PASS${NC} $1"; PASS=$((PASS+1)); }
|
|
fail() { echo -e "${RED}FAIL${NC} $1"; FAIL=$((FAIL+1)); }
|
|
|
|
echo "=== PG_TEST basic check — $(date '+%Y-%m-%d %H:%M:%S') ==="
|
|
echo ""
|
|
|
|
# ── 1. Нужные ресурсы есть в state ───────────────────────────────────────────
|
|
echo "--- state ---"
|
|
for res in \
|
|
"nubes_postgres.pg_test_instance" \
|
|
"nubes_postgres_user.pg_test_user" \
|
|
"nubes_postgres_database.pg_test_db"
|
|
do
|
|
if terraform state show "$res" > /dev/null 2>&1; then
|
|
ok "state: $res"
|
|
else
|
|
fail "state: $res — не найден"
|
|
fi
|
|
done
|
|
|
|
echo ""
|
|
|
|
# ── 2. Outputs непустые ───────────────────────────────────────────────────────
|
|
echo "--- outputs ---"
|
|
|
|
pg_host=$(terraform output -raw pg_host 2>/dev/null || true)
|
|
pg_db=$(terraform output -raw pg_database 2>/dev/null || true)
|
|
pg_user=$(terraform output -raw pg_username 2>/dev/null || true)
|
|
pg_pass=$(terraform output -raw pg_password 2>/dev/null || true)
|
|
|
|
[[ -n "$pg_host" ]] && ok "pg_host = $pg_host" || fail "pg_host пустой"
|
|
[[ -n "$pg_db" ]] && ok "pg_database = $pg_db" || fail "pg_database пустой"
|
|
[[ -n "$pg_user" ]] && ok "pg_username = $pg_user" || fail "pg_username пустой"
|
|
[[ -n "$pg_pass" ]] && ok "pg_password непустой" || fail "pg_password пустой (возможно нужен повторный apply)"
|
|
|
|
echo ""
|
|
echo "=== Итог: PASS=$PASS FAIL=$FAIL ==="
|