mirror of
https://github.com/fosrl/gerbil.git
synced 2026-05-13 03:39:56 +00:00
103 lines
2.4 KiB
Go
103 lines
2.4 KiB
Go
package observability_test
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"github.com/fosrl/gerbil/internal/observability"
|
|
)
|
|
|
|
func TestNoopBackendAllInstruments(t *testing.T) {
|
|
n := &observability.NoopBackend{}
|
|
|
|
ctx := context.Background()
|
|
labels := observability.Labels{"k": "v"}
|
|
|
|
t.Run("Counter", func(t *testing.T) {
|
|
c, _ := n.NewCounter("test_counter", "desc")
|
|
c.Add(ctx, 1, labels)
|
|
c.Add(ctx, 0, nil)
|
|
})
|
|
|
|
t.Run("UpDownCounter", func(t *testing.T) {
|
|
u, _ := n.NewUpDownCounter("test_updown", "desc")
|
|
u.Add(ctx, 1, labels)
|
|
u.Add(ctx, -1, nil)
|
|
})
|
|
|
|
t.Run("Int64Gauge", func(t *testing.T) {
|
|
g, _ := n.NewInt64Gauge("test_int64gauge", "desc")
|
|
g.Record(ctx, 42, labels)
|
|
g.Record(ctx, 0, nil)
|
|
})
|
|
|
|
t.Run("Float64Gauge", func(t *testing.T) {
|
|
g, _ := n.NewFloat64Gauge("test_float64gauge", "desc")
|
|
g.Record(ctx, 3.14, labels)
|
|
g.Record(ctx, 0, nil)
|
|
})
|
|
|
|
t.Run("Histogram", func(t *testing.T) {
|
|
h, _ := n.NewHistogram("test_histogram", "desc", []float64{1, 5, 10})
|
|
h.Record(ctx, 2.5, labels)
|
|
h.Record(ctx, 0, nil)
|
|
})
|
|
|
|
t.Run("HTTPHandler", func(t *testing.T) {
|
|
if n.HTTPHandler() != nil {
|
|
t.Error("noop HTTPHandler should be nil")
|
|
}
|
|
})
|
|
|
|
t.Run("Shutdown", func(t *testing.T) {
|
|
if err := n.Shutdown(ctx); err != nil {
|
|
t.Errorf("noop Shutdown should not error: %v", err)
|
|
}
|
|
})
|
|
}
|
|
|
|
func TestNoopBackendLabelNames(t *testing.T) {
|
|
// Verify that label names passed at creation time are accepted without panic.
|
|
n := &observability.NoopBackend{}
|
|
|
|
assertNoPanic := func(t *testing.T, constructor string, fn func()) {
|
|
t.Helper()
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
t.Fatalf("%s panicked: %v", constructor, r)
|
|
}
|
|
}()
|
|
fn()
|
|
}
|
|
|
|
t.Run("NewCounter", func(t *testing.T) {
|
|
assertNoPanic(t, "NewCounter", func() {
|
|
_, _ = n.NewCounter("c", "d", "label1", "label2")
|
|
})
|
|
})
|
|
|
|
t.Run("NewUpDownCounter", func(t *testing.T) {
|
|
assertNoPanic(t, "NewUpDownCounter", func() {
|
|
_, _ = n.NewUpDownCounter("u", "d", "l1")
|
|
})
|
|
})
|
|
|
|
t.Run("NewInt64Gauge", func(t *testing.T) {
|
|
assertNoPanic(t, "NewInt64Gauge", func() {
|
|
_, _ = n.NewInt64Gauge("g1", "d", "l1", "l2", "l3")
|
|
})
|
|
})
|
|
|
|
t.Run("NewFloat64Gauge", func(t *testing.T) {
|
|
assertNoPanic(t, "NewFloat64Gauge", func() {
|
|
_, _ = n.NewFloat64Gauge("g2", "d")
|
|
})
|
|
})
|
|
|
|
t.Run("NewHistogram", func(t *testing.T) {
|
|
assertNoPanic(t, "NewHistogram", func() {
|
|
_, _ = n.NewHistogram("h", "d", []float64{0.1, 1.0}, "l1")
|
|
})
|
|
})
|
|
}
|