You've already forked opentelemetry-go
mirror of
https://github.com/open-telemetry/opentelemetry-go.git
synced 2025-08-10 22:31:50 +02:00
Fix/issue 6560 install trace bridge test (#6814)
Fixes #6560 ## Summary Adds tests for the `InstallTraceBridge` function to verify that the `octrace.DefaultTracer` is correctly set when the function is called with various configuration options. ## Changes - Added `TestInstallTraceBridge` test function in `bridge/opencensus/trace_test.go` - Tests cover multiple scenarios: - Installation with default options - Installation with custom tracer provider - Installation with tracer provider and exporter - Verifies that `octrace.DefaultTracer` is properly updated. - Verifies that the installed tracer can create functional spans. - Ensures proper cleanup of global state after tests. ## Test Results ```bash === RUN TestInstallTraceBridge === RUN TestInstallTraceBridge/install_with_default_options === RUN TestInstallTraceBridge/install_with_custom_tracer_provider === RUN TestInstallTraceBridge/install_with_tracer_provider_with_exporter --- PASS: TestInstallTraceBridge (0.00s) ``` --------- Co-authored-by: Damien Mathieu <42@dmathieu.com> Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com> Co-authored-by: dmathieu <damien.mathieu@elastic.co>
This commit is contained in:
@@ -144,3 +144,96 @@ func TestOTelSpanContextToOC(t *testing.T) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestInstallTraceBridge(t *testing.T) {
|
||||||
|
originalTracer := octrace.DefaultTracer
|
||||||
|
defer func() {
|
||||||
|
octrace.DefaultTracer = originalTracer
|
||||||
|
}()
|
||||||
|
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
opts []TraceOption
|
||||||
|
expectValidSpans bool
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
name: "install with default options",
|
||||||
|
opts: nil,
|
||||||
|
expectValidSpans: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "install with custom tracer provider",
|
||||||
|
opts: []TraceOption{
|
||||||
|
WithTracerProvider(trace.NewTracerProvider()),
|
||||||
|
},
|
||||||
|
expectValidSpans: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "install with tracer provider with exporter",
|
||||||
|
opts: []TraceOption{
|
||||||
|
WithTracerProvider(
|
||||||
|
trace.NewTracerProvider(
|
||||||
|
trace.WithSyncer(tracetest.NewInMemoryExporter()),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
expectValidSpans: true,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, tt := range tests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
beforeTracer := octrace.DefaultTracer
|
||||||
|
|
||||||
|
InstallTraceBridge(tt.opts...)
|
||||||
|
|
||||||
|
assert.NotEqual(
|
||||||
|
t,
|
||||||
|
beforeTracer,
|
||||||
|
octrace.DefaultTracer,
|
||||||
|
"DefaultTracer should be updated",
|
||||||
|
)
|
||||||
|
assert.NotNil(
|
||||||
|
t,
|
||||||
|
octrace.DefaultTracer,
|
||||||
|
"DefaultTracer should not be nil",
|
||||||
|
)
|
||||||
|
|
||||||
|
ctx, span := octrace.DefaultTracer.StartSpan(
|
||||||
|
context.Background(),
|
||||||
|
"test-span",
|
||||||
|
)
|
||||||
|
assert.NotNil(
|
||||||
|
t,
|
||||||
|
span,
|
||||||
|
"Should be able to create spans",
|
||||||
|
)
|
||||||
|
assert.NotNil(t, ctx, "Should return a valid context")
|
||||||
|
|
||||||
|
spanContext := span.SpanContext()
|
||||||
|
if tt.expectValidSpans {
|
||||||
|
assert.NotEqual(
|
||||||
|
t,
|
||||||
|
octrace.TraceID{},
|
||||||
|
spanContext.TraceID,
|
||||||
|
"Span should have a non-zero TraceID",
|
||||||
|
)
|
||||||
|
assert.NotEqual(
|
||||||
|
t,
|
||||||
|
octrace.SpanID{},
|
||||||
|
spanContext.SpanID,
|
||||||
|
"Span should have a non-zero SpanID",
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
span.End()
|
||||||
|
|
||||||
|
spanFromContext := octrace.DefaultTracer.FromContext(ctx)
|
||||||
|
assert.NotNil(
|
||||||
|
t,
|
||||||
|
spanFromContext,
|
||||||
|
"Should be able to get span from context",
|
||||||
|
)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user