MCPcopy
hub / github.com/prometheus/client_golang / TestNewMultiTRegistry

Function TestNewMultiTRegistry

prometheus/registry_test.go:1199–1263  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

1197}
1198
1199func TestNewMultiTRegistry(t *testing.T) {
1200 treg := &tGatherer{}
1201
1202 t.Run("one registry", func(t *testing.T) {
1203 m := prometheus.NewMultiTRegistry(treg)
1204 ret, done, err := m.Gather()
1205 if err != nil {
1206 t.Error("gather failed:", err)
1207 }
1208 done()
1209 if len(ret) != 1 {
1210 t.Error("unexpected number of metric families, expected 1, got", ret)
1211 }
1212 if !treg.done {
1213 t.Error("inner transactional registry not marked as done")
1214 }
1215 })
1216
1217 reg := prometheus.NewRegistry()
1218 if err := reg.Register(prometheus.NewCounter(prometheus.CounterOpts{Name: "c1", Help: "help c1"})); err != nil {
1219 t.Error("registration failed:", err)
1220 }
1221
1222 // Note on purpose two registries will have exactly same metric family name (but with different string).
1223 // This behaviour is undefined at the moment.
1224 if err := reg.Register(prometheus.NewGauge(prometheus.GaugeOpts{Name: "g1", Help: "help g1"})); err != nil {
1225 t.Error("registration failed:", err)
1226 }
1227 treg.done = false
1228
1229 t.Run("two registries", func(t *testing.T) {
1230 m := prometheus.NewMultiTRegistry(prometheus.ToTransactionalGatherer(reg), treg)
1231 ret, done, err := m.Gather()
1232 if err != nil {
1233 t.Error("gather failed:", err)
1234 }
1235 done()
1236 if len(ret) != 3 {
1237 t.Error("unexpected number of metric families, expected 3, got", ret)
1238 }
1239 if !treg.done {
1240 t.Error("inner transactional registry not marked as done")
1241 }
1242 })
1243
1244 treg.done = false
1245 // Inject error.
1246 treg.err = errors.New("test err")
1247
1248 t.Run("two registries, one with error", func(t *testing.T) {
1249 m := prometheus.NewMultiTRegistry(prometheus.ToTransactionalGatherer(reg), treg)
1250 ret, done, err := m.Gather()
1251 if !errors.Is(err, treg.err) {
1252 t.Error("unexpected error:", err)
1253 }
1254 done()
1255 if len(ret) != 3 {
1256 t.Error("unexpected number of metric families, expected 3, got", ret)

Callers

nothing calls this directly

Calls 9

GatherMethod · 0.95
RegisterMethod · 0.95
NewMultiTRegistryFunction · 0.92
NewRegistryFunction · 0.92
NewCounterFunction · 0.92
NewGaugeFunction · 0.92
ToTransactionalGathererFunction · 0.92
RunMethod · 0.80
ErrorMethod · 0.45

Tested by

no test coverage detected