45 lines
1.2 KiB
Go
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
|
|
}
|