mirror of
https://github.com/grafana/grafana.git
synced 2025-07-29 04:52:10 +08:00
80 lines
2.2 KiB
Go
80 lines
2.2 KiB
Go
package tracing
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
"go.opentelemetry.io/otel/attribute"
|
|
"go.opentelemetry.io/otel/trace"
|
|
)
|
|
|
|
func TestInitSampler(t *testing.T) {
|
|
otel := &TracingService{}
|
|
otel.cfg = NewEmptyTracingConfig()
|
|
sampler, err := otel.initSampler()
|
|
require.NoError(t, err)
|
|
assert.Equal(t, "AlwaysOffSampler", sampler.Description())
|
|
|
|
otel.cfg.Sampler = "bogus"
|
|
_, err = otel.initSampler()
|
|
require.Error(t, err)
|
|
|
|
otel.cfg.Sampler = "const"
|
|
otel.cfg.SamplerParam = 0.5
|
|
_, err = otel.initSampler()
|
|
require.Error(t, err)
|
|
|
|
otel.cfg.Sampler = "const"
|
|
otel.cfg.SamplerParam = 1.0
|
|
sampler, err = otel.initSampler()
|
|
require.NoError(t, err)
|
|
assert.Equal(t, "AlwaysOnSampler", sampler.Description())
|
|
|
|
otel.cfg.Sampler = "probabilistic"
|
|
otel.cfg.SamplerParam = 0.5
|
|
sampler, err = otel.initSampler()
|
|
require.NoError(t, err)
|
|
assert.Equal(t, "TraceIDRatioBased{0.5}", sampler.Description())
|
|
|
|
otel.cfg.Sampler = "rateLimiting"
|
|
otel.cfg.SamplerParam = 100.25
|
|
sampler, err = otel.initSampler()
|
|
require.NoError(t, err)
|
|
assert.Equal(t, "RateLimitingSampler{100.25}", sampler.Description())
|
|
}
|
|
|
|
func TestStart(t *testing.T) {
|
|
name := "test-span"
|
|
attributes := []attribute.KeyValue{
|
|
attribute.String("test1", "1"),
|
|
attribute.Int("test2", 2),
|
|
}
|
|
|
|
t.Run("should return noop span if there is not currently a span in context", func(t *testing.T) {
|
|
ctx := context.Background()
|
|
_, span := Start(ctx, name, attributes...)
|
|
defer span.End()
|
|
|
|
require.NotNil(t, span)
|
|
require.False(t, span.SpanContext().IsValid())
|
|
})
|
|
|
|
t.Run("should return a span with a valid span context if there is currently a span in context", func(t *testing.T) {
|
|
spanCtx := trace.NewSpanContext(trace.SpanContextConfig{
|
|
TraceID: trace.TraceID{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16},
|
|
SpanID: trace.SpanID{1, 2, 3, 4, 5, 6, 7, 8},
|
|
TraceFlags: trace.FlagsSampled,
|
|
})
|
|
|
|
ctx := trace.ContextWithSpanContext(context.Background(), spanCtx)
|
|
_, childSpan := Start(ctx, name, attributes...)
|
|
defer childSpan.End()
|
|
|
|
require.NotNil(t, childSpan)
|
|
require.Equal(t, spanCtx.TraceID(), childSpan.SpanContext().TraceID())
|
|
require.True(t, childSpan.SpanContext().IsValid())
|
|
})
|
|
}
|