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

Function TestTracingHook_DialHook

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

Source from the content-addressed store, hash-verified

342}
343
344func TestTracingHook_DialHook(t *testing.T) {
345 imsb := tracetest.NewInMemoryExporter()
346 provider := sdktrace.NewTracerProvider(sdktrace.WithSyncer(imsb))
347 hook := newTracingHook(
348 "redis://localhost:6379",
349 WithTracerProvider(provider),
350 )
351
352 tests := []struct {
353 name string
354 errTest error
355 }{
356 {"nil error", nil},
357 {"test error", fmt.Errorf("test error")},
358 }
359
360 for _, tt := range tests {
361 t.Run(tt.name, func(t *testing.T) {
362 defer imsb.Reset()
363
364 dialHook := hook.DialHook(func(ctx context.Context, network, addr string) (conn net.Conn, err error) {
365 return nil, tt.errTest
366 })
367 if _, err := dialHook(context.Background(), "tcp", "localhost:6379"); err != tt.errTest {
368 t.Fatal(err)
369 }
370
371 assertEqual(t, 1, len(imsb.GetSpans()))
372
373 spanData := imsb.GetSpans()[0]
374 assertEqual(t, instrumName, spanData.InstrumentationLibrary.Name)
375 assertEqual(t, "redis.dial", spanData.Name)
376 assertEqual(t, trace.SpanKindClient, spanData.SpanKind)
377 assertAttributeContains(t, spanData.Attributes, semconv.DBSystemRedis)
378 assertAttributeContains(t, spanData.Attributes, semconv.DBConnectionStringKey.String("redis://localhost:6379"))
379
380 if tt.errTest == nil {
381 assertEqual(t, 0, len(spanData.Events))
382 assertEqual(t, codes.Unset, spanData.Status.Code)
383 assertEqual(t, "", spanData.Status.Description)
384 return
385 }
386
387 assertEqual(t, 1, len(spanData.Events))
388 assertAttributeContains(t, spanData.Events[0].Attributes, semconv.ExceptionTypeKey.String("*errors.errorString"))
389 assertAttributeContains(t, spanData.Events[0].Attributes, semconv.ExceptionMessageKey.String(tt.errTest.Error()))
390 assertEqual(t, codes.Error, spanData.Status.Code)
391 assertEqual(t, tt.errTest.Error(), spanData.Status.Description)
392 })
393 }
394}
395
396func TestTracingHook_ProcessHook(t *testing.T) {
397 imsb := tracetest.NewInMemoryExporter()

Callers

nothing calls this directly

Calls 9

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

Tested by

no test coverage detected