Skip to content

Commit daafa0d

Browse files
authored
chore: add missing prometheus tests for UNKNOWN/STATIC paths (coder#17446)
1 parent 67a9127 commit daafa0d

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed

coderd/httpmw/prometheus_test.go

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,64 @@ func TestPrometheus(t *testing.T) {
106106
require.Equal(t, "/api/v2/users/{user}", concurrentRequests["path"])
107107
require.Equal(t, "GET", concurrentRequests["method"])
108108
})
109+
110+
t.Run("StaticRoute", func(t *testing.T) {
111+
t.Parallel()
112+
reg := prometheus.NewRegistry()
113+
promMW := httpmw.Prometheus(reg)
114+
115+
r := chi.NewRouter()
116+
r.Use(promMW)
117+
r.NotFound(func(w http.ResponseWriter, r *http.Request) {
118+
w.WriteHeader(http.StatusNotFound)
119+
})
120+
r.Get("/static/", func(w http.ResponseWriter, r *http.Request) {
121+
w.WriteHeader(http.StatusOK)
122+
})
123+
124+
req := httptest.NewRequest("GET", "/static/bundle.js", nil)
125+
sw := &tracing.StatusWriter{ResponseWriter: httptest.NewRecorder()}
126+
127+
r.ServeHTTP(sw, req)
128+
129+
metrics, err := reg.Gather()
130+
require.NoError(t, err)
131+
require.Greater(t, len(metrics), 0)
132+
metricLabels := getMetricLabels(metrics)
133+
134+
reqProcessed, ok := metricLabels["coderd_api_requests_processed_total"]
135+
require.True(t, ok, "coderd_api_requests_processed_total metric not found")
136+
require.Equal(t, "STATIC", reqProcessed["path"])
137+
require.Equal(t, "GET", reqProcessed["method"])
138+
})
139+
140+
t.Run("UnknownRoute", func(t *testing.T) {
141+
t.Parallel()
142+
reg := prometheus.NewRegistry()
143+
promMW := httpmw.Prometheus(reg)
144+
145+
r := chi.NewRouter()
146+
r.Use(promMW)
147+
r.NotFound(func(w http.ResponseWriter, r *http.Request) {
148+
w.WriteHeader(http.StatusNotFound)
149+
})
150+
r.Get("/api/v2/users/{user}", func(w http.ResponseWriter, r *http.Request) {})
151+
152+
req := httptest.NewRequest("GET", "/api/v2/weird_path", nil)
153+
sw := &tracing.StatusWriter{ResponseWriter: httptest.NewRecorder()}
154+
155+
r.ServeHTTP(sw, req)
156+
157+
metrics, err := reg.Gather()
158+
require.NoError(t, err)
159+
require.Greater(t, len(metrics), 0)
160+
metricLabels := getMetricLabels(metrics)
161+
162+
reqProcessed, ok := metricLabels["coderd_api_requests_processed_total"]
163+
require.True(t, ok, "coderd_api_requests_processed_total metric not found")
164+
require.Equal(t, "UNKNOWN", reqProcessed["path"])
165+
require.Equal(t, "GET", reqProcessed["method"])
166+
})
109167
}
110168

111169
func getMetricLabels(metrics []*cm.MetricFamily) map[string]map[string]string {

0 commit comments

Comments
 (0)