proxy-pool/internal/platform/metrics/gateway_test.go
youfak 2af504fd49
Some checks are pending
ci / proto (push) Waiting to run
ci / test (ubuntu-latest) (push) Waiting to run
ci / test (windows-latest) (push) Waiting to run
ci / race (push) Waiting to run
ci / integration (push) Waiting to run
feat: expose gateway outcome metrics
2026-08-02 09:50:34 +08:00

45 lines
1.5 KiB
Go

package metrics
import (
"testing"
"github.com/prometheus/client_golang/prometheus"
outcomeDomain "proxy-pool/internal/domain/outcome"
)
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()
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)
}
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)
}