This commit is contained in:
ADITYA RAUT 2025-07-24 20:55:31 +05:30 committed by GitHub
commit 7d83361672
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 60 additions and 0 deletions

View File

@ -0,0 +1,60 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
package tracetest_test
import (
"context"
"fmt"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/attribute"
sdktrace "go.opentelemetry.io/otel/sdk/trace"
"go.opentelemetry.io/otel/sdk/trace/tracetest"
)
// simulateWorkflow starts a “workflow” span and a nested “step-1” span.
func simulateWorkflow(ctx context.Context) {
tracer := otel.Tracer("example/workflow")
// Parent span “workflow”
ctx, workflowSpan := tracer.Start(ctx, "workflow")
defer workflowSpan.End()
workflowSpan.SetAttributes(attribute.String("workflow.phase", "start"))
// Child span “step-1”
_, stepSpan := tracer.Start(ctx, "step-1")
defer stepSpan.End()
stepSpan.SetAttributes(attribute.Int("step.order", 1))
stepSpan.AddEvent("Step 1 processing started")
}
// Example_simulateWorkflow is a runnable example.
// The // Output: comment makes it an executable doc test [2].
func Example_simulateWorkflow() {
ctx := context.Background()
// In-memory span recorder.
recorder := tracetest.NewSpanRecorder()
tp := sdktrace.NewTracerProvider(
sdktrace.WithSpanProcessor(recorder),
)
defer tp.Shutdown(ctx)
// Swap in the test TracerProvider and restore afterwards.
orig := otel.GetTracerProvider()
otel.SetTracerProvider(tp)
defer otel.SetTracerProvider(orig)
// Run the workflow.
simulateWorkflow(ctx)
// Print span names in the order they ended.
for _, s := range recorder.Ended() {
fmt.Println(s.Name())
}
// Output:
// step-1
// workflow
}