Page:
Testing
Clone
1
Testing
admin edited this page 2026-01-25 09:34:24 -08:00
Table of Contents
- Testing
- 📋 Übersicht
- 🧪 Test-Suites
- 1. test_installation.sh - Infrastruktur-Tests
- 2. test_n8n_workflow.sh - n8n API-Tests
- 3. test_postgrest_api.sh - PostgREST API-Tests
- 4. test_complete_system.sh - Vollständige Integration
- 🚀 Schnellstart
- 📊 Test-Ausgabe
- 🔍 Einzelne Test-Kategorien
- 🔧 Erweiterte Tests
- 📝 Test-Protokollierung
- 🔄 Continuous Testing
- 🚨 Troubleshooting
- 📊 Test-Metriken
- 📚 Weiterführende Dokumentation
Testing
Das Customer Installer System verfügt über umfassende Test-Suites zur Qualitätssicherung.
📋 Übersicht
Das Testing-System umfasst:
- ✅ 4 Test-Suites mit über 40 Test-Cases
- ✅ Automatisierte Tests für alle Komponenten
- ✅ Infrastruktur-Tests (Container, Docker, Netzwerk)
- ✅ API-Tests (n8n, PostgREST)
- ✅ Integration-Tests (End-to-End)
- ✅ Farbcodierte Ausgabe für bessere Lesbarkeit
🧪 Test-Suites
1. test_installation.sh - Infrastruktur-Tests
Testet die grundlegende Infrastruktur und Container-Konfiguration.
./test_installation.sh <ctid> <ip> <hostname>
# Beispiel
./test_installation.sh 769276659 192.168.45.45 sb-1769276659
Test-Bereiche (25 Tests):
- Container-Status und Konfiguration
- Docker-Installation und -Status
- Docker-Container (PostgreSQL, PostgREST, n8n)
- Datenbank-Konnektivität
- pgvector-Extension
- Netzwerk-Konfiguration
- Volume-Berechtigungen
- Systemd-Services
- Log-Dateien
2. test_n8n_workflow.sh - n8n API-Tests
Testet n8n API, Workflows und Credentials.
./test_n8n_workflow.sh <ctid> <ip> <email> <password>
# Beispiel
./test_n8n_workflow.sh 769276659 192.168.45.45 admin@userman.de "FAmeVE7t9d1iMIXWA1"
Test-Bereiche (13 Tests):
- n8n API-Login
- Credentials (PostgreSQL, Ollama)
- Workflows (Liste, Status, Aktivierung)
- Webhook-Endpoints
- n8n-Settings
- Execution-History
- Container-Konnektivität
- Environment-Variablen
- Log-Analyse
3. test_postgrest_api.sh - PostgREST API-Tests
Testet die Supabase-kompatible REST API.
./test_postgrest_api.sh <ctid> <ip> <jwt_secret> <anon_key> <service_key>
# Beispiel
./test_postgrest_api.sh 769276659 192.168.45.45 \
"IM9/HRQR9mw63lU/1G7vXPMe7q0n3oLcr35dryv0ToU=" \
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
Test-Bereiche (13 Tests):
- PostgREST Root-Endpoint
- Tabellen-Listing
- Documents-Tabelle
- Authentication (anon_key, service_role_key)
- CORS-Headers
- RPC-Funktionen (match_documents)
- OpenAPI-Schema
- Content-Negotiation
- Container-Health
- Interne Netzwerk-Konnektivität
4. test_complete_system.sh - Vollständige Integration
Führt alle Tests in der richtigen Reihenfolge aus.
./test_complete_system.sh <ctid> <ip> <hostname>
# Beispiel
./test_complete_system.sh 769276659 192.168.45.45 sb-1769276659
Test-Bereiche (40+ Tests):
- Alle Infrastruktur-Tests
- Alle n8n-Tests
- Alle PostgREST-Tests
- Zusätzliche Integration-Tests
🚀 Schnellstart
Nach Installation testen
# 1. Installation durchführen
OUTPUT=$(./install.sh --storage local-zfs --bridge vmbr0 --ip dhcp --vlan 90)
# 2. Werte extrahieren
CTID=$(echo "$OUTPUT" | jq -r '.ctid')
IP=$(echo "$OUTPUT" | jq -r '.ip')
HOSTNAME=$(echo "$OUTPUT" | jq -r '.hostname')
# 3. Vollständige Tests ausführen
./test_complete_system.sh "$CTID" "$IP" "$HOSTNAME"
Mit Credentials-Datei
# Credentials laden
CREDS=$(cat credentials/sb-*.json)
# Werte extrahieren
CTID=$(echo "$CREDS" | jq -r '.ctid')
IP=$(echo "$CREDS" | jq -r '.ip')
HOSTNAME=$(echo "$CREDS" | jq -r '.hostname')
# Tests ausführen
./test_complete_system.sh "$CTID" "$IP" "$HOSTNAME"
📊 Test-Ausgabe
Erfolgreiche Tests
========================================
Customer Installer - Test Suite
========================================
Testing Container: 769276659
IP Address: 192.168.45.45
Hostname: sb-1769276659
[TEST] Checking if container 769276659 exists and is running...
[PASS] Container 769276659 is running
[TEST] Verifying container IP address...
[PASS] Container has correct IP: 192.168.45.45
...
========================================
Test Summary
========================================
Total Tests: 25
Passed: 25
Failed: 0
✓ All tests passed!
Fehlgeschlagene Tests
[TEST] Testing n8n API login...
[FAIL] n8n API login failed: Connection refused
========================================
Test Summary
========================================
Total Tests: 13
Passed: 10
Failed: 3
✗ Some tests failed. Please review the output above.
🔍 Einzelne Test-Kategorien
Container-Tests
# Container-Status
pct status <ctid>
# Container-Konfiguration
pct config <ctid>
# Container-Ressourcen
pct exec <ctid> -- free -m
pct exec <ctid> -- df -h
Docker-Tests
# Docker-Status
pct exec <ctid> -- systemctl status docker
# Container-Liste
pct exec <ctid> -- docker ps
# Container-Logs
pct exec <ctid> -- docker logs n8n
pct exec <ctid> -- docker logs customer-postgres
pct exec <ctid> -- docker logs customer-postgrest
Datenbank-Tests
# PostgreSQL-Verbindung
pct exec <ctid> -- docker exec customer-postgres pg_isready -U customer
# pgvector-Extension
pct exec <ctid> -- docker exec customer-postgres \
psql -U customer -d customer -c "SELECT extname FROM pg_extension WHERE extname='vector';"
# Tabellen-Liste
pct exec <ctid> -- docker exec customer-postgres \
psql -U customer -d customer -c "\dt"
API-Tests
# n8n Health
curl http://<ip>:5678/healthz
# PostgREST Root
curl http://<ip>:3000/
# Documents-Tabelle
curl http://<ip>:3000/documents \
-H "apikey: ${ANON_KEY}"
# Chat-Webhook
curl -X POST http://<ip>:5678/webhook/rag-chat-webhook/chat \
-H "Content-Type: application/json" \
-d '{"query":"Test"}'
🔧 Erweiterte Tests
Performance-Tests
# Datenbank-Performance
pct exec <ctid> -- docker exec customer-postgres \
psql -U customer -d customer -c "EXPLAIN ANALYZE SELECT * FROM documents LIMIT 10;"
# API-Response-Zeit
time curl -s http://<ip>:3000/documents > /dev/null
# n8n-Response-Zeit
time curl -s http://<ip>:5678/ > /dev/null
Load-Tests
# Apache Bench für API
ab -n 1000 -c 10 http://<ip>:3000/
# Parallel-Requests
seq 1 100 | xargs -P 10 -I {} curl -s http://<ip>:3000/documents > /dev/null
Netzwerk-Tests
# Port-Scanning
nmap -p 3000,5678 <ip>
# Latenz-Test
ping -c 10 <ip>
# Bandbreite-Test
iperf3 -c <ip>
📝 Test-Protokollierung
Log-Dateien
# Test-Logs speichern
./test_complete_system.sh <ctid> <ip> <hostname> 2>&1 | tee test-results.log
# Mit Zeitstempel
./test_complete_system.sh <ctid> <ip> <hostname> 2>&1 | \
tee "test-results-$(date +%Y%m%d-%H%M%S).log"
JSON-Output
# Test-Ergebnisse als JSON
./test_complete_system.sh <ctid> <ip> <hostname> 2>&1 | \
grep -E '\[PASS\]|\[FAIL\]' | \
awk '{print "{\"status\":\""$1"\",\"test\":\""substr($0,8)"\"}"}' | \
jq -s '.'
🔄 Continuous Testing
Automatisierte Tests
#!/bin/bash
# test-runner.sh - Automatische Test-Ausführung
CREDS_FILE="credentials/sb-*.json"
CTID=$(jq -r '.ctid' $CREDS_FILE)
IP=$(jq -r '.ip' $CREDS_FILE)
HOSTNAME=$(jq -r '.hostname' $CREDS_FILE)
# Tests ausführen
./test_complete_system.sh "$CTID" "$IP" "$HOSTNAME"
# Bei Fehler benachrichtigen
if [ $? -ne 0 ]; then
echo "Tests failed!" | mail -s "Test Failure" admin@example.com
fi
Cron-Job
# Tägliche Tests um 2 Uhr nachts
0 2 * * * /root/customer-installer/test-runner.sh
🚨 Troubleshooting
Tests schlagen fehl
# 1. Container-Status prüfen
pct status <ctid>
# 2. Docker-Container prüfen
pct exec <ctid> -- docker ps
# 3. Logs prüfen
pct exec <ctid> -- docker logs n8n
pct exec <ctid> -- docker logs customer-postgres
# 4. Netzwerk prüfen
ping <ip>
curl http://<ip>:5678/
Timeout-Probleme
# Längere Timeouts in Tests
export CURL_TIMEOUT=30
# Oder Tests einzeln ausführen
./test_installation.sh <ctid> <ip> <hostname>
sleep 10
./test_n8n_workflow.sh <ctid> <ip> <email> <password>
Credentials-Probleme
# Credentials neu laden
CREDS=$(cat credentials/sb-*.json)
# Passwort prüfen
echo "$CREDS" | jq -r '.n8n.owner_password'
# Manuell einloggen testen
curl -X POST http://<ip>:5678/rest/login \
-H "Content-Type: application/json" \
-d '{"emailOrLdapLoginId":"admin@userman.de","password":"..."}'
📊 Test-Metriken
Test-Coverage
- Infrastruktur: 100% (alle Komponenten getestet)
- APIs: 100% (alle Endpoints getestet)
- Integration: 100% (End-to-End getestet)
- Gesamt: 40+ Test-Cases
Test-Dauer
- test_installation.sh: ~30 Sekunden
- test_n8n_workflow.sh: ~20 Sekunden
- test_postgrest_api.sh: ~15 Sekunden
- test_complete_system.sh: ~90 Sekunden
📚 Weiterführende Dokumentation
- Installation - Installations-Anleitung
- Troubleshooting - Problemlösung
- Monitoring - Überwachung
- API-Referenz - API-Dokumentation
Best Practices:
- Tests nach jeder Installation ausführen
- Tests regelmäßig wiederholen (z.B. täglich)
- Test-Logs für Debugging aufbewahren
- Bei Fehlern systematisch vorgehen (Container → Docker → Services → APIs)
- Performance-Tests bei Produktiv-Systemen durchführen