Skip to content

Commit

Permalink
feat(metric): added Dec() and Sub() in GaugeVec interface (#3666)
Browse files Browse the repository at this point in the history
  • Loading branch information
Suyghur authored Oct 26, 2023
1 parent 922efbf commit 1e2a12b
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 3 deletions.
24 changes: 21 additions & 3 deletions core/metric/gauge.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,12 @@ type (
Set(v float64, labels ...string)
// Inc increments labels.
Inc(labels ...string)
// Dec decrements labels.
Dec(labels ...string)
// Add adds v to labels.
Add(v float64, labels ...string)
// Sub subtracts v to labels.
Sub(v float64, labels ...string)
close() bool
}

Expand Down Expand Up @@ -50,6 +54,14 @@ func NewGaugeVec(cfg *GaugeVecOpts) GaugeVec {
return gv
}

func (gv *promGaugeVec) Set(v float64, labels ...string) {
if !prometheus.Enabled() {
return
}

gv.gauge.WithLabelValues(labels...).Set(v)
}

func (gv *promGaugeVec) Inc(labels ...string) {
if !prometheus.Enabled() {
return
Expand All @@ -58,6 +70,13 @@ func (gv *promGaugeVec) Inc(labels ...string) {
gv.gauge.WithLabelValues(labels...).Inc()
}

func (gv *promGaugeVec) Dec(labels ...string) {
if !prometheus.Enabled() {
return
}
gv.gauge.WithLabelValues(labels...).Dec()
}

func (gv *promGaugeVec) Add(v float64, labels ...string) {
if !prometheus.Enabled() {
return
Expand All @@ -66,12 +85,11 @@ func (gv *promGaugeVec) Add(v float64, labels ...string) {
gv.gauge.WithLabelValues(labels...).Add(v)
}

func (gv *promGaugeVec) Set(v float64, labels ...string) {
func (gv *promGaugeVec) Sub(v float64, labels ...string) {
if !prometheus.Enabled() {
return
}

gv.gauge.WithLabelValues(labels...).Set(v)
gv.gauge.WithLabelValues(labels...).Sub(v)
}

func (gv *promGaugeVec) close() bool {
Expand Down
34 changes: 34 additions & 0 deletions core/metric/gauge_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,23 @@ func TestGaugeInc(t *testing.T) {
assert.Equal(t, float64(2), r)
}

func TestGaugeDec(t *testing.T) {
startAgent()
gaugeVec := NewGaugeVec(&GaugeVecOpts{
Namespace: "rpc_client",
Subsystem: "requests",
Name: "duration_ms",
Help: "rpc server requests duration(ms).",
Labels: []string{"path"},
})
defer gaugeVec.close()
gv, _ := gaugeVec.(*promGaugeVec)
gv.Dec("/users")
gv.Dec("/users")
r := testutil.ToFloat64(gv.gauge)
assert.Equal(t, float64(-2), r)
}

func TestGaugeAdd(t *testing.T) {
startAgent()
gaugeVec := NewGaugeVec(&GaugeVecOpts{
Expand All @@ -57,6 +74,23 @@ func TestGaugeAdd(t *testing.T) {
assert.Equal(t, float64(20), r)
}

func TestGaugeSub(t *testing.T) {
startAgent()
gaugeVec := NewGaugeVec(&GaugeVecOpts{
Namespace: "rpc_client",
Subsystem: "request",
Name: "duration_ms",
Help: "rpc server requests duration(ms).",
Labels: []string{"path"},
})
defer gaugeVec.close()
gv, _ := gaugeVec.(*promGaugeVec)
gv.Sub(-100, "/classroom")
gv.Sub(30, "/classroom")
r := testutil.ToFloat64(gv.gauge)
assert.Equal(t, float64(70), r)
}

func TestGaugeSet(t *testing.T) {
startAgent()
gaugeVec := NewGaugeVec(&GaugeVecOpts{
Expand Down

0 comments on commit 1e2a12b

Please sign in to comment.