@@ -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 {