Skip to content

Commit 056a308

Browse files
committed
test(metrics): add middleware test
1 parent 0b1e325 commit 056a308

File tree

3 files changed

+18
-9
lines changed

3 files changed

+18
-9
lines changed

go.mod

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,7 @@ require (
242242
github.com/klauspost/pgzip v1.2.6 // indirect
243243
github.com/kr/pretty v0.3.1 // indirect
244244
github.com/kr/text v0.2.0 // indirect
245+
github.com/kylelemons/godebug v1.1.0 // indirect
245246
github.com/libdns/libdns v0.2.2 // indirect
246247
github.com/magiconair/properties v1.8.7 // indirect
247248
github.com/mailru/easyjson v0.7.7 // indirect

routers/common/middleware.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ func RouteMetrics() func(h http.Handler) http.Handler {
165165
route := chi.RouteContext(req.Context()).RoutePattern()
166166
code := strconv.Itoa(m.WrittenStatus())
167167
reqDurationHistogram.WithLabelValues(req.Method, code, route).Observe(time.Since(start).Seconds())
168-
respSizeHistogram.WithLabelValues(req.Method, code, route).Observe(float64(m.Size()))
168+
respSizeHistogram.WithLabelValues(req.Method, code, route).Observe(float64(m.WrittenSize()))
169169
size := req.ContentLength
170170
if size < 0 {
171171
size = 0

routers/common/middleware_test.go

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,38 @@
1-
package common_test
1+
package common
22

33
import (
44
"net/http"
55
"net/http/httptest"
66
"testing"
77
"time"
88

9-
"code.gitea.io/gitea/routers/common"
10-
119
"github.com/go-chi/chi/v5"
10+
"github.com/prometheus/client_golang/prometheus/testutil"
11+
"github.com/stretchr/testify/assert"
1212
"github.com/stretchr/testify/require"
1313
)
1414

1515
func TestMetricsMiddlewere(t *testing.T) {
16-
17-
middleware := common.RouteMetrics()
16+
middleware := RouteMetrics()
1817
r := chi.NewRouter()
1918
r.Use(middleware)
2019
r.Get("/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
2120
w.Write([]byte("test"))
2221
time.Sleep(5 * time.Millisecond)
2322
}))
24-
2523
testServer := httptest.NewServer(r)
26-
24+
// Check all defined metrics
25+
verify := func(i int) {
26+
assert.Equal(t, testutil.CollectAndCount(reqDurationHistogram, "http_server_request_duration"), i)
27+
assert.Equal(t, testutil.CollectAndCount(reqSizeHistogram, "http_server_request_body_size"), i)
28+
assert.Equal(t, testutil.CollectAndCount(respSizeHistogram, "http_server_response_body_size"), i)
29+
assert.Equal(t, testutil.CollectAndCount(reqInflightGauge, "http_server_active_requests"), i)
30+
}
31+
32+
// Check they don't exist before making a request
33+
verify(0)
2734
_, err := http.Get(testServer.URL)
2835
require.NoError(t, err)
29-
36+
// Check they do exist after making the request
37+
verify(1)
3038
}

0 commit comments

Comments
 (0)