mirror of
https://github.com/go-gitea/gitea.git
synced 2025-02-02 15:09:33 -05:00
test(metrics): add middleware test
This commit is contained in:
parent
0b1e3254dd
commit
056a308b2a
1
go.mod
1
go.mod
@ -242,6 +242,7 @@ require (
|
||||
github.com/klauspost/pgzip v1.2.6 // indirect
|
||||
github.com/kr/pretty v0.3.1 // indirect
|
||||
github.com/kr/text v0.2.0 // indirect
|
||||
github.com/kylelemons/godebug v1.1.0 // indirect
|
||||
github.com/libdns/libdns v0.2.2 // indirect
|
||||
github.com/magiconair/properties v1.8.7 // indirect
|
||||
github.com/mailru/easyjson v0.7.7 // indirect
|
||||
|
@ -165,7 +165,7 @@ func RouteMetrics() func(h http.Handler) http.Handler {
|
||||
route := chi.RouteContext(req.Context()).RoutePattern()
|
||||
code := strconv.Itoa(m.WrittenStatus())
|
||||
reqDurationHistogram.WithLabelValues(req.Method, code, route).Observe(time.Since(start).Seconds())
|
||||
respSizeHistogram.WithLabelValues(req.Method, code, route).Observe(float64(m.Size()))
|
||||
respSizeHistogram.WithLabelValues(req.Method, code, route).Observe(float64(m.WrittenSize()))
|
||||
size := req.ContentLength
|
||||
if size < 0 {
|
||||
size = 0
|
||||
|
@ -1,4 +1,4 @@
|
||||
package common_test
|
||||
package common
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
@ -6,25 +6,33 @@ import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"code.gitea.io/gitea/routers/common"
|
||||
|
||||
"github.com/go-chi/chi/v5"
|
||||
"github.com/prometheus/client_golang/prometheus/testutil"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestMetricsMiddlewere(t *testing.T) {
|
||||
|
||||
middleware := common.RouteMetrics()
|
||||
middleware := RouteMetrics()
|
||||
r := chi.NewRouter()
|
||||
r.Use(middleware)
|
||||
r.Get("/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
w.Write([]byte("test"))
|
||||
time.Sleep(5 * time.Millisecond)
|
||||
}))
|
||||
|
||||
testServer := httptest.NewServer(r)
|
||||
// Check all defined metrics
|
||||
verify := func(i int) {
|
||||
assert.Equal(t, testutil.CollectAndCount(reqDurationHistogram, "http_server_request_duration"), i)
|
||||
assert.Equal(t, testutil.CollectAndCount(reqSizeHistogram, "http_server_request_body_size"), i)
|
||||
assert.Equal(t, testutil.CollectAndCount(respSizeHistogram, "http_server_response_body_size"), i)
|
||||
assert.Equal(t, testutil.CollectAndCount(reqInflightGauge, "http_server_active_requests"), i)
|
||||
}
|
||||
|
||||
// Check they don't exist before making a request
|
||||
verify(0)
|
||||
_, err := http.Get(testServer.URL)
|
||||
require.NoError(t, err)
|
||||
|
||||
// Check they do exist after making the request
|
||||
verify(1)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user