mirror of
https://github.com/open-telemetry/opentelemetry-go.git
synced 2025-03-23 21:19:35 +02:00
Update internal/global/trace testing (#2111)
* Update internal/global/trace testing Use existing testing types instead of the oteltest package. * Make precommit
This commit is contained in:
parent
7f10ef72d4
commit
db81d4aa3d
1
go.mod
1
go.mod
@ -5,7 +5,6 @@ go 1.15
|
|||||||
require (
|
require (
|
||||||
github.com/google/go-cmp v0.5.6
|
github.com/google/go-cmp v0.5.6
|
||||||
github.com/stretchr/testify v1.7.0
|
github.com/stretchr/testify v1.7.0
|
||||||
go.opentelemetry.io/otel/oteltest v1.0.0-RC1
|
|
||||||
go.opentelemetry.io/otel/trace v1.0.0-RC1
|
go.opentelemetry.io/otel/trace v1.0.0-RC1
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -24,22 +24,61 @@ import (
|
|||||||
|
|
||||||
"go.opentelemetry.io/otel"
|
"go.opentelemetry.io/otel"
|
||||||
"go.opentelemetry.io/otel/internal/global"
|
"go.opentelemetry.io/otel/internal/global"
|
||||||
"go.opentelemetry.io/otel/oteltest"
|
|
||||||
"go.opentelemetry.io/otel/trace"
|
"go.opentelemetry.io/otel/trace"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestTraceWithSDK(t *testing.T) {
|
type fnTracerProvider struct {
|
||||||
|
tracer func(string, ...trace.TracerOption) trace.Tracer
|
||||||
|
}
|
||||||
|
|
||||||
|
func (fn fnTracerProvider) Tracer(instrumentationName string, opts ...trace.TracerOption) trace.Tracer {
|
||||||
|
return fn.tracer(instrumentationName, opts...)
|
||||||
|
}
|
||||||
|
|
||||||
|
type fnTracer struct {
|
||||||
|
start func(ctx context.Context, spanName string, opts ...trace.SpanStartOption) (context.Context, trace.Span)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (fn fnTracer) Start(ctx context.Context, spanName string, opts ...trace.SpanStartOption) (context.Context, trace.Span) {
|
||||||
|
return fn.start(ctx, spanName, opts...)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestTraceProviderDelegation(t *testing.T) {
|
||||||
global.ResetForTest()
|
global.ResetForTest()
|
||||||
|
|
||||||
|
// Map of tracers to expected span names.
|
||||||
|
expected := map[string][]string{
|
||||||
|
"pre": {"span2"},
|
||||||
|
"post": {"span3"},
|
||||||
|
"fromSpan": {"span4"},
|
||||||
|
}
|
||||||
|
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
gtp := otel.GetTracerProvider()
|
gtp := otel.GetTracerProvider()
|
||||||
tracer1 := gtp.Tracer("pre")
|
tracer1 := gtp.Tracer("pre")
|
||||||
// This is started before an SDK was registered and should be dropped.
|
// This is started before an SDK was registered and should be dropped.
|
||||||
_, span1 := tracer1.Start(ctx, "span1")
|
_, span1 := tracer1.Start(ctx, "span1")
|
||||||
|
|
||||||
sr := new(oteltest.SpanRecorder)
|
otel.SetTracerProvider(fnTracerProvider{
|
||||||
tp := oteltest.NewTracerProvider(oteltest.WithSpanRecorder(sr))
|
tracer: func(name string, opts ...trace.TracerOption) trace.Tracer {
|
||||||
otel.SetTracerProvider(tp)
|
spans, ok := expected[name]
|
||||||
|
assert.Truef(t, ok, "invalid tracer: %s", name)
|
||||||
|
return fnTracer{
|
||||||
|
start: func(ctx context.Context, spanName string, opts ...trace.SpanStartOption) (context.Context, trace.Span) {
|
||||||
|
if ok {
|
||||||
|
if len(spans) == 0 {
|
||||||
|
t.Errorf("unexpected span: %s", spanName)
|
||||||
|
} else {
|
||||||
|
var want string
|
||||||
|
want, spans = spans[0], spans[1:]
|
||||||
|
assert.Equal(t, want, spanName)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return trace.NewNoopTracerProvider().Tracer(name).Start(ctx, spanName)
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
// This span was started before initialization, it is expected to be dropped.
|
// This span was started before initialization, it is expected to be dropped.
|
||||||
span1.End()
|
span1.End()
|
||||||
@ -56,33 +95,6 @@ func TestTraceWithSDK(t *testing.T) {
|
|||||||
// The noop-span should still provide access to a usable TracerProvider.
|
// The noop-span should still provide access to a usable TracerProvider.
|
||||||
_, span4 := span1.TracerProvider().Tracer("fromSpan").Start(ctx, "span4")
|
_, span4 := span1.TracerProvider().Tracer("fromSpan").Start(ctx, "span4")
|
||||||
span4.End()
|
span4.End()
|
||||||
|
|
||||||
filterNames := func(spans []*oteltest.Span) []string {
|
|
||||||
names := make([]string, len(spans))
|
|
||||||
for i := range spans {
|
|
||||||
names[i] = spans[i].Name()
|
|
||||||
}
|
|
||||||
return names
|
|
||||||
}
|
|
||||||
expected := []string{"span2", "span3", "span4"}
|
|
||||||
assert.ElementsMatch(t, expected, filterNames(sr.Started()))
|
|
||||||
assert.ElementsMatch(t, expected, filterNames(sr.Completed()))
|
|
||||||
}
|
|
||||||
|
|
||||||
type fnTracerProvider struct {
|
|
||||||
tracer func(string, ...trace.TracerOption) trace.Tracer
|
|
||||||
}
|
|
||||||
|
|
||||||
func (fn fnTracerProvider) Tracer(instrumentationName string, opts ...trace.TracerOption) trace.Tracer {
|
|
||||||
return fn.tracer(instrumentationName, opts...)
|
|
||||||
}
|
|
||||||
|
|
||||||
type fnTracer struct {
|
|
||||||
start func(ctx context.Context, spanName string, opts ...trace.SpanStartOption) (context.Context, trace.Span)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (fn fnTracer) Start(ctx context.Context, spanName string, opts ...trace.SpanStartOption) (context.Context, trace.Span) {
|
|
||||||
return fn.start(ctx, spanName, opts...)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestTraceProviderDelegates(t *testing.T) {
|
func TestTraceProviderDelegates(t *testing.T) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user