-
Notifications
You must be signed in to change notification settings - Fork 576
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add aws componenets benchmark #812
Changes from 22 commits
dcc01de
1dd54d9
03f6fb4
5919be5
ebd45b4
e1ff7d0
041d9b8
e12a4b1
e906d2a
86c04d1
047f5d0
21db8fa
5204d27
c9c1bca
c956d4b
12c6c74
e042a6f
6b2e3c3
2622e4e
c50fed8
ac3b67a
8fe79d4
0d0588f
bd3d279
79e7602
c95f44a
83fc5f6
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,220 @@ | ||||||||||||||||||||||||||
// Copyright The OpenTelemetry Authors | ||||||||||||||||||||||||||
// | ||||||||||||||||||||||||||
// Licensed under the Apache License, Version 2.0 (the "License"); | ||||||||||||||||||||||||||
// you may not use this file except in compliance with the License. | ||||||||||||||||||||||||||
// You may obtain a copy of the License at | ||||||||||||||||||||||||||
// | ||||||||||||||||||||||||||
// http://www.apache.org/licenses/LICENSE-2.0 | ||||||||||||||||||||||||||
// | ||||||||||||||||||||||||||
// Unless required by applicable law or agreed to in writing, software | ||||||||||||||||||||||||||
// distributed under the License is distributed on an "AS IS" BASIS, | ||||||||||||||||||||||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||||||||||||||||||||||||
// See the License for the specific language governing permissions and | ||||||||||||||||||||||||||
// limitations under the License. | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
package xray | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
import ( | ||||||||||||||||||||||||||
"context" | ||||||||||||||||||||||||||
"testing" | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
"go.opentelemetry.io/otel" | ||||||||||||||||||||||||||
"go.opentelemetry.io/otel/attribute" | ||||||||||||||||||||||||||
sdktrace "go.opentelemetry.io/otel/sdk/trace" | ||||||||||||||||||||||||||
"go.opentelemetry.io/otel/trace" | ||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
var tracer = otel.Tracer("sample-app") | ||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
func startAndEndSampledSpan() { | ||||||||||||||||||||||||||
var span trace.Span | ||||||||||||||||||||||||||
_, span = tracer.Start( | ||||||||||||||||||||||||||
context.Background(), | ||||||||||||||||||||||||||
"Example Trace", | ||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
defer span.End() | ||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
func startAndEndNestedSampledSpan() { | ||||||||||||||||||||||||||
var span trace.Span | ||||||||||||||||||||||||||
ctx, span := tracer.Start(context.Background(), "Parent operation...") | ||||||||||||||||||||||||||
defer span.End() | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
_, span = tracer.Start(ctx, "Sub operation...") | ||||||||||||||||||||||||||
defer span.End() | ||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
func getCurrentSampledSpan() trace.Span { | ||||||||||||||||||||||||||
var span trace.Span | ||||||||||||||||||||||||||
ctx, span := tracer.Start( | ||||||||||||||||||||||||||
context.Background(), | ||||||||||||||||||||||||||
"Example Trace", | ||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||
defer span.End() | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
return trace.SpanFromContext(ctx) | ||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
func addAttributesToSampledSpan() { | ||||||||||||||||||||||||||
var span trace.Span | ||||||||||||||||||||||||||
_, span = tracer.Start( | ||||||||||||||||||||||||||
context.Background(), | ||||||||||||||||||||||||||
"Example Trace", | ||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||
defer span.End() | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
span.SetAttributes(attribute.Key("example attribute 1").String("value 1")) | ||||||||||||||||||||||||||
span.SetAttributes(attribute.Key("example attribute 2").String("value 2")) | ||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
func startAndEndUnSampledSpan() { | ||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The created span in this function will come from a There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Good callout. I will probably add tracer with |
||||||||||||||||||||||||||
var span trace.Span | ||||||||||||||||||||||||||
_, span = tracer.Start( | ||||||||||||||||||||||||||
context.Background(), | ||||||||||||||||||||||||||
"Example Trace", | ||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
defer span.End() | ||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
func startAndEndNestedUnSampledSpan() { | ||||||||||||||||||||||||||
var span trace.Span | ||||||||||||||||||||||||||
ctx, span := tracer.Start(context.Background(), "Parent operation...") | ||||||||||||||||||||||||||
defer span.End() | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
_, span = tracer.Start(ctx, "Sub operation...") | ||||||||||||||||||||||||||
defer span.End() | ||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
func getCurrentUnSampledSpan() trace.Span { | ||||||||||||||||||||||||||
var span trace.Span | ||||||||||||||||||||||||||
ctx, span := tracer.Start( | ||||||||||||||||||||||||||
context.Background(), | ||||||||||||||||||||||||||
"Example Trace", | ||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||
defer span.End() | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
return trace.SpanFromContext(ctx) | ||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
func addAttributesToUnSampledSpan() { | ||||||||||||||||||||||||||
var span trace.Span | ||||||||||||||||||||||||||
_, span = tracer.Start( | ||||||||||||||||||||||||||
context.Background(), | ||||||||||||||||||||||||||
"Example Trace", | ||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||
defer span.End() | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
span.SetAttributes(attribute.Key("example attribute 1").String("value 1")) | ||||||||||||||||||||||||||
span.SetAttributes(attribute.Key("example attribute 2").String("value 2")) | ||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
func initialization() { | ||||||||||||||||||||||||||
idg := NewIDGenerator() | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
tp := sdktrace.NewTracerProvider( | ||||||||||||||||||||||||||
sdktrace.WithSampler(sdktrace.AlwaysSample()), | ||||||||||||||||||||||||||
sdktrace.WithIDGenerator(idg), | ||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
otel.SetTracerProvider(tp) | ||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||||||||||||||
otel.SetTextMapPropagator(Propagator{}) | ||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||
Aneurysm9 marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
func BenchmarkStartAndEndSampledSpan(b *testing.B) { | ||||||||||||||||||||||||||
currentTraceProvider := otel.GetTracerProvider() | ||||||||||||||||||||||||||
currentPropagator := otel.GetTextMapPropagator() | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
initialization() | ||||||||||||||||||||||||||
for i := 0; i < b.N; i++ { | ||||||||||||||||||||||||||
startAndEndSampledSpan() | ||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||||||||||||||
otel.SetTracerProvider(currentTraceProvider) | ||||||||||||||||||||||||||
otel.SetTextMapPropagator(currentPropagator) | ||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
func BenchmarkStartAndEndNestedSampledSpan(b *testing.B) { | ||||||||||||||||||||||||||
currentTraceProvider := otel.GetTracerProvider() | ||||||||||||||||||||||||||
currentPropagator := otel.GetTextMapPropagator() | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
initialization() | ||||||||||||||||||||||||||
for i := 0; i < b.N; i++ { | ||||||||||||||||||||||||||
startAndEndNestedSampledSpan() | ||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||||||||||||||
otel.SetTracerProvider(currentTraceProvider) | ||||||||||||||||||||||||||
otel.SetTextMapPropagator(currentPropagator) | ||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
func BenchmarkGetCurrentSampledSpan(b *testing.B) { | ||||||||||||||||||||||||||
currentTraceProvider := otel.GetTracerProvider() | ||||||||||||||||||||||||||
currentPropagator := otel.GetTextMapPropagator() | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
initialization() | ||||||||||||||||||||||||||
for i := 0; i < b.N; i++ { | ||||||||||||||||||||||||||
getCurrentSampledSpan() | ||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||
otel.SetTracerProvider(currentTraceProvider) | ||||||||||||||||||||||||||
otel.SetTextMapPropagator(currentPropagator) | ||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
func BenchmarkAddAttributesToSampledSpan(b *testing.B) { | ||||||||||||||||||||||||||
currentTraceProvider := otel.GetTracerProvider() | ||||||||||||||||||||||||||
currentPropagator := otel.GetTextMapPropagator() | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
initialization() | ||||||||||||||||||||||||||
for i := 0; i < b.N; i++ { | ||||||||||||||||||||||||||
addAttributesToSampledSpan() | ||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||
otel.SetTracerProvider(currentTraceProvider) | ||||||||||||||||||||||||||
otel.SetTextMapPropagator(currentPropagator) | ||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
func BenchmarkStartAndEndUnSampledSpan(b *testing.B) { | ||||||||||||||||||||||||||
currentTraceProvider := otel.GetTracerProvider() | ||||||||||||||||||||||||||
currentPropagator := otel.GetTextMapPropagator() | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
initialization() | ||||||||||||||||||||||||||
for i := 0; i < b.N; i++ { | ||||||||||||||||||||||||||
startAndEndUnSampledSpan() | ||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||
otel.SetTracerProvider(currentTraceProvider) | ||||||||||||||||||||||||||
otel.SetTextMapPropagator(currentPropagator) | ||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
func BenchmarkStartAndEndNestedUnSampledSpan(b *testing.B) { | ||||||||||||||||||||||||||
currentTraceProvider := otel.GetTracerProvider() | ||||||||||||||||||||||||||
currentPropagator := otel.GetTextMapPropagator() | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
initialization() | ||||||||||||||||||||||||||
for i := 0; i < b.N; i++ { | ||||||||||||||||||||||||||
startAndEndNestedUnSampledSpan() | ||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||
otel.SetTracerProvider(currentTraceProvider) | ||||||||||||||||||||||||||
otel.SetTextMapPropagator(currentPropagator) | ||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
func BenchmarkGetCurrentUnSampledSpan(b *testing.B) { | ||||||||||||||||||||||||||
currentTraceProvider := otel.GetTracerProvider() | ||||||||||||||||||||||||||
currentPropagator := otel.GetTextMapPropagator() | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
initialization() | ||||||||||||||||||||||||||
for i := 0; i < b.N; i++ { | ||||||||||||||||||||||||||
getCurrentUnSampledSpan() | ||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||
otel.SetTracerProvider(currentTraceProvider) | ||||||||||||||||||||||||||
otel.SetTextMapPropagator(currentPropagator) | ||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
func BenchmarkAddAttributesToUnSampledSpan(b *testing.B) { | ||||||||||||||||||||||||||
currentTraceProvider := otel.GetTracerProvider() | ||||||||||||||||||||||||||
currentPropagator := otel.GetTextMapPropagator() | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
initialization() | ||||||||||||||||||||||||||
for i := 0; i < b.N; i++ { | ||||||||||||||||||||||||||
addAttributesToUnSampledSpan() | ||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
otel.SetTracerProvider(currentTraceProvider) | ||||||||||||||||||||||||||
otel.SetTextMapPropagator(currentPropagator) | ||||||||||||||||||||||||||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This file should be renamed to something descriptive of the benchmarks included. I.e.
idgenerator_benchmark_test.go