Files
grafana/pkg/infra/tracing/test_helper.go
Marcus Efraimsson 6c1de260a2 API Server: Standalone observability (#84789)
Adds support for logs (specify level), metrics (enable metrics and Prometheus /metrics endpoint 
and traces (jaeger or otlp) for standalone API server. This will allow any grafana core service 
part of standalone apiserver to use logging, metrics and traces as normal.
2024-03-21 17:06:32 +01:00

33 lines
813 B
Go

package tracing
import (
"go.opentelemetry.io/otel"
tracesdk "go.opentelemetry.io/otel/sdk/trace"
"go.opentelemetry.io/otel/sdk/trace/tracetest"
)
type TracerForTestOption func(tp *tracesdk.TracerProvider)
func WithSpanProcessor(sp tracesdk.SpanProcessor) TracerForTestOption {
return TracerForTestOption(func(tp *tracesdk.TracerProvider) {
tp.RegisterSpanProcessor(sp)
})
}
func InitializeTracerForTest(opts ...TracerForTestOption) Tracer {
exp := tracetest.NewInMemoryExporter()
tp, _ := initTracerProvider(exp, "grafana", "testing", tracesdk.AlwaysSample())
for _, opt := range opts {
opt(tp)
}
otel.SetTracerProvider(tp)
cfg := NewEmptyTracingConfig()
cfg.Propagation = "jaeger,w3c"
ots := &TracingService{cfg: cfg, tracerProvider: tp}
_ = ots.initOpentelemetryTracer()
return ots
}