From 4fe07d3c34585657da9fad99b48d54dab121aaed Mon Sep 17 00:00:00 2001 From: Pranav Sharma Date: Fri, 19 Apr 2024 11:59:42 -0400 Subject: [PATCH] Update grpc example to allow long runs (#835) * Update grpc example to allow long runs * Trigger Build * Update sample to allow indefinite span generation --- example/trace/otlpgrpc/example.go | 35 +++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/example/trace/otlpgrpc/example.go b/example/trace/otlpgrpc/example.go index a9a8f7a8..c4081451 100644 --- a/example/trace/otlpgrpc/example.go +++ b/example/trace/otlpgrpc/example.go @@ -17,6 +17,7 @@ package main import ( "context" + "flag" "fmt" "log" "time" @@ -31,6 +32,8 @@ import ( "google.golang.org/grpc/credentials/oauth" ) +var keepRunning = flag.Bool("keepRunning", false, "Set to true for generating spans at a fixed rate indefinitely. Default is false.") + func initTracer() (func(), error) { ctx := context.Background() @@ -62,7 +65,28 @@ func initTracer() (func(), error) { }, nil } +func generateTestSpan(ctx context.Context, tr trace.Tracer, description string) { + fmt.Println("starting span...") + _, span := tr.Start(ctx, description, trace.WithAttributes(semconv.PeerServiceKey.String("ExampleService"))) + defer span.End() + defer fmt.Println("ending span.") + + time.Sleep(3 * time.Second) +} + +func generateSpansAtFixedRate(ctx context.Context, tr trace.Tracer) { + fmt.Println("Generating 1 test span every 10 seconds indefinitely") + ticker := time.NewTicker(10 * time.Second) + defer ticker.Stop() + + for tick := range ticker.C { + go generateTestSpan(ctx, tr, fmt.Sprintf("span-%s", tick)) + } + fmt.Println("Span generation complete.") +} + func main() { + flag.Parse() shutdown, err := initTracer() if err != nil { log.Fatal(err) @@ -71,10 +95,9 @@ func main() { tr := otel.Tracer("cloudtrace/example/client") ctx := context.Background() - fmt.Println("starting span...") - _, span := tr.Start(ctx, "test span", trace.WithAttributes(semconv.PeerServiceKey.String("ExampleService"))) - defer span.End() - defer fmt.Println("ending span.") - - time.Sleep(3 * time.Second) + if *keepRunning { + generateSpansAtFixedRate(ctx, tr) + } else { + generateTestSpan(ctx, tr, "test span") + } }