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  }