feat(metric): added Dec() and Sub() in GaugeVec interface (#3666)
This commit is contained in:
@@ -16,8 +16,12 @@ type (
|
|||||||
Set(v float64, labels ...string)
|
Set(v float64, labels ...string)
|
||||||
// Inc increments labels.
|
// Inc increments labels.
|
||||||
Inc(labels ...string)
|
Inc(labels ...string)
|
||||||
|
// Dec decrements labels.
|
||||||
|
Dec(labels ...string)
|
||||||
// Add adds v to labels.
|
// Add adds v to labels.
|
||||||
Add(v float64, labels ...string)
|
Add(v float64, labels ...string)
|
||||||
|
// Sub subtracts v to labels.
|
||||||
|
Sub(v float64, labels ...string)
|
||||||
close() bool
|
close() bool
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -50,6 +54,14 @@ func NewGaugeVec(cfg *GaugeVecOpts) GaugeVec {
|
|||||||
return gv
|
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) {
|
func (gv *promGaugeVec) Inc(labels ...string) {
|
||||||
if !prometheus.Enabled() {
|
if !prometheus.Enabled() {
|
||||||
return
|
return
|
||||||
@@ -58,6 +70,13 @@ func (gv *promGaugeVec) Inc(labels ...string) {
|
|||||||
gv.gauge.WithLabelValues(labels...).Inc()
|
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) {
|
func (gv *promGaugeVec) Add(v float64, labels ...string) {
|
||||||
if !prometheus.Enabled() {
|
if !prometheus.Enabled() {
|
||||||
return
|
return
|
||||||
@@ -66,12 +85,11 @@ func (gv *promGaugeVec) Add(v float64, labels ...string) {
|
|||||||
gv.gauge.WithLabelValues(labels...).Add(v)
|
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() {
|
if !prometheus.Enabled() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
gv.gauge.WithLabelValues(labels...).Sub(v)
|
||||||
gv.gauge.WithLabelValues(labels...).Set(v)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gv *promGaugeVec) close() bool {
|
func (gv *promGaugeVec) close() bool {
|
||||||
|
|||||||
@@ -40,6 +40,23 @@ func TestGaugeInc(t *testing.T) {
|
|||||||
assert.Equal(t, float64(2), r)
|
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) {
|
func TestGaugeAdd(t *testing.T) {
|
||||||
startAgent()
|
startAgent()
|
||||||
gaugeVec := NewGaugeVec(&GaugeVecOpts{
|
gaugeVec := NewGaugeVec(&GaugeVecOpts{
|
||||||
@@ -57,6 +74,23 @@ func TestGaugeAdd(t *testing.T) {
|
|||||||
assert.Equal(t, float64(20), r)
|
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) {
|
func TestGaugeSet(t *testing.T) {
|
||||||
startAgent()
|
startAgent()
|
||||||
gaugeVec := NewGaugeVec(&GaugeVecOpts{
|
gaugeVec := NewGaugeVec(&GaugeVecOpts{
|
||||||
|
|||||||
Reference in New Issue
Block a user