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 }