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

Function TestPoolBeforeAcquire

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

Source from the content-addressed store, hash-verified

350}
351
352func TestPoolBeforeAcquire(t *testing.T) {
353 t.Parallel()
354
355 ctx, cancel := context.WithTimeout(context.Background(), 120*time.Second)
356 defer cancel()
357
358 config, err := pgxpool.ParseConfig(os.Getenv("PGX_TEST_DATABASE"))
359 require.NoError(t, err)
360
361 acquireAttempts := 0
362
363 config.BeforeAcquire = func(ctx context.Context, c *pgx.Conn) bool {
364 acquireAttempts++
365 return acquireAttempts%2 == 0
366 }
367
368 db, err := pgxpool.NewWithConfig(ctx, config)
369 require.NoError(t, err)
370 defer db.Close()
371
372 conns := make([]*pgxpool.Conn, 4)
373 for i := range conns {
374 conns[i], err = db.Acquire(ctx)
375 assert.NoError(t, err)
376 }
377
378 for _, c := range conns {
379 c.Release()
380 }
381 waitForReleaseToComplete()
382
383 assert.EqualValues(t, 8, acquireAttempts)
384
385 conns = db.AcquireAllIdle(ctx)
386 assert.Len(t, conns, 2)
387
388 for _, c := range conns {
389 c.Release()
390 }
391 waitForReleaseToComplete()
392
393 assert.EqualValues(t, 12, acquireAttempts)
394}
395
396func TestPoolPrepareConn(t *testing.T) {
397 t.Parallel()

Callers

nothing calls this directly

Calls 8

ParseConfigFunction · 0.92
NewWithConfigFunction · 0.92
waitForReleaseToCompleteFunction · 0.85
AcquireMethod · 0.80
ReleaseMethod · 0.80
AcquireAllIdleMethod · 0.80
CloseMethod · 0.65
LenMethod · 0.65

Tested by

no test coverage detected