histogram_test.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package metric
  2. import (
  3. "strings"
  4. "testing"
  5. "github.com/prometheus/client_golang/prometheus/testutil"
  6. "github.com/stretchr/testify/assert"
  7. "github.com/zeromicro/go-zero/core/proc"
  8. )
  9. func TestNewHistogramVec(t *testing.T) {
  10. histogramVec := NewHistogramVec(&HistogramVecOpts{
  11. Name: "duration_ms",
  12. Help: "rpc server requests duration(ms).",
  13. Buckets: []float64{1, 2, 3},
  14. })
  15. defer histogramVec.close()
  16. histogramVecNil := NewHistogramVec(nil)
  17. assert.NotNil(t, histogramVec)
  18. assert.Nil(t, histogramVecNil)
  19. }
  20. func TestHistogramObserve(t *testing.T) {
  21. startAgent()
  22. histogramVec := NewHistogramVec(&HistogramVecOpts{
  23. Name: "counts",
  24. Help: "rpc server requests duration(ms).",
  25. Buckets: []float64{1, 2, 3},
  26. Labels: []string{"method"},
  27. })
  28. defer histogramVec.close()
  29. hv, _ := histogramVec.(*promHistogramVec)
  30. hv.Observe(2, "/Users")
  31. metadata := `
  32. # HELP counts rpc server requests duration(ms).
  33. # TYPE counts histogram
  34. `
  35. val := `
  36. counts_bucket{method="/Users",le="1"} 0
  37. counts_bucket{method="/Users",le="2"} 1
  38. counts_bucket{method="/Users",le="3"} 1
  39. counts_bucket{method="/Users",le="+Inf"} 1
  40. counts_sum{method="/Users"} 2
  41. counts_count{method="/Users"} 1
  42. `
  43. err := testutil.CollectAndCompare(hv.histogram, strings.NewReader(metadata+val))
  44. assert.Nil(t, err)
  45. proc.Shutdown()
  46. }