我们可以断言使用以下方法注册和收集指标testutil.CollectAndCount
and testutil.CollectAndCompare
等等。但是有没有办法通过指标名称和标签来收集指标(如果是)CounterVec
.
以供参考https://godoc.org/github.com/prometheus/client_golang/prometheus/testutil https://godoc.org/github.com/prometheus/client_golang/prometheus/testutil
据我了解您的问题,您想要使用 CounterVec 等指标集合中的特定标签来测试指标的值。
您可以通过使用ToFloat64
功能结合WithLabelsValue
函数,如下例所示:
import (
"testing"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/testutil"
"github.com/stretchr/testify/assert"
)
func TestVecMetricT(t *testing.T) {
assert := assert.New(t)
var C = prometheus.NewCounterVec(prometheus.CounterOpts{
Name: "C",
Help: "Help",
}, []string{"subname"},
)
prometheus.MustRegister(C)
C.WithLabelValues("firstLabel").Inc()
C.WithLabelValues("secondLabel").Inc()
C.WithLabelValues("thirdLabel").Inc()
C.WithLabelValues("thirdLabel").Inc()
// collected three metrics
assert.Equal(3, testutil.CollectAndCount(C))
// check the expected values using the ToFloat64 function
assert.Equal(float64(1), testutil.ToFloat64(C.WithLabelValues("firstLabel")))
assert.Equal(float64(1), testutil.ToFloat64(C.WithLabelValues("secondLabel")))
assert.Equal(float64(2), testutil.ToFloat64(C.WithLabelValues("thirdLabel")))
}
如果我错了,请纠正我,但我不认为有办法使用testutil
包以从 CounterVec 等指标集合中获取标签值切片。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)