github.com/shuguocloud/go-zero@v1.3.0/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  	gaugeVec := NewGaugeVec(&GaugeVecOpts{
    25  		Namespace: "rpc_client2",
    26  		Subsystem: "requests",
    27  		Name:      "duration_ms",
    28  		Help:      "rpc server requests duration(ms).",
    29  		Labels:    []string{"path"},
    30  	})
    31  	defer gaugeVec.close()
    32  	gv, _ := gaugeVec.(*promGaugeVec)
    33  	gv.Inc("/users")
    34  	gv.Inc("/users")
    35  	r := testutil.ToFloat64(gv.gauge)
    36  	assert.Equal(t, float64(2), r)
    37  }
    38  
    39  func TestGaugeAdd(t *testing.T) {
    40  	gaugeVec := NewGaugeVec(&GaugeVecOpts{
    41  		Namespace: "rpc_client",
    42  		Subsystem: "request",
    43  		Name:      "duration_ms",
    44  		Help:      "rpc server requests duration(ms).",
    45  		Labels:    []string{"path"},
    46  	})
    47  	defer gaugeVec.close()
    48  	gv, _ := gaugeVec.(*promGaugeVec)
    49  	gv.Add(-10, "/classroom")
    50  	gv.Add(30, "/classroom")
    51  	r := testutil.ToFloat64(gv.gauge)
    52  	assert.Equal(t, float64(20), r)
    53  }
    54  
    55  func TestGaugeSet(t *testing.T) {
    56  	gaugeVec := NewGaugeVec(&GaugeVecOpts{
    57  		Namespace: "http_client",
    58  		Subsystem: "request",
    59  		Name:      "duration_ms",
    60  		Help:      "rpc server requests duration(ms).",
    61  		Labels:    []string{"path"},
    62  	})
    63  	gaugeVec.close()
    64  	gv, _ := gaugeVec.(*promGaugeVec)
    65  	gv.Set(666, "/users")
    66  	r := testutil.ToFloat64(gv.gauge)
    67  	assert.Equal(t, float64(666), r)
    68  }