github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/libraries/rcrowley/go-metrics/registry_test.go (about)

     1  package metrics
     2  
     3  import "testing"
     4  
     5  func BenchmarkRegistry(b *testing.B) {
     6  	r := NewRegistry()
     7  	r.Register("foo", NewCounter())
     8  	b.ResetTimer()
     9  	for i := 0; i < b.N; i++ {
    10  		r.Each(func(string, interface{}) {})
    11  	}
    12  }
    13  
    14  func TestRegistry(t *testing.T) {
    15  	r := NewRegistry()
    16  	r.Register("foo", NewCounter())
    17  	i := 0
    18  	r.Each(func(name string, iface interface{}) {
    19  		i++
    20  		if "foo" != name {
    21  			t.Fatal(name)
    22  		}
    23  		if _, ok := iface.(Counter); !ok {
    24  			t.Fatal(iface)
    25  		}
    26  	})
    27  	if 1 != i {
    28  		t.Fatal(i)
    29  	}
    30  	r.Unregister("foo")
    31  	i = 0
    32  	r.Each(func(string, interface{}) { i++ })
    33  	if 0 != i {
    34  		t.Fatal(i)
    35  	}
    36  }
    37  
    38  func TestRegistryDuplicate(t *testing.T) {
    39  	r := NewRegistry()
    40  	if err := r.Register("foo", NewCounter()); nil != err {
    41  		t.Fatal(err)
    42  	}
    43  	if err := r.Register("foo", NewGauge()); nil == err {
    44  		t.Fatal(err)
    45  	}
    46  	i := 0
    47  	r.Each(func(name string, iface interface{}) {
    48  		i++
    49  		if _, ok := iface.(Counter); !ok {
    50  			t.Fatal(iface)
    51  		}
    52  	})
    53  	if 1 != i {
    54  		t.Fatal(i)
    55  	}
    56  }
    57  
    58  func TestRegistryGet(t *testing.T) {
    59  	r := NewRegistry()
    60  	r.Register("foo", NewCounter())
    61  	if count := r.Get("foo").(Counter).Count(); 0 != count {
    62  		t.Fatal(count)
    63  	}
    64  	r.Get("foo").(Counter).Inc(1)
    65  	if count := r.Get("foo").(Counter).Count(); 1 != count {
    66  		t.Fatal(count)
    67  	}
    68  }
    69  
    70  func TestRegistryGetOrRegister(t *testing.T) {
    71  	r := NewRegistry()
    72  
    73  	// First metric wins with GetOrRegister
    74  	_ = r.GetOrRegister("foo", NewCounter())
    75  	m := r.GetOrRegister("foo", NewGauge())
    76  	if _, ok := m.(Counter); !ok {
    77  		t.Fatal(m)
    78  	}
    79  
    80  	i := 0
    81  	r.Each(func(name string, iface interface{}) {
    82  		i++
    83  		if name != "foo" {
    84  			t.Fatal(name)
    85  		}
    86  		if _, ok := iface.(Counter); !ok {
    87  			t.Fatal(iface)
    88  		}
    89  	})
    90  	if i != 1 {
    91  		t.Fatal(i)
    92  	}
    93  }
    94  
    95  func TestRegistryGetOrRegisterWithLazyInstantiation(t *testing.T) {
    96  	r := NewRegistry()
    97  
    98  	// First metric wins with GetOrRegister
    99  	_ = r.GetOrRegister("foo", NewCounter)
   100  	m := r.GetOrRegister("foo", NewGauge)
   101  	if _, ok := m.(Counter); !ok {
   102  		t.Fatal(m)
   103  	}
   104  
   105  	i := 0
   106  	r.Each(func(name string, iface interface{}) {
   107  		i++
   108  		if name != "foo" {
   109  			t.Fatal(name)
   110  		}
   111  		if _, ok := iface.(Counter); !ok {
   112  			t.Fatal(iface)
   113  		}
   114  	})
   115  	if i != 1 {
   116  		t.Fatal(i)
   117  	}
   118  }
   119  
   120  func TestPrefixedChildRegistryGetOrRegister(t *testing.T) {
   121  	r := NewRegistry()
   122  	pr := NewPrefixedChildRegistry(r, "prefix.")
   123  
   124  	_ = pr.GetOrRegister("foo", NewCounter)
   125  
   126  	r.Each(func(name string, m interface{}) {
   127  		if name != "prefix.foo" {
   128  			t.Fatal(name)
   129  		}
   130  	})
   131  }
   132  
   133  func TestPrefixedRegistryGetOrRegister(t *testing.T) {
   134  	r := NewPrefixedRegistry("prefix.")
   135  
   136  	_ = r.GetOrRegister("foo", NewCounter)
   137  
   138  	r.Each(func(name string, m interface{}) {
   139  		if name != "prefix.foo" {
   140  			t.Fatal(name)
   141  		}
   142  	})
   143  }
   144  
   145  func TestPrefixedRegistryRegister(t *testing.T) {
   146  	r := NewPrefixedRegistry("prefix.")
   147  
   148  	_ = r.Register("foo", NewCounter)
   149  
   150  	r.Each(func(name string, m interface{}) {
   151  		if name != "prefix.foo" {
   152  			t.Fatal(name)
   153  		}
   154  	})
   155  }
   156  
   157  func TestPrefixedRegistryUnregister(t *testing.T) {
   158  	r := NewPrefixedRegistry("prefix.")
   159  
   160  	_ = r.Register("foo", NewCounter)
   161  
   162  	r.Each(func(name string, m interface{}) {
   163  		if name != "prefix.foo" {
   164  			t.Fatal(name)
   165  		}
   166  	})
   167  
   168  	r.Unregister("foo")
   169  
   170  	i := 0
   171  	r.Each(func(name string, m interface{}) {
   172  		i++
   173  	})
   174  
   175  	if i != 0 {
   176  		t.Fatal(i)
   177  	}
   178  }