registry_test.go 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package metrics
  2. import "testing"
  3. func BenchmarkRegistry(b *testing.B) {
  4. r := NewRegistry()
  5. r.Register("foo", NewCounter())
  6. b.ResetTimer()
  7. for i := 0; i < b.N; i++ {
  8. r.Each(func(string, interface{}) {})
  9. }
  10. }
  11. func TestRegistry(t *testing.T) {
  12. r := NewRegistry()
  13. r.Register("foo", NewCounter())
  14. i := 0
  15. r.Each(func(name string, iface interface{}) {
  16. i++
  17. if "foo" != name {
  18. t.Fatal(name)
  19. }
  20. if _, ok := iface.(Counter); !ok {
  21. t.Fatal(iface)
  22. }
  23. })
  24. if 1 != i {
  25. t.Fatal(i)
  26. }
  27. r.Unregister("foo")
  28. i = 0
  29. r.Each(func(string, interface{}) { i++ })
  30. if 0 != i {
  31. t.Fatal(i)
  32. }
  33. }
  34. func TestRegistryGetOrRegister(t *testing.T) {
  35. r := NewRegistry()
  36. // First metric wins with GetOrRegister
  37. _ = r.GetOrRegister("foo", NewCounter())
  38. m := r.GetOrRegister("foo", NewGauge())
  39. if _, ok := m.(Counter); !ok {
  40. t.Fatal(m)
  41. }
  42. i := 0
  43. r.Each(func(name string, iface interface{}) {
  44. i++
  45. if name != "foo" {
  46. t.Fatal(name)
  47. }
  48. if _, ok := iface.(Counter); !ok {
  49. t.Fatal(iface)
  50. }
  51. })
  52. if i != 1 {
  53. t.Fatal(i)
  54. }
  55. }