mirror of
https://github.com/redis/go-redis.git
synced 2025-07-29 17:41:15 +03:00
feat(redisotel): add WithCallerEnabled option (#3415)
* feat(redisotel): add WithCaller option Allow the disabling the collection of the `code.function`, `code.filepath` and `code.lineno` tracing attributes. When setting `WithCaller(false)` overall performance is increased as the "expensive" `runtime.Callers` and `runtime.(*Frames).Next` calls are no longer needed. * chore(redisotel): improve docblock language * chore(redisotel): rename `WithCaller` to `WithCallerEnabled` --------- Co-authored-by: Nedyalko Dyakov <1547186+ndyakov@users.noreply.github.com>
This commit is contained in:
@ -66,6 +66,35 @@ func TestWithDBStatement(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestWithoutCaller(t *testing.T) {
|
||||
provider := sdktrace.NewTracerProvider()
|
||||
hook := newTracingHook(
|
||||
"",
|
||||
WithTracerProvider(provider),
|
||||
WithCallerEnabled(false),
|
||||
)
|
||||
ctx, span := provider.Tracer("redis-test").Start(context.TODO(), "redis-test")
|
||||
cmd := redis.NewCmd(ctx, "ping")
|
||||
defer span.End()
|
||||
|
||||
processHook := hook.ProcessHook(func(ctx context.Context, cmd redis.Cmder) error {
|
||||
attrs := trace.SpanFromContext(ctx).(sdktrace.ReadOnlySpan).Attributes()
|
||||
for _, attr := range attrs {
|
||||
switch attr.Key {
|
||||
case semconv.CodeFunctionKey,
|
||||
semconv.CodeFilepathKey,
|
||||
semconv.CodeLineNumberKey:
|
||||
t.Fatalf("Attribute with %s statement should not exist", attr.Key)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
})
|
||||
err := processHook(ctx, cmd)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestTracingHook_DialHook(t *testing.T) {
|
||||
imsb := tracetest.NewInMemoryExporter()
|
||||
provider := sdktrace.NewTracerProvider(sdktrace.WithSyncer(imsb))
|
||||
|
Reference in New Issue
Block a user