diff --git a/goatherd_test.go b/goatherd_test.go index e342e74af9dcdc1a940c5115b58235449d577396..144b26c6553ee764e9a848ac7b8358ea48c50db9 100644 --- a/goatherd_test.go +++ b/goatherd_test.go @@ -70,6 +70,16 @@ func create_user_t(t *testing.T) { t.Run("stdin", create_and_check("-", "-")) } + +func aborted(t *testing.T, err error, aborted ...interface{}) bool { + if transaction_failed(err) { + t.Log(aborted...) + return true + } else { t_err_fatal(t, err) } + + return false +} + func interleaved_transactions_t(t *testing.T) { var err error var txs [2]*sql.Tx @@ -82,26 +92,17 @@ func interleaved_transactions_t(t *testing.T) { var c uint64 for i, tx := range txs { err = tx.QueryRow("SELECT count FROM users WHERE name = $1", username).Scan(&c) - if transaction_failed(err) { - t.Log("rollback after select", i) - return - } else { t_err_fatal(t, err) } + if aborted(t, err, "rollback after select", i) { return } } for i, tx := range txs { t.Log("update", i) _, err := tx.Exec("UPDATE users SET count = $1 WHERE name = $2", c + uint64(i), username) - if transaction_failed(err) { - t.Log("rollback after update", i) - return - } else { t_err_fatal(t, err) } + if aborted(t, err, "rollback after update", i) { return } t.Log("commit", i) err = tx.Commit() - if transaction_failed(err) { - t.Log("rollback after commit", i) - return - } else { t_err_fatal(t, err) } + if aborted(t, err, "rollback after commit", i) { return } } t.Error("No transaction failure despite interleaved transactions!") @@ -119,36 +120,21 @@ func nested_transactions_t(t *testing.T) { t_err_fatal(t, outer.QueryRow("SELECT count FROM users WHERE name = $1", username).Scan(&c)) err = inner.QueryRow("SELECT count FROM users WHERE name = $1", username).Scan(&c) - if transaction_failed(err) { - t.Log("rollback after inner.Query") - return - } else { t_err_fatal(t, err) } + if aborted(t, err, "rollback after inner.Query") { return } t.Log("update inner") _, err = inner.Exec("UPDATE users SET count = $1 WHERE name = $2", c + 1, username) - if transaction_failed(err) { - t.Log("rollback after inner.Exec") - return - } else { t_err_fatal(t, err) } + if aborted(t, err, "rollback after inner.Exec") { return } err = inner.Commit() - if transaction_failed(err) { - t.Log("rollback after inner.Commit") - return - } else { t_err_fatal(t, err) } + if aborted(t, err, "rollback after inner.Commit") { return } t.Log("update outer") _, err = outer.Exec("UPDATE users SET count = $1 WHERE name = $2", c + 1, username) - if transaction_failed(err) { - t.Log("rollback after outer.Exec") - return - } else { t_err_fatal(t, err) } + if aborted(t, err, "rollback after outer.Exec") { return } err = outer.Commit() - if transaction_failed(err) { - t.Log("rollback after outer.Commit") - return - } else { t_err_fatal(t, err) } + if aborted(t, err, "rollback after outer.Commit") { return } t.Error("No transaction failure despite nested transactions") }