(t *testing.T)
| 342 | } |
| 343 | |
| 344 | func 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 | |
| 396 | func TestTracingHook_ProcessHook(t *testing.T) { |
| 397 | imsb := tracetest.NewInMemoryExporter() |
nothing calls this directly
no test coverage detected