@@ -106,6 +106,64 @@ func TestPrometheus(t *testing.T) {
106
106
require .Equal (t , "/api/v2/users/{user}" , concurrentRequests ["path" ])
107
107
require .Equal (t , "GET" , concurrentRequests ["method" ])
108
108
})
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
+ })
109
167
}
110
168
111
169
func getMetricLabels (metrics []* cm.MetricFamily ) map [string ]map [string ]string {
0 commit comments