* golangci: typo Signed-off-by: Delweng <delweng@gmail.com> * golangci: add whietspace Signed-off-by: Delweng <delweng@gmail.com> * *: rm whitesapce using golangci-lint Signed-off-by: Delweng <delweng@gmail.com> * cmd/puppeth: revert accidental resurrection Co-authored-by: Péter Szilágyi <peterke@gmail.com>
		
			
				
	
	
		
			311 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			311 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package metrics
 | 
						|
 | 
						|
import (
 | 
						|
	"testing"
 | 
						|
)
 | 
						|
 | 
						|
func BenchmarkRegistry(b *testing.B) {
 | 
						|
	r := NewRegistry()
 | 
						|
	r.Register("foo", NewCounter())
 | 
						|
	b.ResetTimer()
 | 
						|
	for i := 0; i < b.N; i++ {
 | 
						|
		r.Each(func(string, interface{}) {})
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestRegistry(t *testing.T) {
 | 
						|
	r := NewRegistry()
 | 
						|
	r.Register("foo", NewCounter())
 | 
						|
	i := 0
 | 
						|
	r.Each(func(name string, iface interface{}) {
 | 
						|
		i++
 | 
						|
		if name != "foo" {
 | 
						|
			t.Fatal(name)
 | 
						|
		}
 | 
						|
		if _, ok := iface.(Counter); !ok {
 | 
						|
			t.Fatal(iface)
 | 
						|
		}
 | 
						|
	})
 | 
						|
	if i != 1 {
 | 
						|
		t.Fatal(i)
 | 
						|
	}
 | 
						|
	r.Unregister("foo")
 | 
						|
	i = 0
 | 
						|
	r.Each(func(string, interface{}) { i++ })
 | 
						|
	if i != 0 {
 | 
						|
		t.Fatal(i)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestRegistryDuplicate(t *testing.T) {
 | 
						|
	r := NewRegistry()
 | 
						|
	if err := r.Register("foo", NewCounter()); nil != err {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
	if err := r.Register("foo", NewGauge()); nil == err {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
	i := 0
 | 
						|
	r.Each(func(name string, iface interface{}) {
 | 
						|
		i++
 | 
						|
		if _, ok := iface.(Counter); !ok {
 | 
						|
			t.Fatal(iface)
 | 
						|
		}
 | 
						|
	})
 | 
						|
	if i != 1 {
 | 
						|
		t.Fatal(i)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestRegistryGet(t *testing.T) {
 | 
						|
	r := NewRegistry()
 | 
						|
	r.Register("foo", NewCounter())
 | 
						|
	if count := r.Get("foo").(Counter).Count(); count != 0 {
 | 
						|
		t.Fatal(count)
 | 
						|
	}
 | 
						|
	r.Get("foo").(Counter).Inc(1)
 | 
						|
	if count := r.Get("foo").(Counter).Count(); count != 1 {
 | 
						|
		t.Fatal(count)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestRegistryGetOrRegister(t *testing.T) {
 | 
						|
	r := NewRegistry()
 | 
						|
 | 
						|
	// First metric wins with GetOrRegister
 | 
						|
	_ = r.GetOrRegister("foo", NewCounter())
 | 
						|
	m := r.GetOrRegister("foo", NewGauge())
 | 
						|
	if _, ok := m.(Counter); !ok {
 | 
						|
		t.Fatal(m)
 | 
						|
	}
 | 
						|
 | 
						|
	i := 0
 | 
						|
	r.Each(func(name string, iface interface{}) {
 | 
						|
		i++
 | 
						|
		if name != "foo" {
 | 
						|
			t.Fatal(name)
 | 
						|
		}
 | 
						|
		if _, ok := iface.(Counter); !ok {
 | 
						|
			t.Fatal(iface)
 | 
						|
		}
 | 
						|
	})
 | 
						|
	if i != 1 {
 | 
						|
		t.Fatal(i)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestRegistryGetOrRegisterWithLazyInstantiation(t *testing.T) {
 | 
						|
	r := NewRegistry()
 | 
						|
 | 
						|
	// First metric wins with GetOrRegister
 | 
						|
	_ = r.GetOrRegister("foo", NewCounter)
 | 
						|
	m := r.GetOrRegister("foo", NewGauge)
 | 
						|
	if _, ok := m.(Counter); !ok {
 | 
						|
		t.Fatal(m)
 | 
						|
	}
 | 
						|
 | 
						|
	i := 0
 | 
						|
	r.Each(func(name string, iface interface{}) {
 | 
						|
		i++
 | 
						|
		if name != "foo" {
 | 
						|
			t.Fatal(name)
 | 
						|
		}
 | 
						|
		if _, ok := iface.(Counter); !ok {
 | 
						|
			t.Fatal(iface)
 | 
						|
		}
 | 
						|
	})
 | 
						|
	if i != 1 {
 | 
						|
		t.Fatal(i)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestRegistryUnregister(t *testing.T) {
 | 
						|
	l := len(arbiter.meters)
 | 
						|
	r := NewRegistry()
 | 
						|
	r.Register("foo", NewCounter())
 | 
						|
	r.Register("bar", NewMeter())
 | 
						|
	r.Register("baz", NewTimer())
 | 
						|
	if len(arbiter.meters) != l+2 {
 | 
						|
		t.Errorf("arbiter.meters: %d != %d\n", l+2, len(arbiter.meters))
 | 
						|
	}
 | 
						|
	r.Unregister("foo")
 | 
						|
	r.Unregister("bar")
 | 
						|
	r.Unregister("baz")
 | 
						|
	if len(arbiter.meters) != l {
 | 
						|
		t.Errorf("arbiter.meters: %d != %d\n", l+2, len(arbiter.meters))
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestPrefixedChildRegistryGetOrRegister(t *testing.T) {
 | 
						|
	r := NewRegistry()
 | 
						|
	pr := NewPrefixedChildRegistry(r, "prefix.")
 | 
						|
 | 
						|
	_ = pr.GetOrRegister("foo", NewCounter())
 | 
						|
 | 
						|
	i := 0
 | 
						|
	r.Each(func(name string, m interface{}) {
 | 
						|
		i++
 | 
						|
		if name != "prefix.foo" {
 | 
						|
			t.Fatal(name)
 | 
						|
		}
 | 
						|
	})
 | 
						|
	if i != 1 {
 | 
						|
		t.Fatal(i)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestPrefixedRegistryGetOrRegister(t *testing.T) {
 | 
						|
	r := NewPrefixedRegistry("prefix.")
 | 
						|
 | 
						|
	_ = r.GetOrRegister("foo", NewCounter())
 | 
						|
 | 
						|
	i := 0
 | 
						|
	r.Each(func(name string, m interface{}) {
 | 
						|
		i++
 | 
						|
		if name != "prefix.foo" {
 | 
						|
			t.Fatal(name)
 | 
						|
		}
 | 
						|
	})
 | 
						|
	if i != 1 {
 | 
						|
		t.Fatal(i)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestPrefixedRegistryRegister(t *testing.T) {
 | 
						|
	r := NewPrefixedRegistry("prefix.")
 | 
						|
	err := r.Register("foo", NewCounter())
 | 
						|
	c := NewCounter()
 | 
						|
	Register("bar", c)
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err.Error())
 | 
						|
	}
 | 
						|
 | 
						|
	i := 0
 | 
						|
	r.Each(func(name string, m interface{}) {
 | 
						|
		i++
 | 
						|
		if name != "prefix.foo" {
 | 
						|
			t.Fatal(name)
 | 
						|
		}
 | 
						|
	})
 | 
						|
	if i != 1 {
 | 
						|
		t.Fatal(i)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestPrefixedRegistryUnregister(t *testing.T) {
 | 
						|
	r := NewPrefixedRegistry("prefix.")
 | 
						|
 | 
						|
	_ = r.Register("foo", NewCounter())
 | 
						|
 | 
						|
	i := 0
 | 
						|
	r.Each(func(name string, m interface{}) {
 | 
						|
		i++
 | 
						|
		if name != "prefix.foo" {
 | 
						|
			t.Fatal(name)
 | 
						|
		}
 | 
						|
	})
 | 
						|
	if i != 1 {
 | 
						|
		t.Fatal(i)
 | 
						|
	}
 | 
						|
 | 
						|
	r.Unregister("foo")
 | 
						|
 | 
						|
	i = 0
 | 
						|
	r.Each(func(name string, m interface{}) {
 | 
						|
		i++
 | 
						|
	})
 | 
						|
 | 
						|
	if i != 0 {
 | 
						|
		t.Fatal(i)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestPrefixedRegistryGet(t *testing.T) {
 | 
						|
	pr := NewPrefixedRegistry("prefix.")
 | 
						|
	name := "foo"
 | 
						|
	pr.Register(name, NewCounter())
 | 
						|
 | 
						|
	fooCounter := pr.Get(name)
 | 
						|
	if fooCounter == nil {
 | 
						|
		t.Fatal(name)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestPrefixedChildRegistryGet(t *testing.T) {
 | 
						|
	r := NewRegistry()
 | 
						|
	pr := NewPrefixedChildRegistry(r, "prefix.")
 | 
						|
	name := "foo"
 | 
						|
	pr.Register(name, NewCounter())
 | 
						|
	fooCounter := pr.Get(name)
 | 
						|
	if fooCounter == nil {
 | 
						|
		t.Fatal(name)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestChildPrefixedRegistryRegister(t *testing.T) {
 | 
						|
	r := NewPrefixedChildRegistry(DefaultRegistry, "prefix.")
 | 
						|
	err := r.Register("foo", NewCounter())
 | 
						|
	c := NewCounter()
 | 
						|
	Register("bar", c)
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err.Error())
 | 
						|
	}
 | 
						|
 | 
						|
	i := 0
 | 
						|
	r.Each(func(name string, m interface{}) {
 | 
						|
		i++
 | 
						|
		if name != "prefix.foo" {
 | 
						|
			t.Fatal(name)
 | 
						|
		}
 | 
						|
	})
 | 
						|
	if i != 1 {
 | 
						|
		t.Fatal(i)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestChildPrefixedRegistryOfChildRegister(t *testing.T) {
 | 
						|
	r := NewPrefixedChildRegistry(NewRegistry(), "prefix.")
 | 
						|
	r2 := NewPrefixedChildRegistry(r, "prefix2.")
 | 
						|
	err := r.Register("foo2", NewCounter())
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err.Error())
 | 
						|
	}
 | 
						|
	err = r2.Register("baz", NewCounter())
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err.Error())
 | 
						|
	}
 | 
						|
	c := NewCounter()
 | 
						|
	Register("bars", c)
 | 
						|
 | 
						|
	i := 0
 | 
						|
	r2.Each(func(name string, m interface{}) {
 | 
						|
		i++
 | 
						|
		if name != "prefix.prefix2.baz" {
 | 
						|
			t.Fatal(name)
 | 
						|
		}
 | 
						|
	})
 | 
						|
	if i != 1 {
 | 
						|
		t.Fatal(i)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestWalkRegistries(t *testing.T) {
 | 
						|
	r := NewPrefixedChildRegistry(NewRegistry(), "prefix.")
 | 
						|
	r2 := NewPrefixedChildRegistry(r, "prefix2.")
 | 
						|
	err := r.Register("foo2", NewCounter())
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err.Error())
 | 
						|
	}
 | 
						|
	err = r2.Register("baz", NewCounter())
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err.Error())
 | 
						|
	}
 | 
						|
	c := NewCounter()
 | 
						|
	Register("bars", c)
 | 
						|
 | 
						|
	_, prefix := findPrefix(r2, "")
 | 
						|
	if prefix != "prefix.prefix2." {
 | 
						|
		t.Fatal(prefix)
 | 
						|
	}
 | 
						|
}
 |