veza/veza-backend-api/internal/metrics/circuit_breaker_test.go
2025-12-16 11:23:49 -05:00

45 lines
1.2 KiB
Go

package metrics
import (
"testing"
"github.com/sony/gobreaker"
)
func TestUpdateCircuitBreakerMetrics(t *testing.T) {
name := "test-circuit"
// Test état Closed
counts := gobreaker.Counts{
Requests: 10,
TotalSuccesses: 8,
TotalFailures: 2,
ConsecutiveSuccesses: 5,
ConsecutiveFailures: 0,
}
// Vérifier qu'il n'y a pas d'erreur lors de la mise à jour
UpdateCircuitBreakerMetrics(name, counts, gobreaker.StateClosed)
// Test état HalfOpen
UpdateCircuitBreakerMetrics(name, counts, gobreaker.StateHalfOpen)
// Test état Open
counts.ConsecutiveFailures = 5
UpdateCircuitBreakerMetrics(name, counts, gobreaker.StateOpen)
// Si on arrive ici sans erreur, c'est bon
}
func TestRecordCircuitBreakerRequest(t *testing.T) {
name := "test-request"
// Enregistrer différents types de résultats
RecordCircuitBreakerRequest(name, "success")
RecordCircuitBreakerRequest(name, "failure")
RecordCircuitBreakerRequest(name, "rejected")
RecordCircuitBreakerRequest(name, "success")
// Les métriques sont enregistrées, on vérifie juste qu'il n'y a pas d'erreur
// (les valeurs exactes dépendent de l'état global du registre Prometheus)
// Si on arrive ici sans erreur, c'est bon
}