From 0a3cfab73eee92aebd6f44c7c42c25f92833d836 Mon Sep 17 00:00:00 2001 From: Adam Pantel Date: Fri, 22 Nov 2019 11:02:01 -0500 Subject: [PATCH 1/3] Eliminate race condition in TestListenNotifyWhileBusyIsSafe --- conn_test.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/conn_test.go b/conn_test.go index f2103775..b8b5f460 100644 --- a/conn_test.go +++ b/conn_test.go @@ -527,6 +527,7 @@ func TestListenNotifyWhileBusyIsSafe(t *testing.T) { t.Parallel() listenerDone := make(chan bool) + notifierDone := make(chan bool) go func() { conn := mustConnectString(t, os.Getenv("PGX_TEST_DATABASE")) defer closeConn(t, conn) @@ -547,7 +548,9 @@ func TestListenNotifyWhileBusyIsSafe(t *testing.T) { for rows.Next() { var n int32 - rows.Scan(&n) + if err := rows.Scan(&n); err != nil { + t.Fatalf("Row scan failed: %v", err) + } sum += n rowCount++ } @@ -571,6 +574,9 @@ func TestListenNotifyWhileBusyIsSafe(t *testing.T) { go func() { conn := mustConnectString(t, os.Getenv("PGX_TEST_DATABASE")) defer closeConn(t, conn) + defer func() { + notifierDone <- true + }() for i := 0; i < 100000; i++ { mustExec(t, conn, "notify busysafe, 'hello'") @@ -579,6 +585,7 @@ func TestListenNotifyWhileBusyIsSafe(t *testing.T) { }() <-listenerDone + <-notifierDone } func TestListenNotifySelfNotification(t *testing.T) { From f989008ad5a1d9d9e11682223741aafab2238294 Mon Sep 17 00:00:00 2001 From: Adam Pantel Date: Fri, 22 Nov 2019 11:03:08 -0500 Subject: [PATCH 2/3] Clarify error reporting in TestConnQueryErrorWhileReturningRows --- query_test.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/query_test.go b/query_test.go index 8de633ab..8b12b828 100644 --- a/query_test.go +++ b/query_test.go @@ -549,11 +549,13 @@ func TestConnQueryErrorWhileReturningRows(t *testing.T) { for rows.Next() { var n int32 - rows.Scan(&n) + if err := rows.Scan(&n); err != nil { + t.Fatalf("Row scan failed: %v", err) + } } - if err, ok := rows.Err().(*pgconn.PgError); !ok { - t.Fatalf("Expected pgx.PgError, got %v", err) + if _, ok := rows.Err().(*pgconn.PgError); !ok { + t.Fatalf("Expected pgx.PgError, got %v", rows.Err()) } ensureConnValid(t, conn) From 167442e66b09240c14fb4189ff31d68576bed420 Mon Sep 17 00:00:00 2001 From: Adam Pantel Date: Fri, 22 Nov 2019 11:51:29 -0500 Subject: [PATCH 3/3] Add a couple error checks --- pgxpool/pool_test.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pgxpool/pool_test.go b/pgxpool/pool_test.go index 8db8f169..bc02b0bf 100644 --- a/pgxpool/pool_test.go +++ b/pgxpool/pool_test.go @@ -196,6 +196,7 @@ func TestConnReleaseChecksMaxConnLifetime(t *testing.T) { config.MaxConnLifetime = 250 * time.Millisecond db, err := pgxpool.ConnectConfig(context.Background(), config) + require.NoError(t, err) defer db.Close() c, err := db.Acquire(context.Background()) @@ -240,6 +241,7 @@ func TestPoolBackgroundChecksMaxConnLifetime(t *testing.T) { config.HealthCheckPeriod = 100 * time.Millisecond db, err := pgxpool.ConnectConfig(context.Background(), config) + require.NoError(t, err) defer db.Close() c, err := db.Acquire(context.Background()) @@ -449,7 +451,8 @@ func TestConnReleaseDestroysClosedConn(t *testing.T) { c, err := pool.Acquire(ctx) require.NoError(t, err) - c.Conn().Close(ctx) + err = c.Conn().Close(ctx) + require.NoError(t, err) assert.EqualValues(t, 1, pool.Stat().TotalConns())