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

Function TestPoolAfterRelease

pgxpool/pool_test.go:454–491  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

452}
453
454func TestPoolAfterRelease(t *testing.T) {
455 t.Parallel()
456
457 ctx, cancel := context.WithTimeout(context.Background(), 120*time.Second)
458 defer cancel()
459
460 func() {
461 pool, err := pgxpool.New(ctx, os.Getenv("PGX_TEST_DATABASE"))
462 require.NoError(t, err)
463 defer pool.Close()
464 }()
465
466 config, err := pgxpool.ParseConfig(os.Getenv("PGX_TEST_DATABASE"))
467 require.NoError(t, err)
468
469 afterReleaseCount := 0
470
471 config.AfterRelease = func(c *pgx.Conn) bool {
472 afterReleaseCount++
473 return afterReleaseCount%2 == 1
474 }
475
476 db, err := pgxpool.NewWithConfig(ctx, config)
477 require.NoError(t, err)
478 defer db.Close()
479
480 connPIDs := map[uint32]struct{}{}
481
482 for range 10 {
483 conn, err := db.Acquire(ctx)
484 assert.NoError(t, err)
485 connPIDs[conn.Conn().PgConn().PID()] = struct{}{}
486 conn.Release()
487 waitForReleaseToComplete()
488 }
489
490 assert.EqualValues(t, 5, len(connPIDs))
491}
492
493func TestPoolBeforeClose(t *testing.T) {
494 t.Parallel()

Callers

nothing calls this directly

Calls 10

NewFunction · 0.92
ParseConfigFunction · 0.92
NewWithConfigFunction · 0.92
waitForReleaseToCompleteFunction · 0.85
AcquireMethod · 0.80
PIDMethod · 0.80
PgConnMethod · 0.80
ReleaseMethod · 0.80
CloseMethod · 0.65
ConnMethod · 0.65

Tested by

no test coverage detected