MCPcopy Create free account
hub / github.com/cortexproject/cortex / TestUnoptimizedRegexRejectedMetric

Function TestUnoptimizedRegexRejectedMetric

pkg/ingester/metrics_test.go:47–99  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

45}
46
47func TestUnoptimizedRegexRejectedMetric(t *testing.T) {
48 ingestionRate := util_math.NewEWMARate(0.2, instanceIngestionRateTickInterval)
49 inflightPushRequests := util_math.MaxTracker{}
50 maxInflightQueryRequests := util_math.MaxTracker{}
51
52 t.Run("rejected metric increments correctly", func(t *testing.T) {
53 reg := prometheus.NewRegistry()
54 m := newIngesterMetrics(reg, false, false, false,
55 func() *InstanceLimits { return &InstanceLimits{} },
56 ingestionRate, &inflightPushRequests, &maxInflightQueryRequests, false, true)
57
58 require.NotNil(t, m.unoptimizedRegexRejectedTotal)
59
60 // Test incrementing different rejection reasons
61 m.unoptimizedRegexRejectedTotal.WithLabelValues("user1", "pattern_length").Inc()
62 m.unoptimizedRegexRejectedTotal.WithLabelValues("user1", "cardinality").Inc()
63 m.unoptimizedRegexRejectedTotal.WithLabelValues("user1", "cardinality").Inc()
64 m.unoptimizedRegexRejectedTotal.WithLabelValues("user2", "total_value_length").Inc()
65
66 err := testutil.GatherAndCompare(reg, bytes.NewBufferString(`
67 # HELP cortex_ingester_unoptimized_regex_rejected_requests_total Total number of requests rejected due to unoptimized regex matcher limits per user and reason.
68 # TYPE cortex_ingester_unoptimized_regex_rejected_requests_total counter
69 cortex_ingester_unoptimized_regex_rejected_requests_total{reason="cardinality",user="user1"} 2
70 cortex_ingester_unoptimized_regex_rejected_requests_total{reason="pattern_length",user="user1"} 1
71 cortex_ingester_unoptimized_regex_rejected_requests_total{reason="total_value_length",user="user2"} 1
72 `), "cortex_ingester_unoptimized_regex_rejected_requests_total")
73 require.NoError(t, err)
74 })
75
76 t.Run("metric cleanup works correctly", func(t *testing.T) {
77 reg := prometheus.NewRegistry()
78 m := newIngesterMetrics(reg, false, false, false,
79 func() *InstanceLimits { return &InstanceLimits{} },
80 ingestionRate, &inflightPushRequests, &maxInflightQueryRequests, false, true)
81
82 require.NotNil(t, m.unoptimizedRegexRejectedTotal)
83
84 // Add metrics for multiple users
85 m.unoptimizedRegexRejectedTotal.WithLabelValues("user1", "pattern_length").Inc()
86 m.unoptimizedRegexRejectedTotal.WithLabelValues("user2", "cardinality").Inc()
87
88 // Delete user1 metrics
89 m.deletePerUserMetrics("user1")
90
91 // Only user2 metrics should remain
92 err := testutil.GatherAndCompare(reg, bytes.NewBufferString(`
93 # HELP cortex_ingester_unoptimized_regex_rejected_requests_total Total number of requests rejected due to unoptimized regex matcher limits per user and reason.
94 # TYPE cortex_ingester_unoptimized_regex_rejected_requests_total counter
95 cortex_ingester_unoptimized_regex_rejected_requests_total{reason="cardinality",user="user2"} 1
96 `), "cortex_ingester_unoptimized_regex_rejected_requests_total")
97 require.NoError(t, err)
98 })
99}
100
101func TestIngesterMetrics(t *testing.T) {
102 mainReg := prometheus.NewPedanticRegistry()

Callers

nothing calls this directly

Calls 4

newIngesterMetricsFunction · 0.85
RunMethod · 0.65
IncMethod · 0.45
deletePerUserMetricsMethod · 0.45

Tested by

no test coverage detected