mirror of https://github.com/jackc/pgx.git
Fix testing Fatalf in goroutines
parent
d245ed47f1
commit
9e55cff611
28
conn_test.go
28
conn_test.go
|
@ -546,6 +546,12 @@ func TestListenNotify(t *testing.T) {
|
||||||
func TestListenNotifyWhileBusyIsSafe(t *testing.T) {
|
func TestListenNotifyWhileBusyIsSafe(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
|
|
||||||
|
func() {
|
||||||
|
conn := mustConnectString(t, os.Getenv("PGX_TEST_DATABASE"))
|
||||||
|
defer closeConn(t, conn)
|
||||||
|
skipCockroachDB(t, conn, "Server does not support LISTEN / NOTIFY (https://github.com/cockroachdb/cockroach/issues/41522)")
|
||||||
|
}()
|
||||||
|
|
||||||
listenerDone := make(chan bool)
|
listenerDone := make(chan bool)
|
||||||
notifierDone := make(chan bool)
|
notifierDone := make(chan bool)
|
||||||
go func() {
|
go func() {
|
||||||
|
@ -555,8 +561,6 @@ func TestListenNotifyWhileBusyIsSafe(t *testing.T) {
|
||||||
listenerDone <- true
|
listenerDone <- true
|
||||||
}()
|
}()
|
||||||
|
|
||||||
skipCockroachDB(t, conn, "Server does not support LISTEN / NOTIFY (https://github.com/cockroachdb/cockroach/issues/41522)")
|
|
||||||
|
|
||||||
mustExec(t, conn, "listen busysafe")
|
mustExec(t, conn, "listen busysafe")
|
||||||
|
|
||||||
for i := 0; i < 5000; i++ {
|
for i := 0; i < 5000; i++ {
|
||||||
|
@ -565,28 +569,33 @@ func TestListenNotifyWhileBusyIsSafe(t *testing.T) {
|
||||||
|
|
||||||
rows, err := conn.Query(context.Background(), "select generate_series(1,$1)", 100)
|
rows, err := conn.Query(context.Background(), "select generate_series(1,$1)", 100)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("conn.Query failed: %v", err)
|
t.Errorf("conn.Query failed: %v", err)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
for rows.Next() {
|
for rows.Next() {
|
||||||
var n int32
|
var n int32
|
||||||
if err := rows.Scan(&n); err != nil {
|
if err := rows.Scan(&n); err != nil {
|
||||||
t.Fatalf("Row scan failed: %v", err)
|
t.Errorf("Row scan failed: %v", err)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
sum += n
|
sum += n
|
||||||
rowCount++
|
rowCount++
|
||||||
}
|
}
|
||||||
|
|
||||||
if rows.Err() != nil {
|
if rows.Err() != nil {
|
||||||
t.Fatalf("conn.Query failed: %v", err)
|
t.Errorf("conn.Query failed: %v", err)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if sum != 5050 {
|
if sum != 5050 {
|
||||||
t.Fatalf("Wrong rows sum: %v", sum)
|
t.Errorf("Wrong rows sum: %v", sum)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if rowCount != 100 {
|
if rowCount != 100 {
|
||||||
t.Fatalf("Wrong number of rows: %v", rowCount)
|
t.Errorf("Wrong number of rows: %v", rowCount)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
time.Sleep(1 * time.Microsecond)
|
time.Sleep(1 * time.Microsecond)
|
||||||
|
@ -600,8 +609,6 @@ func TestListenNotifyWhileBusyIsSafe(t *testing.T) {
|
||||||
notifierDone <- true
|
notifierDone <- true
|
||||||
}()
|
}()
|
||||||
|
|
||||||
skipCockroachDB(t, conn, "Server does not support LISTEN / NOTIFY (https://github.com/cockroachdb/cockroach/issues/41522)")
|
|
||||||
|
|
||||||
for i := 0; i < 100000; i++ {
|
for i := 0; i < 100000; i++ {
|
||||||
mustExec(t, conn, "notify busysafe, 'hello'")
|
mustExec(t, conn, "notify busysafe, 'hello'")
|
||||||
time.Sleep(1 * time.Microsecond)
|
time.Sleep(1 * time.Microsecond)
|
||||||
|
@ -664,7 +671,8 @@ func TestFatalRxError(t *testing.T) {
|
||||||
err := conn.QueryRow(context.Background(), "select 1::int4, pg_sleep(10)::varchar").Scan(&n, &s)
|
err := conn.QueryRow(context.Background(), "select 1::int4, pg_sleep(10)::varchar").Scan(&n, &s)
|
||||||
if pgErr, ok := err.(*pgconn.PgError); ok && pgErr.Severity == "FATAL" {
|
if pgErr, ok := err.(*pgconn.PgError); ok && pgErr.Severity == "FATAL" {
|
||||||
} else {
|
} else {
|
||||||
t.Fatalf("Expected QueryRow Scan to return fatal PgError, but instead received %v", err)
|
t.Errorf("Expected QueryRow Scan to return fatal PgError, but instead received %v", err)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue