- Add Wiki home page with navigation - Add Installation guide with all parameters - Add Credentials-Management documentation - Add Testing guide with all test suites - Add Architecture documentation with diagrams - Add Troubleshooting guide with solutions - Add FAQ with common questions Wiki includes: - Complete installation instructions - Credentials management workflows - Testing procedures (40+ tests) - System architecture diagrams - Troubleshooting for common issues - FAQ covering all aspects - Cross-referenced documentation
416 lines
8.8 KiB
Markdown
416 lines
8.8 KiB
Markdown
# 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.
|
|
|
|
```bash
|
|
./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.
|
|
|
|
```bash
|
|
./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.
|
|
|
|
```bash
|
|
./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.
|
|
|
|
```bash
|
|
./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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# Container-Status
|
|
pct status <ctid>
|
|
|
|
# Container-Konfiguration
|
|
pct config <ctid>
|
|
|
|
# Container-Ressourcen
|
|
pct exec <ctid> -- free -m
|
|
pct exec <ctid> -- df -h
|
|
```
|
|
|
|
### Docker-Tests
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# Port-Scanning
|
|
nmap -p 3000,5678 <ip>
|
|
|
|
# Latenz-Test
|
|
ping -c 10 <ip>
|
|
|
|
# Bandbreite-Test
|
|
iperf3 -c <ip>
|
|
```
|
|
|
|
## 📝 Test-Protokollierung
|
|
|
|
### Log-Dateien
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
#!/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
|
|
|
|
```bash
|
|
# Tägliche Tests um 2 Uhr nachts
|
|
0 2 * * * /root/customer-installer/test-runner.sh
|
|
```
|
|
|
|
## 🚨 Troubleshooting
|
|
|
|
### Tests schlagen fehl
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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](Installation.md) - Installations-Anleitung
|
|
- [Troubleshooting](Troubleshooting.md) - Problemlösung
|
|
- [Monitoring](Monitoring.md) - Überwachung
|
|
- [API-Referenz](API-Reference.md) - API-Dokumentation
|
|
|
|
---
|
|
|
|
**Best Practices:**
|
|
1. Tests nach jeder Installation ausführen
|
|
2. Tests regelmäßig wiederholen (z.B. täglich)
|
|
3. Test-Logs für Debugging aufbewahren
|
|
4. Bei Fehlern systematisch vorgehen (Container → Docker → Services → APIs)
|
|
5. Performance-Tests bei Produktiv-Systemen durchführen
|