9.5 KiB
9.5 KiB
Ping Service Testing Setup - Trace-Bullet Backend Testing
Übersicht
Dieses Docker Compose Setup ermöglicht das isolierte Testen des Ping Service Backends im Rahmen der Trace-Bullet Implementierung. Es stellt eine minimale, aber vollständige Testumgebung bereit, die alle notwendigen Abhängigkeiten enthält, ohne die Hauptentwicklungsumgebung zu beeinträchtigen.
Architektur
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Ping Service │ │ Consul │ │ PostgreSQL │
│ Port: 8082 │◄──►│ Port: 8501 │ │ Port: 5433 │
│ (Test Target) │ │ (Discovery) │ │ (Database) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Prometheus │ │ Redis │ │ Test Runner │
│ Port: 9091 │ │ Port: 6380 │ │ (Automated) │
│ (Monitoring) │ │ (Cache) │ │ (Tests) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
Enthaltene Services
1. Ping Service (Hauptkomponente)
- Port: 8082
- Debug Port: 5005 (falls DEBUG=true)
- Health Check:
/actuator/health - Metriken:
/actuator/prometheus - Circuit Breaker:
/actuator/circuitbreakers
2. PostgreSQL Test-Datenbank
- Port: 5433 (um Konflikte mit der Hauptdatenbank zu vermeiden)
- Database:
pingtest - User:
testuser - Password:
testpass
3. Redis Cache
- Port: 6380 (um Konflikte zu vermeiden)
- Verwendung: Event Store und Caching
4. Consul Service Discovery
- Port: 8501 (um Konflikte zu vermeiden)
- Web UI: http://localhost:8501
- Verwendung: Service Registration und Discovery
5. Prometheus Monitoring
- Port: 9091 (um Konflikte zu vermeiden)
- Web UI: http://localhost:9091
- Verwendung: Metriken-Sammlung und Monitoring
6. Test Runner (Optional)
- Automatisierte Tests für alle Endpoints
- Läuft nur mit
--profile test
Schnellstart
1. Umgebung starten
# Basis-Setup starten (ohne automatische Tests)
docker-compose -f docker-compose-ping-test.yml up -d
# Mit automatischen Tests
docker-compose -f docker-compose-ping-test.yml --profile test up -d
2. Status prüfen
# Alle Container-Status anzeigen
docker-compose -f docker-compose-ping-test.yml ps
# Logs des Ping Service anzeigen
docker-compose -f docker-compose-ping-test.yml logs -f ping-service
# Health Checks aller Services
docker-compose -f docker-compose-ping-test.yml ps --format "table {{.Service}}\t{{.Status}}\t{{.Ports}}"
3. Manuelle Tests durchführen
Health Check
curl http://localhost:8082/actuator/health
Service Info
curl http://localhost:8082/actuator/info
Circuit Breaker Status
curl http://localhost:8082/actuator/circuitbreakers
Prometheus Metriken
curl http://localhost:8082/actuator/prometheus
4. Umgebung stoppen und aufräumen
# Services stoppen
docker-compose -f docker-compose-ping-test.yml down
# Services stoppen und Volumes löschen
docker-compose -f docker-compose-ping-test.yml down -v
# Zusätzlich Images löschen
docker-compose -f docker-compose-ping-test.yml down -v --rmi all
Erweiterte Konfiguration
Umgebungsvariablen
Erstellen Sie eine .env.ping-test Datei für benutzerdefinierte Konfiguration:
# Database Configuration
POSTGRES_USER=mytestuser
POSTGRES_PASSWORD=mytestpassword
POSTGRES_DB=mypingtest
# Debug Configuration
DEBUG=true
# JVM Configuration
JAVA_OPTS=-Xmx1g -XX:+UseG1GC -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005
Laden Sie die Konfiguration:
docker-compose -f docker-compose-ping-test.yml --env-file .env.ping-test up -d
Debug-Modus aktivieren
- Debug-Modus starten:
DEBUG=true docker-compose -f docker-compose-ping-test.yml up -d ping-service
- IDE mit Remote Debug verbinden:
- Host:
localhost - Port:
5005 - Typ:
Attach to remote JVM
- Host:
Monitoring und Überwachung
Prometheus Dashboard
- URL: http://localhost:9091
- Verfügbare Metriken:
http_server_requests_secondsjvm_memory_used_bytesresilience4j_circuitbreaker_state- Custom Application Metriken
Consul Web UI
- URL: http://localhost:8501
- Zeigt registrierte Services
- Service Health Status
- Service Discovery Informationen
Troubleshooting
Häufige Probleme
1. Port-Konflikte
# Prüfen Sie, welche Ports bereits verwendet werden
netstat -tlnp | grep -E ':(8082|5433|6380|8501|9091)'
# Oder mit ss
ss -tlnp | grep -E ':(8082|5433|6380|8501|9091)'
2. Service startet nicht
# Detaillierte Logs anzeigen
docker-compose -f docker-compose-ping-test.yml logs ping-service
# Container Status prüfen
docker inspect ping-test-service
3. Consul Connection Probleme
# Consul Logs prüfen
docker-compose -f docker-compose-ping-test.yml logs consul-test
# Consul Services anzeigen
curl http://localhost:8501/v1/agent/services
4. Database Connection Issues
# PostgreSQL Logs
docker-compose -f docker-compose-ping-test.yml logs postgres-test
# Direkte Verbindung testen
docker exec -it ping-test-postgres psql -U testuser -d pingtest
Performance-Optimierung
1. Speicher-Limits setzen
# In docker-compose-ping-test.yml ergänzen:
services:
ping-service:
deploy:
resources:
limits:
memory: 1G
reservations:
memory: 512M
2. Build-Cache nutzen
# Build mit Cache
docker-compose -f docker-compose-ping-test.yml build --parallel
# Build ohne Cache (bei Problemen)
docker-compose -f docker-compose-ping-test.yml build --no-cache ping-service
Test-Szenarien
1. Circuit Breaker Tests
# Circuit Breaker Status abrufen
curl http://localhost:8082/actuator/circuitbreakers
# Mehrfache Requests senden um Circuit Breaker zu testen
for i in {1..10}; do
curl -w "Response time: %{time_total}s\n" http://localhost:8082/actuator/health
sleep 1
done
2. Load Testing
# Mit Apache Bench (falls installiert)
ab -n 100 -c 10 http://localhost:8082/actuator/health
# Mit curl (einfacher Loop)
for i in {1..50}; do
curl -s http://localhost:8082/actuator/health > /dev/null &
done
wait
3. Service Discovery Tests
# Service Registration prüfen
curl http://localhost:8501/v1/agent/services | jq .
# Health Checks in Consul
curl http://localhost:8501/v1/health/service/ping-service | jq .
Continuous Integration
GitHub Actions Beispiel
name: Ping Service Tests
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Start Test Environment
run: |
docker-compose -f docker-compose-ping-test.yml up -d
- name: Wait for Services
run: |
timeout 300 bash -c 'until curl -f http://localhost:8082/actuator/health; do sleep 5; done'
- name: Run Tests
run: |
docker-compose -f docker-compose-ping-test.yml --profile test up test-runner
- name: Cleanup
run: |
docker-compose -f docker-compose-ping-test.yml down -v
Best Practices
1. Vor dem Testen
- Stellen Sie sicher, dass keine anderen Services auf den Test-Ports laufen
- Überprüfen Sie verfügbaren Speicher und CPU-Ressourcen
- Löschen Sie alte Test-Volumes bei Bedarf
2. Während des Testens
- Nutzen Sie die Health Check Endpoints
- Überwachen Sie Logs in Echtzeit
- Prüfen Sie Metriken in Prometheus
3. Nach dem Testen
- Stoppen und entfernen Sie Test-Container
- Löschen Sie Test-Volumes um Speicher zu sparen
- Dokumentieren Sie gefundene Issues
Erweiterungen
Zusätzliche Services hinzufügen
Um weitere Services zu testen, erweitern Sie die docker-compose-ping-test.yml:
services:
another-service:
build:
context: .
dockerfile: path/to/Dockerfile
depends_on:
- ping-service
networks:
- ping-test-network
Grafana für erweiterte Visualisierung
services:
grafana-test:
image: grafana/grafana:latest
ports:
- "3001:3000"
environment:
- GF_SECURITY_ADMIN_PASSWORD=admin
networks:
- ping-test-network
Support
Bei Problemen oder Fragen:
- Prüfen Sie die Logs:
docker-compose -f docker-compose-ping-test.yml logs - Überprüfen Sie die Container-Status:
docker-compose -f docker-compose-ping-test.yml ps - Konsultieren Sie die Hauptdokumentation in
README.md - Überprüfen Sie die Service-spezifische Konfiguration in
temp/ping-service/src/main/resources/application.yml
Erstellt für: Meldestelle Projekt - Ping Service Trace-Bullet Testing Version: 1.0.0 Datum: 2025-09-08