MCPcopy
hub / github.com/jackc/pgx / TestTracePrepare

Function TestTracePrepare

tracer_test.go:472–521  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

470}
471
472func TestTracePrepare(t *testing.T) {
473 t.Parallel()
474
475 tracer := &testTracer{}
476
477 ctr := defaultConnTestRunner
478 ctr.CreateConfig = func(ctx context.Context, t testing.TB) *pgx.ConnConfig {
479 config := defaultConnTestRunner.CreateConfig(ctx, t)
480 config.Tracer = tracer
481 return config
482 }
483
484 ctx, cancel := context.WithTimeout(context.Background(), 120*time.Second)
485 defer cancel()
486
487 pgxtest.RunWithQueryExecModes(ctx, t, ctr, nil, func(ctx context.Context, t testing.TB, conn *pgx.Conn) {
488 tracePrepareStartCalled := false
489 tracer.tracePrepareStart = func(ctx context.Context, conn *pgx.Conn, data pgx.TracePrepareStartData) context.Context {
490 tracePrepareStartCalled = true
491 require.Equal(t, `ps`, data.Name)
492 require.Equal(t, `select $1::text`, data.SQL)
493 return context.WithValue(ctx, ctxKey("fromTracePrepareStart"), "foo")
494 }
495
496 tracePrepareEndCalled := false
497 tracer.tracePrepareEnd = func(ctx context.Context, conn *pgx.Conn, data pgx.TracePrepareEndData) {
498 tracePrepareEndCalled = true
499 require.False(t, data.AlreadyPrepared)
500 require.NoError(t, data.Err)
501 }
502
503 _, err := conn.Prepare(ctx, "ps", `select $1::text`)
504 require.NoError(t, err)
505 require.True(t, tracePrepareStartCalled)
506 require.True(t, tracePrepareEndCalled)
507
508 tracePrepareStartCalled = false
509 tracePrepareEndCalled = false
510 tracer.tracePrepareEnd = func(ctx context.Context, conn *pgx.Conn, data pgx.TracePrepareEndData) {
511 tracePrepareEndCalled = true
512 require.True(t, data.AlreadyPrepared)
513 require.NoError(t, data.Err)
514 }
515
516 _, err = conn.Prepare(ctx, "ps", `select $1::text`)
517 require.NoError(t, err)
518 require.True(t, tracePrepareStartCalled)
519 require.True(t, tracePrepareEndCalled)
520 })
521}
522
523func TestTraceConnect(t *testing.T) {
524 t.Parallel()

Callers

nothing calls this directly

Calls 3

RunWithQueryExecModesFunction · 0.92
ctxKeyTypeAlias · 0.70
PrepareMethod · 0.65

Tested by

no test coverage detected