41 lines
961 B
Go
41 lines
961 B
Go
|
package metric
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
"time"
|
||
|
|
||
|
"github.com/prometheus/common/model"
|
||
|
"github.com/stretchr/testify/assert"
|
||
|
)
|
||
|
|
||
|
func TestGaugeExpiration(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
cfg := GaugeConfig{
|
||
|
Action: "inc",
|
||
|
}
|
||
|
|
||
|
gag, err := NewGauges("test1", "HELP ME!!!!!", cfg, 1)
|
||
|
assert.Nil(t, err)
|
||
|
|
||
|
// Create a label and increment the gauge
|
||
|
lbl1 := model.LabelSet{}
|
||
|
lbl1["test"] = "app"
|
||
|
gag.With(lbl1).Inc()
|
||
|
|
||
|
// Collect the metrics, should still find the metric in the map
|
||
|
collect(gag)
|
||
|
assert.Contains(t, gag.metrics, lbl1.Fingerprint())
|
||
|
|
||
|
time.Sleep(1100 * time.Millisecond) // Wait just past our max idle of 1 sec
|
||
|
|
||
|
//Add another gauge with new label val
|
||
|
lbl2 := model.LabelSet{}
|
||
|
lbl2["test"] = "app2"
|
||
|
gag.With(lbl2).Inc()
|
||
|
|
||
|
// Collect the metrics, first gauge should have expired and removed, second should still be present
|
||
|
collect(gag)
|
||
|
assert.NotContains(t, gag.metrics, lbl1.Fingerprint())
|
||
|
assert.Contains(t, gag.metrics, lbl2.Fingerprint())
|
||
|
}
|