Skip to content

Commit

Permalink
add labels for both new and passed-in registry paths
Browse files Browse the repository at this point in the history
  • Loading branch information
ktkenny committed Apr 4, 2024
1 parent e782ee1 commit f1baadd
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 46 deletions.
15 changes: 0 additions & 15 deletions lib_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -294,21 +294,6 @@ func TestNewSenderFromDevice(t *testing.T) {
assert.Nil(err)
}

func TestMetricsConfig(t *testing.T) {
dev, assert := setupLibTest(t)

program := "test"
version := "0.0.1"

config := libkflow.NewConfig(email, token, "test", "0.0.1")
metrics := config.NewMetrics(dev)

assert.Equal(program+"-"+version, metrics.Extra["ver"])
assert.Equal(program, metrics.Extra["ft"])
assert.Equal("libkflow", metrics.Extra["dt"])
assert.Equal("primary", metrics.Extra["level"])
}

func setupLibTest(t *testing.T) (*api.Device, *assert.Assertions) {
client, server, device, err := test.NewClientServer()
if err != nil {
Expand Down
44 changes: 13 additions & 31 deletions metrics/metrics.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ type Metrics struct {
NewSampleRate metrics.Histogram
RateLimitDrops metrics.Meter
BytesSent metrics.Meter
Extra map[string]string
}

func New(companyID int, deviceID int, program, version string) *Metrics {
Expand All @@ -36,32 +35,20 @@ func New(companyID int, deviceID int, program, version string) *Metrics {

// NewWithRegistry returns a new Metrics but allows a specific registry to be used rather than creating a new one
func NewWithRegistry(reg metrics.Registry, companyID int, deviceID int, program, version string) *Metrics {
name := func(key string) string {
return fmt.Sprintf("client_%s", key)
}

sample := func() metrics.Sample {
return metrics.NewExpDecaySample(MetricsSampleSize, MetricsSampleAlpha)
}

extra := map[string]string{
"ver": program + "-" + version,
"ft": program,
"dt": "libkflow",
"level": "primary",
"cid": strconv.Itoa(companyID),
"did": strconv.Itoa(deviceID),
}
suffix := fmt.Sprintf("^ver=%s^ft=%s^dt=%s^level=%s^cid=%s^did=%s", program+"-"+version, program, "libkflow", "primary", strconv.Itoa(companyID), strconv.Itoa(deviceID))

return &Metrics{
reg: reg,
TotalFlowsIn: metrics.GetOrRegisterMeter(name("Total"), reg),
TotalFlowsOut: metrics.GetOrRegisterMeter(name("DownsampleFPS"), reg),
OrigSampleRate: metrics.GetOrRegisterHistogram(name("OrigSampleRate"), reg, sample()),
NewSampleRate: metrics.GetOrRegisterHistogram(name("NewSampleRate"), reg, sample()),
RateLimitDrops: metrics.GetOrRegisterMeter(name("RateLimitDrops"), reg),
BytesSent: metrics.GetOrRegisterMeter(name("BytesSent"), reg),
Extra: extra,
TotalFlowsIn: metrics.GetOrRegisterMeter("client_Total"+suffix, reg),
TotalFlowsOut: metrics.GetOrRegisterMeter("client_DownsampleFPS"+suffix, reg),
OrigSampleRate: metrics.GetOrRegisterHistogram("client_OrigSampleRate"+suffix, reg, sample()),
NewSampleRate: metrics.GetOrRegisterHistogram("client_NewSampleRate"+suffix, reg, sample()),
RateLimitDrops: metrics.GetOrRegisterMeter("client_RateLimitDrops"+suffix, reg),
BytesSent: metrics.GetOrRegisterMeter("client_BytesSent"+suffix, reg),
}
}

Expand All @@ -85,23 +72,18 @@ func (m *Metrics) Start(url, email, token string, prefix string, interval time.D
Send: make(chan []byte, MaxHttpRequests),
ProxyUrl: proxyURL,
MaxHttpOutstanding: MaxHttpRequests,
Extra: m.Extra,
ApiEmail: &email,
ApiPassword: &token,
})
}

func (m *Metrics) Unregister() {
name := func(key string) string {
return fmt.Sprintf("client_%s", key)
}

m.reg.Unregister(name("Total"))
m.reg.Unregister(name("DownsampleFPS"))
m.reg.Unregister(name("OrigSampleRate"))
m.reg.Unregister(name("NewSampleRate"))
m.reg.Unregister(name("RateLimitDrops"))
m.reg.Unregister(name("BytesSent"))
m.reg.Unregister("client_Total")
m.reg.Unregister("client_DownsampleFPS")
m.reg.Unregister("client_OrigSampleRate")
m.reg.Unregister("client_NewSampleRate")
m.reg.Unregister("client_RateLimitDrops")
m.reg.Unregister("client_BytesSent")
}

func NewMeter() metrics.Meter {
Expand Down
26 changes: 26 additions & 0 deletions metrics/metrics_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package metrics

import (
"testing"

"github.com/stretchr/testify/assert"
)

func TestMetricsConfig(t *testing.T) {

program := "test"
version := "0.0.1"

metrics := New(1, 2, program, version)

metrics.Unregister()

metrics.reg.Each(func(name string, _ interface{}) {
assert.Contains(t, name, "ver="+program+"-"+version)
assert.Contains(t, name, "ft="+program)
assert.Contains(t, name, "dt=libkflow")
assert.Contains(t, name, "level=primary")
assert.Contains(t, name, "cid=1")
assert.Contains(t, name, "did=2")
})
}

0 comments on commit f1baadd

Please sign in to comment.