Skip to content

Commit e9aad0f

Browse files
committed
Add test for tracer within transaction
#2304
1 parent 9e7f38c commit e9aad0f

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

tracer_test.go

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -566,3 +566,43 @@ func TestTraceConnect(t *testing.T) {
566566
require.True(t, traceConnectStartCalled)
567567
require.True(t, traceConnectEndCalled)
568568
}
569+
570+
// Ensure tracer runs within a transaction.
571+
//
572+
// https://github.com/jackc/pgx/issues/2304
573+
func 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+
}

0 commit comments

Comments
 (0)