vendor dependencies with dep
This commit is contained in:
parent
93d8310491
commit
1384296a47
2712 changed files with 965742 additions and 0 deletions
130
vendor/github.com/go-pg/pg/tx_test.go
generated
vendored
Normal file
130
vendor/github.com/go-pg/pg/tx_test.go
generated
vendored
Normal file
|
|
@ -0,0 +1,130 @@
|
|||
package pg_test
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"github.com/go-pg/pg"
|
||||
|
||||
. "gopkg.in/check.v1"
|
||||
)
|
||||
|
||||
var _ = Suite(&TxTest{})
|
||||
|
||||
type TxTest struct {
|
||||
db *pg.DB
|
||||
}
|
||||
|
||||
func (t *TxTest) SetUpTest(c *C) {
|
||||
t.db = pg.Connect(pgOptions())
|
||||
}
|
||||
|
||||
func (t *TxTest) TearDownTest(c *C) {
|
||||
c.Assert(t.db.Close(), IsNil)
|
||||
}
|
||||
|
||||
func (t *TxTest) TestMultiPrepare(c *C) {
|
||||
tx, err := t.db.Begin()
|
||||
c.Assert(err, IsNil)
|
||||
|
||||
stmt1, err := tx.Prepare(`SELECT 'test_multi_prepare_tx1'`)
|
||||
c.Assert(err, IsNil)
|
||||
|
||||
stmt2, err := tx.Prepare(`SELECT 'test_multi_prepare_tx2'`)
|
||||
c.Assert(err, IsNil)
|
||||
|
||||
var s1 string
|
||||
_, err = stmt1.QueryOne(pg.Scan(&s1))
|
||||
c.Assert(err, IsNil)
|
||||
c.Assert(s1, Equals, "test_multi_prepare_tx1")
|
||||
|
||||
var s2 string
|
||||
_, err = stmt2.QueryOne(pg.Scan(&s2))
|
||||
c.Assert(err, IsNil)
|
||||
c.Assert(s2, Equals, "test_multi_prepare_tx2")
|
||||
|
||||
c.Assert(tx.Rollback(), IsNil)
|
||||
}
|
||||
|
||||
func (t *TxTest) TestCopyFromInTransaction(c *C) {
|
||||
data := "hello\t5\nworld\t5\nfoo\t3\nbar\t3\n"
|
||||
|
||||
_, err := t.db.Exec("DROP TABLE IF EXISTS test_copy_from")
|
||||
c.Assert(err, IsNil)
|
||||
|
||||
_, err = t.db.Exec("CREATE TABLE test_copy_from(word text, len int)")
|
||||
c.Assert(err, IsNil)
|
||||
|
||||
tx1, err := t.db.Begin()
|
||||
c.Assert(err, IsNil)
|
||||
tx2, err := t.db.Begin()
|
||||
c.Assert(err, IsNil)
|
||||
|
||||
r := strings.NewReader(data)
|
||||
res, err := tx1.CopyFrom(r, "COPY test_copy_from FROM STDIN")
|
||||
c.Assert(err, IsNil)
|
||||
c.Assert(res.RowsAffected(), Equals, 4)
|
||||
|
||||
var count int
|
||||
_, err = tx1.QueryOne(pg.Scan(&count), "SELECT COUNT(*) FROM test_copy_from")
|
||||
c.Assert(err, IsNil)
|
||||
c.Assert(count, Equals, 4)
|
||||
|
||||
_, err = tx2.QueryOne(pg.Scan(&count), "SELECT COUNT(*) FROM test_copy_from")
|
||||
c.Assert(err, IsNil)
|
||||
c.Assert(count, Equals, 0)
|
||||
|
||||
c.Assert(tx1.Commit(), IsNil)
|
||||
|
||||
_, err = tx2.QueryOne(pg.Scan(&count), "SELECT COUNT(*) FROM test_copy_from")
|
||||
c.Assert(err, IsNil)
|
||||
c.Assert(count, Equals, 4) // assuming READ COMMITTED
|
||||
|
||||
c.Assert(tx2.Rollback(), IsNil)
|
||||
|
||||
_, err = t.db.Exec("DROP TABLE IF EXISTS test_copy_from")
|
||||
c.Assert(err, IsNil)
|
||||
}
|
||||
|
||||
func (t *TxTest) TestCopyFromInTransactionWithErrors(c *C) {
|
||||
// too many fields on second line
|
||||
data := "hello\t5\nworld\t5\t6\t8\t9\nfoo\t3\nbar\t3\n"
|
||||
|
||||
_, err := t.db.Exec("DROP TABLE IF EXISTS test_copy_from")
|
||||
c.Assert(err, IsNil)
|
||||
|
||||
_, err = t.db.Exec("CREATE TABLE test_copy_from(word text, len int)")
|
||||
c.Assert(err, IsNil)
|
||||
_, err = t.db.Exec("INSERT INTO test_copy_from VALUES ('xxx', 3)")
|
||||
c.Assert(err, IsNil)
|
||||
|
||||
tx1, err := t.db.Begin()
|
||||
c.Assert(err, IsNil)
|
||||
tx2, err := t.db.Begin()
|
||||
c.Assert(err, IsNil)
|
||||
|
||||
_, err = tx1.Exec("INSERT INTO test_copy_from VALUES ('yyy', 3)")
|
||||
c.Assert(err, IsNil)
|
||||
|
||||
r := strings.NewReader(data)
|
||||
_, err = tx1.CopyFrom(r, "COPY test_copy_from FROM STDIN")
|
||||
c.Assert(err, Not(IsNil))
|
||||
|
||||
var count int
|
||||
_, err = tx1.QueryOne(pg.Scan(&count), "SELECT COUNT(*) FROM test_copy_from")
|
||||
c.Assert(err, Not(IsNil)) // transaction has errors, cannot proceed
|
||||
|
||||
_, err = tx2.QueryOne(pg.Scan(&count), "SELECT COUNT(*) FROM test_copy_from")
|
||||
c.Assert(err, IsNil)
|
||||
c.Assert(count, Equals, 1)
|
||||
|
||||
c.Assert(tx1.Commit(), IsNil) // actually ROLLBACK happens here
|
||||
|
||||
_, err = tx2.QueryOne(pg.Scan(&count), "SELECT COUNT(*) FROM test_copy_from")
|
||||
c.Assert(err, IsNil)
|
||||
c.Assert(count, Equals, 1) // other transaction was rolled back so it's not 2 and not 6
|
||||
|
||||
c.Assert(tx2.Rollback(), IsNil)
|
||||
|
||||
_, err = t.db.Exec("DROP TABLE IF EXISTS test_copy_from")
|
||||
c.Assert(err, IsNil)
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue