59 lines
2.5 KiB
Go
59 lines
2.5 KiB
Go
package metrics
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/prometheus/client_golang/prometheus"
|
|
|
|
controllerExtraction "proxy-pool/internal/controller/extraction"
|
|
)
|
|
|
|
func TestExtractionCollectorRecordsOnlyFixedResults(t *testing.T) {
|
|
registry := prometheus.NewRegistry()
|
|
collector, err := NewExtractionCollector(registry)
|
|
if err != nil {
|
|
t.Fatalf("NewExtractionCollector() error = %v", err)
|
|
}
|
|
collector.ObserveExtraction(controllerExtraction.MetricsEvent{
|
|
Result: controllerExtraction.MetricComplete, Requested: 2, Returned: 2,
|
|
})
|
|
collector.ObserveExtraction(controllerExtraction.MetricsEvent{
|
|
Result: controllerExtraction.MetricPartial, Requested: 3, Returned: 1,
|
|
})
|
|
collector.ObserveExtraction(controllerExtraction.MetricsEvent{
|
|
Result: controllerExtraction.MetricUnavailable, Requested: 1,
|
|
})
|
|
collector.ObserveExtraction(controllerExtraction.MetricsEvent{
|
|
Result: "client-a", Requested: 10, Returned: 10,
|
|
})
|
|
|
|
assertMetricValue(t, registry, "proxy_pool_controller_extraction_requests_total", map[string]string{"result": "complete"}, 1)
|
|
assertMetricValue(t, registry, "proxy_pool_controller_extraction_requests_total", map[string]string{"result": "partial"}, 1)
|
|
assertMetricValue(t, registry, "proxy_pool_controller_extraction_requests_total", map[string]string{"result": "unavailable"}, 1)
|
|
assertMetricValue(t, registry, "proxy_pool_controller_extraction_requested_proxies_total", nil, 6)
|
|
assertMetricValue(t, registry, "proxy_pool_controller_extraction_returned_proxies_total", nil, 3)
|
|
}
|
|
|
|
func TestNewExtractionCollectorReusesRegisteredCollectors(t *testing.T) {
|
|
registry := prometheus.NewRegistry()
|
|
first, err := NewExtractionCollector(registry)
|
|
if err != nil {
|
|
t.Fatalf("first NewExtractionCollector() error = %v", err)
|
|
}
|
|
second, err := NewExtractionCollector(registry)
|
|
if err != nil {
|
|
t.Fatalf("second NewExtractionCollector() error = %v", err)
|
|
}
|
|
first.ObserveExtraction(controllerExtraction.MetricsEvent{
|
|
Result: controllerExtraction.MetricEmpty, Requested: 1,
|
|
})
|
|
second.ObserveExtraction(controllerExtraction.MetricsEvent{
|
|
Result: controllerExtraction.MetricComplete, Requested: 1, Returned: 1,
|
|
})
|
|
|
|
assertMetricValue(t, registry, "proxy_pool_controller_extraction_requests_total", map[string]string{"result": "empty"}, 1)
|
|
assertMetricValue(t, registry, "proxy_pool_controller_extraction_requests_total", map[string]string{"result": "complete"}, 1)
|
|
assertMetricValue(t, registry, "proxy_pool_controller_extraction_requested_proxies_total", nil, 2)
|
|
assertMetricValue(t, registry, "proxy_pool_controller_extraction_returned_proxies_total", nil, 1)
|
|
}
|