metrics: add LabelMap.GetIncrFunc
Updates tailscale/corp#7354 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>pull/8460/merge
parent
0a86705d59
commit
4d94d72fba
|
@ -45,6 +45,14 @@ func (m *LabelMap) Get(key string) *expvar.Int {
|
||||||
return m.Map.Get(key).(*expvar.Int)
|
return m.Map.Get(key).(*expvar.Int)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetIncrFunc returns a function that increments the expvar.Int named by key.
|
||||||
|
//
|
||||||
|
// Most callers should not need this; it exists to satisfy an
|
||||||
|
// interface elsewhere.
|
||||||
|
func (m *LabelMap) GetIncrFunc(key string) func(delta int64) {
|
||||||
|
return m.Get(key).Add
|
||||||
|
}
|
||||||
|
|
||||||
// GetFloat returns a direct pointer to the expvar.Float for key, creating it
|
// GetFloat returns a direct pointer to the expvar.Float for key, creating it
|
||||||
// if necessary.
|
// if necessary.
|
||||||
func (m *LabelMap) GetFloat(key string) *expvar.Float {
|
func (m *LabelMap) GetFloat(key string) *expvar.Float {
|
||||||
|
|
|
@ -11,6 +11,18 @@ import (
|
||||||
"tailscale.com/tstest"
|
"tailscale.com/tstest"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func TestLabelMap(t *testing.T) {
|
||||||
|
var m LabelMap
|
||||||
|
m.GetIncrFunc("foo")(1)
|
||||||
|
m.GetIncrFunc("bar")(2)
|
||||||
|
if g, w := m.Get("foo").Value(), int64(1); g != w {
|
||||||
|
t.Errorf("foo = %v; want %v", g, w)
|
||||||
|
}
|
||||||
|
if g, w := m.Get("bar").Value(), int64(2); g != w {
|
||||||
|
t.Errorf("bar = %v; want %v", g, w)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestCurrentFileDescriptors(t *testing.T) {
|
func TestCurrentFileDescriptors(t *testing.T) {
|
||||||
if runtime.GOOS != "linux" {
|
if runtime.GOOS != "linux" {
|
||||||
t.Skipf("skipping on %v", runtime.GOOS)
|
t.Skipf("skipping on %v", runtime.GOOS)
|
||||||
|
|
Loading…
Reference in New Issue