MCPcopy
hub / github.com/redis/go-redis / TestTracingHook_ProcessHook

Function TestTracingHook_ProcessHook

extra/redisotel/tracing_test.go:396–445  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

394}
395
396func TestTracingHook_ProcessHook(t *testing.T) {
397 imsb := tracetest.NewInMemoryExporter()
398 provider := sdktrace.NewTracerProvider(sdktrace.WithSyncer(imsb))
399 hook := newTracingHook(
400 "redis://localhost:6379",
401 WithTracerProvider(provider),
402 )
403
404 tests := []struct {
405 name string
406 errTest error
407 }{
408 {"nil error", nil},
409 {"test error", fmt.Errorf("test error")},
410 }
411
412 for _, tt := range tests {
413 t.Run(tt.name, func(t *testing.T) {
414 defer imsb.Reset()
415
416 cmd := redis.NewCmd(context.Background(), "ping")
417 processHook := hook.ProcessHook(func(ctx context.Context, cmd redis.Cmder) error {
418 return tt.errTest
419 })
420 assertEqual(t, tt.errTest, processHook(context.Background(), cmd))
421 assertEqual(t, 1, len(imsb.GetSpans()))
422
423 spanData := imsb.GetSpans()[0]
424 assertEqual(t, instrumName, spanData.InstrumentationLibrary.Name)
425 assertEqual(t, "ping", spanData.Name)
426 assertEqual(t, trace.SpanKindClient, spanData.SpanKind)
427 assertAttributeContains(t, spanData.Attributes, semconv.DBSystemRedis)
428 assertAttributeContains(t, spanData.Attributes, semconv.DBConnectionStringKey.String("redis://localhost:6379"))
429 assertAttributeContains(t, spanData.Attributes, semconv.DBStatementKey.String("ping"))
430
431 if tt.errTest == nil {
432 assertEqual(t, 0, len(spanData.Events))
433 assertEqual(t, codes.Unset, spanData.Status.Code)
434 assertEqual(t, "", spanData.Status.Description)
435 return
436 }
437
438 assertEqual(t, 1, len(spanData.Events))
439 assertAttributeContains(t, spanData.Events[0].Attributes, semconv.ExceptionTypeKey.String("*errors.errorString"))
440 assertAttributeContains(t, spanData.Events[0].Attributes, semconv.ExceptionMessageKey.String(tt.errTest.Error()))
441 assertEqual(t, codes.Error, spanData.Status.Code)
442 assertEqual(t, tt.errTest.Error(), spanData.Status.Description)
443 })
444 }
445}
446
447func TestTracingHook_ProcessPipelineHook(t *testing.T) {
448 imsb := tracetest.NewInMemoryExporter()

Callers

nothing calls this directly

Calls 9

newTracingHookFunction · 0.85
WithTracerProviderFunction · 0.85
assertEqualFunction · 0.85
assertAttributeContainsFunction · 0.85
ProcessHookMethod · 0.65
StringMethod · 0.65
RunMethod · 0.45
ResetMethod · 0.45
ErrorMethod · 0.45

Tested by

no test coverage detected