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

Function TestTraceWithinTx

tracer_test.go:573–608  ·  view source on GitHub ↗

Ensure tracer runs within a transaction. https://github.com/jackc/pgx/issues/2304

(t *testing.T)

Source from the content-addressed store, hash-verified

571//
572// https://github.com/jackc/pgx/issues/2304
573func TestTraceWithinTx(t *testing.T) {
574 t.Parallel()
575
576 tracer := &testTracer{}
577
578 ctr := defaultConnTestRunner
579 ctr.CreateConfig = func(ctx context.Context, t testing.TB) *pgx.ConnConfig {
580 config := defaultConnTestRunner.CreateConfig(ctx, t)
581 config.Tracer = tracer
582 return config
583 }
584
585 ctx, cancel := context.WithTimeout(context.Background(), 120*time.Second)
586 defer cancel()
587
588 pgxtest.RunWithQueryExecModes(ctx, t, ctr, nil, func(ctx context.Context, t testing.TB, conn *pgx.Conn) {
589 var queries []string
590 tracer.traceQueryStart = func(ctx context.Context, conn *pgx.Conn, data pgx.TraceQueryStartData) context.Context {
591 queries = append(queries, data.SQL)
592 return ctx
593 }
594
595 tx, err := conn.Begin(ctx)
596 require.NoError(t, err)
597 defer tx.Rollback(ctx)
598 _, err = tx.Exec(ctx, `select $1::text`, "testing")
599 require.NoError(t, err)
600 err = tx.Commit(ctx)
601 require.NoError(t, err)
602
603 require.Len(t, queries, 3)
604 require.Equal(t, `begin`, queries[0])
605 require.Equal(t, `select $1::text`, queries[1])
606 require.Equal(t, `commit`, queries[2])
607 })
608}

Callers

nothing calls this directly

Calls 6

RunWithQueryExecModesFunction · 0.92
BeginMethod · 0.65
RollbackMethod · 0.65
ExecMethod · 0.65
CommitMethod · 0.65
LenMethod · 0.65

Tested by

no test coverage detected