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