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 }