53 lines
1.9 KiB
Go
53 lines
1.9 KiB
Go
package metrics
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/prometheus/client_golang/prometheus"
|
|
|
|
outcomeDomain "proxy-pool/internal/domain/outcome"
|
|
proxyDomain "proxy-pool/internal/domain/proxy"
|
|
)
|
|
|
|
func TestGatewayCollectorRecordsOnlyFixedDimensions(t *testing.T) {
|
|
registry := prometheus.NewRegistry()
|
|
collector, err := NewGatewayCollector(registry)
|
|
if err != nil {
|
|
t.Fatalf("NewGatewayCollector() = %v", err)
|
|
}
|
|
collector.Observe(outcomeDomain.Event{Stage: outcomeDomain.StageDial, Success: true})
|
|
collector.Observe(outcomeDomain.Event{Stage: outcomeDomain.StageTunnel, Success: false})
|
|
collector.Observe(outcomeDomain.Event{Stage: outcomeDomain.StageUnspecified, Success: true})
|
|
collector.ObserveDropped()
|
|
collector.ObserveCapacityInvariant(proxyDomain.CapacityInvariant{
|
|
Violation: proxyDomain.CapacityInvariantReleaseFinished,
|
|
})
|
|
collector.ObserveCapacityInvariant(proxyDomain.CapacityInvariant{Violation: "unknown"})
|
|
|
|
assertMetricValue(t, registry, "proxy_pool_gateway_outcomes_total", map[string]string{
|
|
"stage": "DIAL", "result": "success",
|
|
}, 1)
|
|
assertMetricValue(t, registry, "proxy_pool_gateway_outcomes_total", map[string]string{
|
|
"stage": "TUNNEL", "result": "failure",
|
|
}, 1)
|
|
assertMetricValue(t, registry, "proxy_pool_gateway_outcome_queue_dropped_total", nil, 1)
|
|
assertMetricValue(t, registry, "proxy_pool_gateway_capacity_invariant_violations_total", map[string]string{
|
|
"operation": "release_finished",
|
|
}, 1)
|
|
}
|
|
|
|
func TestNewGatewayCollectorReusesRegisteredCollectors(t *testing.T) {
|
|
registry := prometheus.NewRegistry()
|
|
first, err := NewGatewayCollector(registry)
|
|
if err != nil {
|
|
t.Fatalf("first NewGatewayCollector() = %v", err)
|
|
}
|
|
second, err := NewGatewayCollector(registry)
|
|
if err != nil {
|
|
t.Fatalf("second NewGatewayCollector() = %v", err)
|
|
}
|
|
first.ObserveDropped()
|
|
second.ObserveDropped()
|
|
assertMetricValue(t, registry, "proxy_pool_gateway_outcome_queue_dropped_total", nil, 2)
|
|
}
|