(t *testing.T)
| 1197 | } |
| 1198 | |
| 1199 | func 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) |
nothing calls this directly
no test coverage detected