histogram_test.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package metric
  2. import (
  3. "strings"
  4. "testing"
  5. "github.com/prometheus/client_golang/prometheus/testutil"
  6. "github.com/stretchr/testify/assert"
  7. )
  8. func TestNewHistogramVec(t *testing.T) {
  9. histogramVec := NewHistogramVec(&HistogramVecOpts{
  10. Name: "duration_ms",
  11. Help: "rpc server requests duration(ms).",
  12. Buckets: []float64{1, 2, 3},
  13. })
  14. defer histogramVec.(*promHistogramVec).close()
  15. histogramVecNil := NewHistogramVec(nil)
  16. assert.NotNil(t, histogramVec)
  17. assert.Nil(t, histogramVecNil)
  18. }
  19. func TestHistogramObserve(t *testing.T) {
  20. startAgent()
  21. histogramVec := NewHistogramVec(&HistogramVecOpts{
  22. Name: "counts",
  23. Help: "rpc server requests duration(ms).",
  24. Buckets: []float64{1, 2, 3},
  25. Labels: []string{"method"},
  26. })
  27. defer histogramVec.(*promHistogramVec).close()
  28. hv, _ := histogramVec.(*promHistogramVec)
  29. hv.Observe(2, "/Users")
  30. hv.ObserveFloat(1.1, "/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"} 2
  38. counts_bucket{method="/Users",le="3"} 2
  39. counts_bucket{method="/Users",le="+Inf"} 2
  40. counts_sum{method="/Users"} 3.1
  41. counts_count{method="/Users"} 2
  42. `
  43. err := testutil.CollectAndCompare(hv.histogram, strings.NewReader(metadata+val))
  44. assert.Nil(t, err)
  45. }