Add Reset(map[string]string) to Metric interface
Change-Id: I289cf8796adbd6ff55f23bba7730145329de00e1
This commit is contained in:
parent
197e83f47e
commit
29ebb580db
|
@ -65,6 +65,14 @@ func (metric *counter) Set(labels map[string]string, value float64) float64 {
|
||||||
return value
|
return value
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (metric *counter) Reset(labels map[string]string) {
|
||||||
|
metric.mutex.Lock()
|
||||||
|
defer metric.mutex.Unlock()
|
||||||
|
|
||||||
|
signature := labelsToSignature(labels)
|
||||||
|
delete(metric.values, signature)
|
||||||
|
}
|
||||||
|
|
||||||
func (metric *counter) ResetAll() {
|
func (metric *counter) ResetAll() {
|
||||||
metric.mutex.Lock()
|
metric.mutex.Lock()
|
||||||
defer metric.mutex.Unlock()
|
defer metric.mutex.Unlock()
|
||||||
|
|
|
@ -70,6 +70,24 @@ func testCounter(t tester) {
|
||||||
value: `{"type":"counter","value":[{"labels":{},"value":5}]}`,
|
value: `{"type":"counter","value":[{"labels":{},"value":5}]}`,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
in: input{
|
||||||
|
steps: []func(g Counter){
|
||||||
|
func(g Counter) {
|
||||||
|
g.Set(map[string]string{"handler": "/foo"}, 13)
|
||||||
|
},
|
||||||
|
func(g Counter) {
|
||||||
|
g.Set(map[string]string{"handler": "/bar"}, 17)
|
||||||
|
},
|
||||||
|
func(g Counter) {
|
||||||
|
g.Reset(map[string]string{"handler": "/bar"})
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
out: output{
|
||||||
|
value: `{"type":"counter","value":[{"labels":{"handler":"/foo"},"value":13}]}`,
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
in: input{
|
in: input{
|
||||||
steps: []func(g Counter){
|
steps: []func(g Counter){
|
||||||
|
|
|
@ -72,6 +72,14 @@ func (metric *gauge) Set(labels map[string]string, value float64) float64 {
|
||||||
return value
|
return value
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (metric *gauge) Reset(labels map[string]string) {
|
||||||
|
metric.mutex.Lock()
|
||||||
|
defer metric.mutex.Unlock()
|
||||||
|
|
||||||
|
signature := labelsToSignature(labels)
|
||||||
|
delete(metric.values, signature)
|
||||||
|
}
|
||||||
|
|
||||||
func (metric *gauge) ResetAll() {
|
func (metric *gauge) ResetAll() {
|
||||||
metric.mutex.Lock()
|
metric.mutex.Lock()
|
||||||
defer metric.mutex.Unlock()
|
defer metric.mutex.Unlock()
|
||||||
|
|
|
@ -70,6 +70,24 @@ func testGauge(t tester) {
|
||||||
value: `{"type":"gauge","value":[{"labels":{},"value":5}]}`,
|
value: `{"type":"gauge","value":[{"labels":{},"value":5}]}`,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
in: input{
|
||||||
|
steps: []func(g Gauge){
|
||||||
|
func(g Gauge) {
|
||||||
|
g.Set(map[string]string{"handler": "/foo"}, 13)
|
||||||
|
},
|
||||||
|
func(g Gauge) {
|
||||||
|
g.Set(map[string]string{"handler": "/bar"}, 17)
|
||||||
|
},
|
||||||
|
func(g Gauge) {
|
||||||
|
g.Reset(map[string]string{"handler": "/bar"})
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
out: output{
|
||||||
|
value: `{"type":"gauge","value":[{"labels":{"handler":"/foo"},"value":13}]}`,
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
in: input{
|
in: input{
|
||||||
steps: []func(g Gauge){
|
steps: []func(g Gauge){
|
||||||
|
|
|
@ -296,6 +296,23 @@ func (h *histogram) Purge() {
|
||||||
h.lastPurge = time.Now()
|
h.lastPurge = time.Now()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (h *histogram) Reset(labels map[string]string) {
|
||||||
|
h.mutex.Lock()
|
||||||
|
defer h.mutex.Unlock()
|
||||||
|
|
||||||
|
signature := labelsToSignature(labels)
|
||||||
|
value, ok := h.values[signature]
|
||||||
|
|
||||||
|
if !ok {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, bucket := range value.buckets {
|
||||||
|
bucket.Reset()
|
||||||
|
}
|
||||||
|
delete(h.values, signature)
|
||||||
|
}
|
||||||
|
|
||||||
func (h *histogram) ResetAll() {
|
func (h *histogram) ResetAll() {
|
||||||
h.mutex.Lock()
|
h.mutex.Lock()
|
||||||
defer h.mutex.Unlock()
|
defer h.mutex.Unlock()
|
||||||
|
|
|
@ -16,6 +16,8 @@ import (
|
||||||
type Metric interface {
|
type Metric interface {
|
||||||
// Produce a JSON representation of the metric.
|
// Produce a JSON representation of the metric.
|
||||||
json.Marshaler
|
json.Marshaler
|
||||||
|
// Reset removes any stored values associated with a given labelset.
|
||||||
|
Reset(labels map[string]string)
|
||||||
// Reset the parent metrics and delete all child metrics.
|
// Reset the parent metrics and delete all child metrics.
|
||||||
ResetAll()
|
ResetAll()
|
||||||
// Produce a human-consumable representation of the metric.
|
// Produce a human-consumable representation of the metric.
|
||||||
|
|
Loading…
Reference in New Issue