(t *testing.T)
| 394 | } |
| 395 | |
| 396 | func 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 | |
| 447 | func TestTracingHook_ProcessPipelineHook(t *testing.T) { |
| 448 | imsb := tracetest.NewInMemoryExporter() |
nothing calls this directly
no test coverage detected