agent-orchestrator/backend/internal/daemon/telemetry_wiring_test.go

65 lines
2.1 KiB
Go

package daemon
import (
"log/slog"
"testing"
telemetryadapter "github.com/aoagents/agent-orchestrator/backend/internal/adapters/telemetry"
"github.com/aoagents/agent-orchestrator/backend/internal/config"
"github.com/aoagents/agent-orchestrator/backend/internal/storage/sqlite"
)
func TestNewTelemetrySink_DefaultsToNoopWhenDisabled(t *testing.T) {
sink := newTelemetrySink(config.Config{}, nil, slog.Default())
if _, ok := sink.(telemetryadapter.NoopSink); !ok {
t.Fatalf("sink type = %T, want telemetry.NoopSink", sink)
}
}
func TestNewTelemetrySink_MetricsOnlyDoesNotEnableEvents(t *testing.T) {
sink := newTelemetrySink(config.Config{Telemetry: config.TelemetryConfig{Metrics: true}}, nil, slog.Default())
if _, ok := sink.(telemetryadapter.NoopSink); !ok {
t.Fatalf("sink type = %T, want telemetry.NoopSink when only metrics are enabled", sink)
}
}
func TestNewTelemetrySink_UsesLocalSQLiteWhenEnabled(t *testing.T) {
dataDir := t.TempDir()
store, err := sqlite.Open(dataDir)
if err != nil {
t.Fatalf("open store: %v", err)
}
t.Cleanup(func() { _ = store.Close() })
sink := newTelemetrySink(config.Config{Telemetry: config.TelemetryConfig{Events: true}, DataDir: dataDir}, store, slog.Default())
local, ok := sink.(*telemetryadapter.LocalSQLiteSink)
if !ok {
t.Fatalf("sink type = %T, want *telemetry.LocalSQLiteSink", sink)
}
t.Cleanup(func() { _ = local.Close(t.Context()) })
}
func TestNewTelemetrySink_FanoutIncludesPostHogWhenConfigured(t *testing.T) {
dataDir := t.TempDir()
store, err := sqlite.Open(dataDir)
if err != nil {
t.Fatalf("open store: %v", err)
}
t.Cleanup(func() { _ = store.Close() })
sink := newTelemetrySink(config.Config{
DataDir: dataDir,
Telemetry: config.TelemetryConfig{
Events: true,
Remote: config.TelemetryRemotePostHog,
PostHogKey: "phc_test",
PostHogHost: "https://us.i.posthog.com",
},
}, store, slog.Default())
fanout, ok := sink.(*telemetryadapter.FanoutSink)
if !ok {
t.Fatalf("sink type = %T, want *telemetry.FanoutSink", sink)
}
t.Cleanup(func() { _ = fanout.Close(t.Context()) })
}