Skip to content
Snippets Groups Projects
Commit fe82db40aa33 authored by Christophe de Vienne's avatar Christophe de Vienne
Browse files

database test: fix a deadlock when migration fails

parent 408c56d48ae9
No related branches found
No related tags found
No related merge requests found
...@@ -35,7 +35,9 @@ ...@@ -35,7 +35,9 @@
// GetTestDB creates a db and returns it. It must be closed within the test. // GetTestDB creates a db and returns it. It must be closed within the test.
// If it fails, t.Fatal() is called // If it fails, t.Fatal() is called
func GetTestDB(t *testing.T, sourceDriver source.Driver) *TestDB { func GetTestDB(t *testing.T, sourceDriver source.Driver) *TestDB {
var success bool
dsn := os.Getenv("TEST_DB_DSN") dsn := os.Getenv("TEST_DB_DSN")
if dsn == "" { if dsn == "" {
t.Fatal("Please define a TEST_DB_DSN environment variable") t.Fatal("Please define a TEST_DB_DSN environment variable")
} }
...@@ -38,9 +40,10 @@ ...@@ -38,9 +40,10 @@
dsn := os.Getenv("TEST_DB_DSN") dsn := os.Getenv("TEST_DB_DSN")
if dsn == "" { if dsn == "" {
t.Fatal("Please define a TEST_DB_DSN environment variable") t.Fatal("Please define a TEST_DB_DSN environment variable")
} }
db, err := Open(dsn, 0) db, err := Open(dsn, 0)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
...@@ -42,7 +45,15 @@ ...@@ -42,7 +45,15 @@
db, err := Open(dsn, 0) db, err := Open(dsn, 0)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
defer func() {
if !success {
if err := db.Close(); err != nil {
t.Log("Error closing db:", err)
}
}
}()
c, err := db.Connx(context.Background()) c, err := db.Connx(context.Background())
if err != nil { if err != nil {
...@@ -47,6 +58,5 @@ ...@@ -47,6 +58,5 @@
c, err := db.Connx(context.Background()) c, err := db.Connx(context.Background())
if err != nil { if err != nil {
_ = db.Close()
t.Fatal(err) t.Fatal(err)
} }
...@@ -50,7 +60,15 @@ ...@@ -50,7 +60,15 @@
t.Fatal(err) t.Fatal(err)
} }
defer func() {
if !success {
if err := c.Close(); err != nil {
t.Log("Error closing conn:", err)
}
}
}()
if _, err := c.ExecContext( if _, err := c.ExecContext(
context.Background(), context.Background(),
"SELECT pg_advisory_lock($1)", dbLockID, "SELECT pg_advisory_lock($1)", dbLockID,
); err != nil { ); err != nil {
...@@ -53,8 +71,7 @@ ...@@ -53,8 +71,7 @@
if _, err := c.ExecContext( if _, err := c.ExecContext(
context.Background(), context.Background(),
"SELECT pg_advisory_lock($1)", dbLockID, "SELECT pg_advisory_lock($1)", dbLockID,
); err != nil { ); err != nil {
_ = db.Close()
t.Fatal(err) t.Fatal(err)
} }
...@@ -107,6 +124,7 @@ ...@@ -107,6 +124,7 @@
} }
} }
success = true
return &TestDB{db, t, c} return &TestDB{db, t, c}
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment