@@ -453,6 +453,79 @@ func TestLogAcquire(t *testing.T) {
453453 require .Equal (t , tracelog .LogLevelError , logger .logs [1 ].lvl )
454454}
455455
456+ func TestLogAcquireEndContextCanceled (t * testing.T ) {
457+ t .Parallel ()
458+
459+ ctx , cancel := context .WithTimeout (context .Background (), 120 * time .Second )
460+ defer cancel ()
461+
462+ logger := & testLogger {}
463+ tracer := & tracelog.TraceLog {
464+ Logger : logger ,
465+ LogLevel : tracelog .LogLevelError ,
466+ }
467+
468+ config := defaultConnTestRunner .CreateConfig (ctx , t )
469+ poolConfig , err := pgxpool .ParseConfig (config .ConnString ())
470+ require .NoError (t , err )
471+ poolConfig .ConnConfig .Tracer = tracer
472+
473+ t .Run ("LogLevelError with context.Canceled" , func (t * testing.T ) {
474+ t .Cleanup (logger .Clear )
475+
476+ pool , err := pgxpool .NewWithConfig (ctx , poolConfig )
477+ require .NoError (t , err )
478+ t .Cleanup (pool .Close )
479+
480+ ctxCanceled , cancel := context .WithCancel (ctx )
481+ cancel ()
482+
483+ _ , err = pool .Acquire (ctxCanceled )
484+ require .ErrorIs (t , err , context .Canceled )
485+ require .Len (t , logger .logs , 0 )
486+ })
487+
488+ t .Run ("LogLevelError with other error" , func (t * testing.T ) {
489+ t .Cleanup (logger .Clear )
490+
491+ badPoolConfig , err := pgxpool .ParseConfig ("host=/invalid" )
492+ require .NoError (t , err )
493+ badPoolConfig .ConnConfig .Tracer = tracer
494+
495+ pool , err := pgxpool .NewWithConfig (ctx , badPoolConfig )
496+ require .NoError (t , err )
497+ t .Cleanup (pool .Close )
498+
499+ _ , err = pool .Acquire (ctx )
500+ require .Error (t , err )
501+
502+ logs := logger .FilterByMsg ("Acquire" )
503+ require .Len (t , logs , 1 )
504+ require .Equal (t , tracelog .LogLevelError , logs [0 ].lvl )
505+ })
506+
507+ t .Run ("LogLevelDebug with context.Canceled" , func (t * testing.T ) {
508+ t .Cleanup (logger .Clear )
509+
510+ tracer .LogLevel = tracelog .LogLevelDebug
511+
512+ pool , err := pgxpool .NewWithConfig (ctx , poolConfig )
513+ require .NoError (t , err )
514+ t .Cleanup (pool .Close )
515+
516+ ctxCanceled , cancel := context .WithCancel (ctx )
517+ cancel ()
518+
519+ _ , err = pool .Acquire (ctxCanceled )
520+ require .ErrorIs (t , err , context .Canceled )
521+
522+ require .Len (t , logger .logs , 1 )
523+ require .Equal (t , "Acquire" , logger .logs [0 ].msg )
524+ require .Equal (t , tracelog .LogLevelError , logger .logs [0 ].lvl )
525+ require .Equal (t , context .Canceled , logger .logs [0 ].data ["err" ])
526+ })
527+ }
528+
456529func TestLogRelease (t * testing.T ) {
457530 t .Parallel ()
458531
0 commit comments