65 lines
2.1 KiB
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()) })
|
|
}
|