mirror of
https://github.com/netbirdio/netbird.git
synced 2026-04-18 00:06:38 +00:00
70 lines
1.6 KiB
Go
70 lines
1.6 KiB
Go
package metrics_test
|
|
|
|
import (
|
|
"context"
|
|
"reflect"
|
|
"testing"
|
|
"time"
|
|
|
|
promexporter "go.opentelemetry.io/otel/exporters/prometheus"
|
|
sdkmetric "go.opentelemetry.io/otel/sdk/metric"
|
|
|
|
"github.com/netbirdio/netbird/proxy/internal/metrics"
|
|
"github.com/netbirdio/netbird/proxy/internal/types"
|
|
)
|
|
|
|
func newTestMetrics(t *testing.T) *metrics.Metrics {
|
|
t.Helper()
|
|
|
|
exporter, err := promexporter.New()
|
|
if err != nil {
|
|
t.Fatalf("create prometheus exporter: %v", err)
|
|
}
|
|
|
|
provider := sdkmetric.NewMeterProvider(sdkmetric.WithReader(exporter))
|
|
pkg := reflect.TypeOf(metrics.Metrics{}).PkgPath()
|
|
meter := provider.Meter(pkg)
|
|
|
|
m, err := metrics.New(context.Background(), meter)
|
|
if err != nil {
|
|
t.Fatalf("create metrics: %v", err)
|
|
}
|
|
return m
|
|
}
|
|
|
|
func TestL4ServiceGauge(t *testing.T) {
|
|
m := newTestMetrics(t)
|
|
|
|
m.L4ServiceAdded(types.ServiceModeTCP)
|
|
m.L4ServiceAdded(types.ServiceModeTCP)
|
|
m.L4ServiceAdded(types.ServiceModeUDP)
|
|
m.L4ServiceRemoved(types.ServiceModeTCP)
|
|
}
|
|
|
|
func TestTCPRelayMetrics(t *testing.T) {
|
|
m := newTestMetrics(t)
|
|
|
|
acct := types.AccountID("acct-1")
|
|
|
|
m.TCPRelayStarted(acct)
|
|
m.TCPRelayStarted(acct)
|
|
m.TCPRelayEnded(acct, 10*time.Second, 1000, 500)
|
|
m.TCPRelayDialError(acct)
|
|
m.TCPRelayRejected(acct)
|
|
}
|
|
|
|
func TestUDPSessionMetrics(t *testing.T) {
|
|
m := newTestMetrics(t)
|
|
|
|
acct := types.AccountID("acct-2")
|
|
|
|
m.UDPSessionStarted(acct)
|
|
m.UDPSessionStarted(acct)
|
|
m.UDPSessionEnded(acct)
|
|
m.UDPSessionDialError(acct)
|
|
m.UDPSessionRejected(acct)
|
|
m.UDPPacketRelayed(types.RelayDirectionClientToBackend, 100)
|
|
m.UDPPacketRelayed(types.RelayDirectionClientToBackend, 200)
|
|
m.UDPPacketRelayed(types.RelayDirectionBackendToClient, 150)
|
|
}
|