Additional integration tests.
Comment out unused code at the moment.
This commit is contained in:
parent
3fa2220a18
commit
732b4f5579
5 changed files with 92 additions and 66 deletions
73
tests/lock_test.go
Normal file
73
tests/lock_test.go
Normal file
|
|
@ -0,0 +1,73 @@
|
||||||
|
package tests
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"gotest.tools/assert"
|
||||||
|
"testing"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
. "github.com/go-jet/jet"
|
||||||
|
. "github.com/go-jet/jet/tests/genTestDir2/jetdb/dvds/table"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestLockTable(t *testing.T) {
|
||||||
|
expectedSQL := `
|
||||||
|
LOCK TABLE dvds.address IN`
|
||||||
|
|
||||||
|
var testData = []TableLockMode{
|
||||||
|
LOCK_ACCESS_SHARE,
|
||||||
|
LOCK_ROW_SHARE,
|
||||||
|
LOCK_ROW_EXCLUSIVE,
|
||||||
|
LOCK_SHARE_UPDATE_EXCLUSIVE,
|
||||||
|
LOCK_SHARE,
|
||||||
|
LOCK_SHARE_ROW_EXCLUSIVE,
|
||||||
|
LOCK_EXCLUSIVE,
|
||||||
|
LOCK_ACCESS_EXCLUSIVE,
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, lockMode := range testData {
|
||||||
|
query := Address.LOCK().IN(lockMode)
|
||||||
|
|
||||||
|
assertStatementSql(t, query, expectedSQL+" "+string(lockMode)+" MODE;\n")
|
||||||
|
|
||||||
|
tx, _ := db.Begin()
|
||||||
|
|
||||||
|
_, err := query.Exec(tx)
|
||||||
|
|
||||||
|
assert.NilError(t, err)
|
||||||
|
|
||||||
|
err = tx.Rollback()
|
||||||
|
|
||||||
|
assert.NilError(t, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, lockMode := range testData {
|
||||||
|
query := Address.LOCK().IN(lockMode).NOWAIT()
|
||||||
|
|
||||||
|
assertStatementSql(t, query, expectedSQL+" "+string(lockMode)+" MODE NOWAIT;\n")
|
||||||
|
|
||||||
|
tx, _ := db.Begin()
|
||||||
|
|
||||||
|
_, err := query.Exec(tx)
|
||||||
|
|
||||||
|
assert.NilError(t, err)
|
||||||
|
|
||||||
|
err = tx.Rollback()
|
||||||
|
|
||||||
|
assert.NilError(t, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestLockExecContext(t *testing.T) {
|
||||||
|
ctx, cancel := context.WithTimeout(context.Background(), 1*time.Microsecond)
|
||||||
|
defer cancel()
|
||||||
|
|
||||||
|
time.Sleep(10 * time.Microsecond)
|
||||||
|
|
||||||
|
tx, _ := db.Begin()
|
||||||
|
defer tx.Rollback()
|
||||||
|
|
||||||
|
_, err := Address.LOCK().IN(LOCK_ACCESS_SHARE).ExecContext(ctx, tx)
|
||||||
|
|
||||||
|
assert.Error(t, err, "context deadline exceeded")
|
||||||
|
}
|
||||||
|
|
@ -119,6 +119,7 @@ func assertGeneratedFiles(t *testing.T) {
|
||||||
|
|
||||||
// Enums SQL Builder files
|
// Enums SQL Builder files
|
||||||
enumFiles, err := ioutil.ReadDir("./.gentestdata2/jetdb/dvds/enum")
|
enumFiles, err := ioutil.ReadDir("./.gentestdata2/jetdb/dvds/enum")
|
||||||
|
assert.NilError(t, err)
|
||||||
|
|
||||||
assertFileNameEqual(t, enumFiles, "mpaa_rating.go")
|
assertFileNameEqual(t, enumFiles, "mpaa_rating.go")
|
||||||
assertFileContent(t, "./.gentestdata2/jetdb/dvds/enum/mpaa_rating.go", "\npackage enum", mpaaRatingEnumFile)
|
assertFileContent(t, "./.gentestdata2/jetdb/dvds/enum/mpaa_rating.go", "\npackage enum", mpaaRatingEnumFile)
|
||||||
|
|
|
||||||
|
|
@ -1315,54 +1315,6 @@ LIMIT 20;
|
||||||
assert.Equal(t, dest[1].StaffIDNum, "ONE")
|
assert.Equal(t, dest[1].StaffIDNum, "ONE")
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestLockTable(t *testing.T) {
|
|
||||||
expectedSQL := `
|
|
||||||
LOCK TABLE dvds.address IN`
|
|
||||||
|
|
||||||
var testData = []TableLockMode{
|
|
||||||
LOCK_ACCESS_SHARE,
|
|
||||||
LOCK_ROW_SHARE,
|
|
||||||
LOCK_ROW_EXCLUSIVE,
|
|
||||||
LOCK_SHARE_UPDATE_EXCLUSIVE,
|
|
||||||
LOCK_SHARE,
|
|
||||||
LOCK_SHARE_ROW_EXCLUSIVE,
|
|
||||||
LOCK_EXCLUSIVE,
|
|
||||||
LOCK_ACCESS_EXCLUSIVE,
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, lockMode := range testData {
|
|
||||||
query := Address.LOCK().IN(lockMode)
|
|
||||||
|
|
||||||
assertStatementSql(t, query, expectedSQL+" "+string(lockMode)+" MODE;\n")
|
|
||||||
|
|
||||||
tx, _ := db.Begin()
|
|
||||||
|
|
||||||
_, err := query.Exec(tx)
|
|
||||||
|
|
||||||
assert.NilError(t, err)
|
|
||||||
|
|
||||||
err = tx.Rollback()
|
|
||||||
|
|
||||||
assert.NilError(t, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, lockMode := range testData {
|
|
||||||
query := Address.LOCK().IN(lockMode).NOWAIT()
|
|
||||||
|
|
||||||
assertStatementSql(t, query, expectedSQL+" "+string(lockMode)+" MODE NOWAIT;\n")
|
|
||||||
|
|
||||||
tx, _ := db.Begin()
|
|
||||||
|
|
||||||
_, err := query.Exec(tx)
|
|
||||||
|
|
||||||
assert.NilError(t, err)
|
|
||||||
|
|
||||||
err = tx.Rollback()
|
|
||||||
|
|
||||||
assert.NilError(t, err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func getRowLockTestData() map[SelectLock]string {
|
func getRowLockTestData() map[SelectLock]string {
|
||||||
return map[SelectLock]string{
|
return map[SelectLock]string{
|
||||||
UPDATE(): "UPDATE",
|
UPDATE(): "UPDATE",
|
||||||
|
|
|
||||||
|
|
@ -59,15 +59,15 @@ type prefixTimeExpression struct {
|
||||||
prefixOpExpression
|
prefixOpExpression
|
||||||
}
|
}
|
||||||
|
|
||||||
func newPrefixTimeExpression(operator string, expression Expression) TimeExpression {
|
//func newPrefixTimeExpression(operator string, expression Expression) TimeExpression {
|
||||||
timeExpr := prefixTimeExpression{}
|
// timeExpr := prefixTimeExpression{}
|
||||||
timeExpr.prefixOpExpression = newPrefixExpression(expression, operator)
|
// timeExpr.prefixOpExpression = newPrefixExpression(expression, operator)
|
||||||
|
//
|
||||||
timeExpr.expressionInterfaceImpl.parent = &timeExpr
|
// timeExpr.expressionInterfaceImpl.parent = &timeExpr
|
||||||
timeExpr.timeInterfaceImpl.parent = &timeExpr
|
// timeExpr.timeInterfaceImpl.parent = &timeExpr
|
||||||
|
//
|
||||||
return &timeExpr
|
// return &timeExpr
|
||||||
}
|
//}
|
||||||
|
|
||||||
//---------------------------------------------------//
|
//---------------------------------------------------//
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -67,15 +67,15 @@ type prefixTimezExpression struct {
|
||||||
prefixOpExpression
|
prefixOpExpression
|
||||||
}
|
}
|
||||||
|
|
||||||
func newPrefixTimezExpression(operator string, expression Expression) TimezExpression {
|
//func newPrefixTimezExpression(operator string, expression Expression) TimezExpression {
|
||||||
timeExpr := prefixTimezExpression{}
|
// timeExpr := prefixTimezExpression{}
|
||||||
timeExpr.prefixOpExpression = newPrefixExpression(expression, operator)
|
// timeExpr.prefixOpExpression = newPrefixExpression(expression, operator)
|
||||||
|
//
|
||||||
timeExpr.expressionInterfaceImpl.parent = &timeExpr
|
// timeExpr.expressionInterfaceImpl.parent = &timeExpr
|
||||||
timeExpr.timezInterfaceImpl.parent = &timeExpr
|
// timeExpr.timezInterfaceImpl.parent = &timeExpr
|
||||||
|
//
|
||||||
return &timeExpr
|
// return &timeExpr
|
||||||
}
|
//}
|
||||||
|
|
||||||
//---------------------------------------------------//
|
//---------------------------------------------------//
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue