github.com/lingyao2333/mo-zero@v1.4.1/core/metric/gauge_test.go (about)

     1  package metric
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/prometheus/client_golang/prometheus/testutil"
     7  	"github.com/stretchr/testify/assert"
     8  )
     9  
    10  func TestNewGaugeVec(t *testing.T) {
    11  	gaugeVec := NewGaugeVec(&GaugeVecOpts{
    12  		Namespace: "rpc_server",
    13  		Subsystem: "requests",
    14  		Name:      "duration",
    15  		Help:      "rpc server requests duration(ms).",
    16  	})
    17  	defer gaugeVec.close()
    18  	gaugeVecNil := NewGaugeVec(nil)
    19  	assert.NotNil(t, gaugeVec)
    20  	assert.Nil(t, gaugeVecNil)
    21  }
    22  
    23  func TestGaugeInc(t *testing.T) {
    24  	startAgent()
    25  	gaugeVec := NewGaugeVec(&GaugeVecOpts{
    26  		Namespace: "rpc_client2",
    27  		Subsystem: "requests",
    28  		Name:      "duration_ms",
    29  		Help:      "rpc server requests duration(ms).",
    30  		Labels:    []string{"path"},
    31  	})
    32  	defer gaugeVec.close()
    33  	gv, _ := gaugeVec.(*promGaugeVec)
    34  	gv.Inc("/users")
    35  	gv.Inc("/users")
    36  	r := testutil.ToFloat64(gv.gauge)
    37  	assert.Equal(t, float64(2), r)
    38  }
    39  
    40  func TestGaugeAdd(t *testing.T) {
    41  	startAgent()
    42  	gaugeVec := NewGaugeVec(&GaugeVecOpts{
    43  		Namespace: "rpc_client",
    44  		Subsystem: "request",
    45  		Name:      "duration_ms",
    46  		Help:      "rpc server requests duration(ms).",
    47  		Labels:    []string{"path"},
    48  	})
    49  	defer gaugeVec.close()
    50  	gv, _ := gaugeVec.(*promGaugeVec)
    51  	gv.Add(-10, "/classroom")
    52  	gv.Add(30, "/classroom")
    53  	r := testutil.ToFloat64(gv.gauge)
    54  	assert.Equal(t, float64(20), r)
    55  }
    56  
    57  func TestGaugeSet(t *testing.T) {
    58  	startAgent()
    59  	gaugeVec := NewGaugeVec(&GaugeVecOpts{
    60  		Namespace: "http_client",
    61  		Subsystem: "request",
    62  		Name:      "duration_ms",
    63  		Help:      "rpc server requests duration(ms).",
    64  		Labels:    []string{"path"},
    65  	})
    66  	gaugeVec.close()
    67  	gv, _ := gaugeVec.(*promGaugeVec)
    68  	gv.Set(666, "/users")
    69  	r := testutil.ToFloat64(gv.gauge)
    70  	assert.Equal(t, float64(666), r)
    71  }