github.com/shuguocloud/go-zero@v1.3.0/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 histogramVec := NewHistogramVec(&HistogramVecOpts{ 25 Name: "counts", 26 Help: "rpc server requests duration(ms).", 27 Buckets: []float64{1, 2, 3}, 28 Labels: []string{"method"}, 29 }) 30 defer histogramVec.close() 31 hv, _ := histogramVec.(*promHistogramVec) 32 hv.Observe(2, "/Users") 33 34 metadata := ` 35 # HELP counts rpc server requests duration(ms). 36 # TYPE counts histogram 37 ` 38 val := ` 39 counts_bucket{method="/Users",le="1"} 0 40 counts_bucket{method="/Users",le="2"} 1 41 counts_bucket{method="/Users",le="3"} 1 42 counts_bucket{method="/Users",le="+Inf"} 1 43 counts_sum{method="/Users"} 2 44 counts_count{method="/Users"} 1 45 ` 46 47 err := testutil.CollectAndCompare(hv.histogram, strings.NewReader(metadata+val)) 48 assert.Nil(t, err) 49 }