metricsinterceptor_test.go 806 B

1234567891011121314151617181920212223242526272829303132333435
  1. package internal
  2. import (
  3. "net/http"
  4. "net/http/httptest"
  5. "testing"
  6. "time"
  7. "github.com/golang/mock/gomock"
  8. "github.com/stretchr/testify/assert"
  9. "github.com/wuntsong-org/go-zero-plus/core/logx"
  10. )
  11. func TestMetricsInterceptor(t *testing.T) {
  12. c := gomock.NewController(t)
  13. defer c.Finish()
  14. logx.Disable()
  15. svr := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
  16. time.Sleep(100 * time.Millisecond)
  17. w.WriteHeader(http.StatusInternalServerError)
  18. }))
  19. defer svr.Close()
  20. req, err := http.NewRequest(http.MethodGet, svr.URL, nil)
  21. assert.NotNil(t, req)
  22. assert.Nil(t, err)
  23. interceptor := MetricsInterceptor("test", nil)
  24. req, handler := interceptor(req)
  25. resp, err := http.DefaultClient.Do(req)
  26. assert.NotNil(t, resp)
  27. assert.Nil(t, err)
  28. handler(resp, err)
  29. }