Browse Source

cronTrans check strict gid

pull/195/head
yedf2 4 years ago
parent
commit
b72cf1910d
  1. 1
      test/msg_barrier_test.go
  2. 2
      test/msg_grpc_barrier_test.go
  3. 17
      test/msg_grpc_test.go
  4. 28
      test/msg_options_test.go
  5. 17
      test/msg_test.go
  6. 12
      test/saga_concurrent_test.go
  7. 21
      test/saga_grpc_test.go
  8. 24
      test/saga_options_test.go
  9. 8
      test/saga_test.go
  10. 2
      test/tcc_barrier_test.go
  11. 3
      test/tcc_grpc_cover_test.go
  12. 3
      test/tcc_grpc_test.go
  13. 5
      test/tcc_old_test.go
  14. 5
      test/tcc_test.go
  15. 16
      test/types.go
  16. 2
      test/xa_cover_test.go
  17. 7
      test/xa_test.go

1
test/msg_barrier_test.go

@ -76,7 +76,6 @@ func TestMsgPrepareAndSubmitCommitFailed(t *testing.T) {
})
g.Unpatch()
assert.Error(t, err)
cronTransOnceForwardNow(180)
assertSameBalance(t, before, "mysql")
}

2
test/msg_grpc_barrier_test.go

@ -49,6 +49,6 @@ func TestMsgGrpcPrepareAndSubmitCommitAfterFailed(t *testing.T) {
return err
})
assert.Error(t, err)
cronTransOnceForwardNow(180)
cronTransOnceForwardNow(t, gid, 180)
assertNotSameBalance(t, before, "mysql")
}

17
test/msg_grpc_test.go

@ -28,31 +28,32 @@ func TestMsgGrpcNormal(t *testing.T) {
}
func TestMsgGrpcTimeoutSuccess(t *testing.T) {
msg := genGrpcMsg(dtmimp.GetFuncName())
gid := dtmimp.GetFuncName()
msg := genGrpcMsg(gid)
err := msg.Prepare("")
assert.Nil(t, err)
busi.MainSwitch.QueryPreparedResult.SetOnce(dtmcli.ResultOngoing)
cronTransOnceForwardNow(180)
cronTransOnceForwardNow(t, gid, 180)
assert.Equal(t, StatusPrepared, getTransStatus(msg.Gid))
busi.MainSwitch.TransOutResult.SetOnce(dtmcli.ResultOngoing)
cronTransOnceForwardNow(180)
cronTransOnceForwardNow(t, gid, 180)
assert.Equal(t, StatusSubmitted, getTransStatus(msg.Gid))
assert.Equal(t, []string{StatusPrepared, StatusPrepared}, getBranchesStatus(msg.Gid))
g := cronTransOnce()
assert.Equal(t, msg.Gid, g)
cronTransOnce(t, gid)
assert.Equal(t, StatusSucceed, getTransStatus(msg.Gid))
assert.Equal(t, []string{StatusSucceed, StatusSucceed}, getBranchesStatus(msg.Gid))
}
func TestMsgGrpcTimeoutFailed(t *testing.T) {
msg := genGrpcMsg(dtmimp.GetFuncName())
gid := dtmimp.GetFuncName()
msg := genGrpcMsg(gid)
msg.Prepare("")
assert.Equal(t, StatusPrepared, getTransStatus(msg.Gid))
busi.MainSwitch.QueryPreparedResult.SetOnce(dtmcli.ResultOngoing)
cronTransOnceForwardNow(180)
cronTransOnceForwardNow(t, gid, 180)
assert.Equal(t, StatusPrepared, getTransStatus(msg.Gid))
busi.MainSwitch.QueryPreparedResult.SetOnce(dtmcli.ResultFailure)
cronTransOnceForwardNow(180)
cronTransOnceForwardNow(t, gid, 180)
assert.Equal(t, StatusFailed, getTransStatus(msg.Gid))
assert.Equal(t, []string{StatusPrepared, StatusPrepared}, getBranchesStatus(msg.Gid))
}

28
test/msg_options_test.go

@ -16,38 +16,38 @@ import (
)
func TestMsgOptionsTimeout(t *testing.T) {
msg := genMsg(dtmimp.GetFuncName())
gid := dtmimp.GetFuncName()
msg := genMsg(gid)
msg.Prepare("")
g := cronTransOnce()
assert.Equal(t, msg.Gid, g)
cronTransOnce(t, gid)
assert.Equal(t, StatusPrepared, getTransStatus(msg.Gid))
cronTransOnceForwardNow(60)
cronTransOnceForwardNow(t, gid, 60)
assert.Equal(t, StatusSucceed, getTransStatus(msg.Gid))
}
func TestMsgOptionsTimeoutCustom(t *testing.T) {
msg := genMsg(dtmimp.GetFuncName())
gid := dtmimp.GetFuncName()
msg := genMsg(gid)
msg.TimeoutToFail = 120
msg.Prepare("")
g := cronTransOnce()
assert.Equal(t, msg.Gid, g)
cronTransOnce(t, gid)
assert.Equal(t, StatusPrepared, getTransStatus(msg.Gid))
cronTransOnceForwardNow(60)
cronTransOnceForwardNow(t, gid, 60)
assert.Equal(t, StatusPrepared, getTransStatus(msg.Gid))
cronTransOnceForwardNow(180)
cronTransOnceForwardNow(t, gid, 180)
assert.Equal(t, StatusSucceed, getTransStatus(msg.Gid))
}
func TestMsgOptionsTimeoutFailed(t *testing.T) {
msg := genMsg(dtmimp.GetFuncName())
gid := dtmimp.GetFuncName()
msg := genMsg(gid)
msg.TimeoutToFail = 120
msg.Prepare("")
g := cronTransOnce()
assert.Equal(t, msg.Gid, g)
cronTransOnce(t, gid)
assert.Equal(t, StatusPrepared, getTransStatus(msg.Gid))
cronTransOnceForwardNow(60)
cronTransOnceForwardNow(t, gid, 60)
assert.Equal(t, StatusPrepared, getTransStatus(msg.Gid))
busi.MainSwitch.QueryPreparedResult.SetOnce(dtmcli.ResultFailure)
cronTransOnceForwardNow(180)
cronTransOnceForwardNow(t, gid, 180)
assert.Equal(t, StatusFailed, getTransStatus(msg.Gid))
}

17
test/msg_test.go

@ -26,30 +26,31 @@ func TestMsgNormal(t *testing.T) {
}
func TestMsgTimeoutSuccess(t *testing.T) {
msg := genMsg(dtmimp.GetFuncName())
gid := dtmimp.GetFuncName()
msg := genMsg(gid)
msg.Prepare("")
assert.Equal(t, StatusPrepared, getTransStatus(msg.Gid))
busi.MainSwitch.QueryPreparedResult.SetOnce(dtmcli.ResultOngoing)
cronTransOnceForwardNow(180)
cronTransOnceForwardNow(t, gid, 180)
assert.Equal(t, StatusPrepared, getTransStatus(msg.Gid))
busi.MainSwitch.TransInResult.SetOnce(dtmcli.ResultOngoing)
cronTransOnceForwardNow(180)
cronTransOnceForwardNow(t, gid, 180)
assert.Equal(t, StatusSubmitted, getTransStatus(msg.Gid))
g := cronTransOnce()
assert.Equal(t, msg.Gid, g)
cronTransOnce(t, gid)
assert.Equal(t, []string{StatusSucceed, StatusSucceed}, getBranchesStatus(msg.Gid))
assert.Equal(t, StatusSucceed, getTransStatus(msg.Gid))
}
func TestMsgTimeoutFailed(t *testing.T) {
msg := genMsg(dtmimp.GetFuncName())
gid := dtmimp.GetFuncName()
msg := genMsg(gid)
msg.Prepare("")
assert.Equal(t, StatusPrepared, getTransStatus(msg.Gid))
busi.MainSwitch.QueryPreparedResult.SetOnce(dtmcli.ResultOngoing)
cronTransOnceForwardNow(360)
cronTransOnceForwardNow(t, gid, 360)
assert.Equal(t, StatusPrepared, getTransStatus(msg.Gid))
busi.MainSwitch.QueryPreparedResult.SetOnce(dtmcli.ResultFailure)
cronTransOnceForwardNow(180)
cronTransOnceForwardNow(t, gid, 180)
assert.Equal(t, []string{StatusPrepared, StatusPrepared}, getBranchesStatus(msg.Gid))
assert.Equal(t, StatusFailed, getTransStatus(msg.Gid))
}

12
test/saga_concurrent_test.go

@ -28,14 +28,14 @@ func TestSagaConNormal(t *testing.T) {
}
func TestSagaConRollbackNormal(t *testing.T) {
sagaCon := genSagaCon(dtmimp.GetFuncName(), true, false)
gid := dtmimp.GetFuncName()
sagaCon := genSagaCon(gid, true, false)
busi.MainSwitch.TransOutRevertResult.SetOnce(dtmcli.ResultOngoing)
err := sagaCon.Submit()
assert.Nil(t, err)
waitTransProcessed(sagaCon.Gid)
assert.Equal(t, StatusAborting, getTransStatus(sagaCon.Gid))
g := cronTransOnce()
assert.Equal(t, sagaCon.Gid, g)
cronTransOnce(t, gid)
assert.Equal(t, StatusFailed, getTransStatus(sagaCon.Gid))
// TODO should fix this
// assert.Equal(t, []string{StatusSucceed, StatusFailed, StatusSucceed, StatusSucceed}, getBranchesStatus(sagaCon.Gid))
@ -61,15 +61,15 @@ func TestSagaConRollbackOrder2(t *testing.T) {
assert.Equal(t, []string{StatusSucceed, StatusSucceed, StatusSucceed, StatusFailed}, getBranchesStatus(sagaCon.Gid))
}
func TestSagaConCommittedOngoing(t *testing.T) {
sagaCon := genSagaCon(dtmimp.GetFuncName(), false, false)
gid := dtmimp.GetFuncName()
sagaCon := genSagaCon(gid, false, false)
busi.MainSwitch.TransOutResult.SetOnce(dtmcli.ResultOngoing)
sagaCon.Submit()
waitTransProcessed(sagaCon.Gid)
assert.Equal(t, []string{StatusPrepared, StatusPrepared, StatusPrepared, StatusSucceed}, getBranchesStatus(sagaCon.Gid))
assert.Equal(t, StatusSubmitted, getTransStatus(sagaCon.Gid))
g := cronTransOnce()
assert.Equal(t, sagaCon.Gid, g)
cronTransOnce(t, gid)
assert.Equal(t, []string{StatusPrepared, StatusSucceed, StatusPrepared, StatusSucceed}, getBranchesStatus(sagaCon.Gid))
assert.Equal(t, StatusSucceed, getTransStatus(sagaCon.Gid))
}

21
test/saga_grpc_test.go

@ -26,13 +26,13 @@ func TestSagaGrpcNormal(t *testing.T) {
}
func TestSagaGrpcRollback(t *testing.T) {
saga := genSagaGrpc(dtmimp.GetFuncName(), false, true)
gid := dtmimp.GetFuncName()
saga := genSagaGrpc(gid, false, true)
busi.MainSwitch.TransOutRevertResult.SetOnce(dtmcli.ResultOngoing)
saga.Submit()
waitTransProcessed(saga.Gid)
assert.Equal(t, StatusAborting, getTransStatus(saga.Gid))
g := cronTransOnce()
assert.Equal(t, saga.Gid, g)
cronTransOnce(t, gid)
assert.Equal(t, StatusFailed, getTransStatus(saga.Gid))
assert.Equal(t, []string{StatusSucceed, StatusSucceed, StatusSucceed, StatusFailed}, getBranchesStatus(saga.Gid))
}
@ -57,20 +57,21 @@ func TestSagaGrpcCurrentOrder(t *testing.T) {
}
func TestSagaGrpcCommittedOngoing(t *testing.T) {
saga := genSagaGrpc(dtmimp.GetFuncName(), false, false)
gid := dtmimp.GetFuncName()
saga := genSagaGrpc(gid, false, false)
busi.MainSwitch.TransOutResult.SetOnce(dtmcli.ResultOngoing)
saga.Submit()
waitTransProcessed(saga.Gid)
assert.Equal(t, StatusSubmitted, getTransStatus(saga.Gid))
assert.Equal(t, []string{StatusPrepared, StatusPrepared, StatusPrepared, StatusPrepared}, getBranchesStatus(saga.Gid))
g := cronTransOnce()
assert.Equal(t, saga.Gid, g)
cronTransOnce(t, gid)
assert.Equal(t, StatusSucceed, getTransStatus(saga.Gid))
assert.Equal(t, []string{StatusPrepared, StatusSucceed, StatusPrepared, StatusSucceed}, getBranchesStatus(saga.Gid))
}
func TestSagaGrpcNormalWait(t *testing.T) {
saga := genSagaGrpc(dtmimp.GetFuncName(), false, false)
gid := dtmimp.GetFuncName()
saga := genSagaGrpc(gid, false, false)
saga.WaitResult = true
saga.Submit()
assert.Equal(t, []string{StatusPrepared, StatusSucceed, StatusPrepared, StatusSucceed}, getBranchesStatus(saga.Gid))
@ -119,8 +120,7 @@ func TestSagaGrpcCronPassthroughHeadersYes(t *testing.T) {
assert.Nil(t, err)
waitTransProcessed(gidYes)
assert.Equal(t, StatusSubmitted, getTransStatus(gidYes))
g := cronTransOnce()
assert.Equal(t, gidYes, g)
cronTransOnce(t, gidYes)
assert.Equal(t, StatusSucceed, getTransStatus(gidYes))
}
@ -159,7 +159,6 @@ func TestSagaGrpcCronHeaders(t *testing.T) {
assert.Nil(t, err)
waitTransProcessed(gidYes)
assert.Equal(t, StatusSubmitted, getTransStatus(gidYes))
g := cronTransOnce()
assert.Equal(t, gidYes, g)
cronTransOnce(t, gidYes)
assert.Equal(t, StatusSucceed, getTransStatus(gidYes))
}

24
test/saga_options_test.go

@ -17,19 +17,20 @@ import (
)
func TestSagaOptionsRetryOngoing(t *testing.T) {
gid := dtmimp.GetFuncName()
saga := genSaga1(dtmimp.GetFuncName(), false, false)
saga.RetryInterval = 150 // CronForwardDuration is larger than RetryInterval
busi.MainSwitch.TransOutResult.SetOnce(dtmcli.ResultOngoing)
err := saga.Submit()
assert.Nil(t, err)
waitTransProcessed(saga.Gid)
g := cronTransOnce()
assert.Equal(t, saga.Gid, g)
cronTransOnce(t, gid)
assert.Equal(t, StatusSucceed, getTransStatus(saga.Gid))
assert.Equal(t, []string{StatusPrepared, StatusSucceed}, getBranchesStatus(saga.Gid))
}
func TestSagaOptionsRetryError(t *testing.T) {
gid := dtmimp.GetFuncName()
saga := genSaga1(dtmimp.GetFuncName(), false, false)
saga.RetryInterval = 150 // CronForwardDuration is less than 2*RetryInterval
busi.MainSwitch.TransOutResult.SetOnce("ERROR")
@ -38,22 +39,21 @@ func TestSagaOptionsRetryError(t *testing.T) {
waitTransProcessed(saga.Gid)
assert.Equal(t, StatusSubmitted, getTransStatus(saga.Gid))
assert.Equal(t, []string{StatusPrepared, StatusPrepared}, getBranchesStatus(saga.Gid))
g := cronTransOnce()
assert.Equal(t, "", g)
g = cronTransOnceForwardCron(360)
assert.Equal(t, saga.Gid, g)
cronTransOnce(t, "")
cronTransOnceForwardCron(t, gid, 360)
assert.Equal(t, StatusSucceed, getTransStatus(saga.Gid))
assert.Equal(t, []string{StatusPrepared, StatusSucceed}, getBranchesStatus(saga.Gid))
}
func TestSagaOptionsTimeout(t *testing.T) {
gid := dtmimp.GetFuncName()
saga := genSaga(dtmimp.GetFuncName(), false, false)
saga.TimeoutToFail = 1800
busi.MainSwitch.TransOutResult.SetOnce(dtmcli.ResultOngoing)
saga.Submit()
waitTransProcessed(saga.Gid)
assert.Equal(t, StatusSubmitted, getTransStatus(saga.Gid))
cronTransOnceForwardNow(3600)
cronTransOnceForwardNow(t, gid, 3600)
assert.Equal(t, StatusFailed, getTransStatus(saga.Gid))
}
@ -68,6 +68,7 @@ func TestSagaOptionsNormalWait(t *testing.T) {
}
func TestSagaOptionsCommittedOngoingWait(t *testing.T) {
gid := dtmimp.GetFuncName()
saga := genSaga(dtmimp.GetFuncName(), false, false)
busi.MainSwitch.TransOutResult.SetOnce(dtmcli.ResultOngoing)
saga.WaitResult = true
@ -76,8 +77,7 @@ func TestSagaOptionsCommittedOngoingWait(t *testing.T) {
assert.Equal(t, []string{StatusPrepared, StatusPrepared, StatusPrepared, StatusPrepared}, getBranchesStatus(saga.Gid))
assert.Equal(t, StatusSubmitted, getTransStatus(saga.Gid))
waitTransProcessed(saga.Gid)
g := cronTransOnce()
assert.Equal(t, saga.Gid, g)
cronTransOnce(t, gid)
assert.Equal(t, []string{StatusPrepared, StatusSucceed, StatusPrepared, StatusSucceed}, getBranchesStatus(saga.Gid))
assert.Equal(t, StatusSucceed, getTransStatus(saga.Gid))
}
@ -113,8 +113,7 @@ func TestSagaCronPassthroughHeadersYes(t *testing.T) {
assert.Nil(t, err)
waitTransProcessed(gidYes)
assert.Equal(t, StatusSubmitted, getTransStatus(gidYes))
g := cronTransOnce()
assert.Equal(t, gidYes, g)
cronTransOnce(t, gidYes)
assert.Equal(t, StatusSucceed, getTransStatus(gidYes))
}
@ -153,7 +152,6 @@ func TestSagaHeadersYes1(t *testing.T) {
assert.Nil(t, err)
waitTransProcessed(gidYes)
assert.Equal(t, StatusSubmitted, getTransStatus(gidYes))
g := cronTransOnce()
assert.Equal(t, gidYes, g)
cronTransOnce(t, gidYes)
assert.Equal(t, StatusSucceed, getTransStatus(gidYes))
}

8
test/saga_test.go

@ -34,27 +34,27 @@ func TestSagaRollback(t *testing.T) {
}
func TestSagaOngoingSucceed(t *testing.T) {
gid := dtmimp.GetFuncName()
saga := genSaga(dtmimp.GetFuncName(), false, false)
busi.MainSwitch.TransOutResult.SetOnce(dtmcli.ResultOngoing)
saga.Submit()
waitTransProcessed(saga.Gid)
assert.Equal(t, []string{StatusPrepared, StatusPrepared, StatusPrepared, StatusPrepared}, getBranchesStatus(saga.Gid))
assert.Equal(t, StatusSubmitted, getTransStatus(saga.Gid))
g := cronTransOnce()
assert.Equal(t, saga.Gid, g)
cronTransOnce(t, gid)
assert.Equal(t, []string{StatusPrepared, StatusSucceed, StatusPrepared, StatusSucceed}, getBranchesStatus(saga.Gid))
assert.Equal(t, StatusSucceed, getTransStatus(saga.Gid))
}
func TestSagaFailed(t *testing.T) {
gid := dtmimp.GetFuncName()
saga := genSaga(dtmimp.GetFuncName(), false, true)
busi.MainSwitch.TransOutRevertResult.SetOnce("ERROR")
err := saga.Submit()
assert.Nil(t, err)
waitTransProcessed(saga.Gid)
assert.Equal(t, StatusAborting, getTransStatus(saga.Gid))
g := cronTransOnce()
assert.Equal(t, saga.Gid, g)
cronTransOnce(t, gid)
assert.Equal(t, StatusFailed, getTransStatus(saga.Gid))
assert.Equal(t, []string{StatusSucceed, StatusSucceed, StatusSucceed, StatusFailed}, getBranchesStatus(saga.Gid))
}

2
test/tcc_barrier_test.go

@ -97,7 +97,7 @@ func runTestTccBarrierDisorder(t *testing.T, store string) {
logger.Debugf("cron to timeout and then call cancelled twice")
cron := func() {
cronTransOnceForwardNow(300)
cronTransOnceForwardNow(t, gid, 300)
logger.Debugf("cronFinished write")
cronFinished <- "1"
logger.Debugf("cronFinished after write")

3
test/tcc_grpc_cover_test.go

@ -47,6 +47,5 @@ func TestTccGrpcCoverCallBranch(t *testing.T) {
return err
})
assert.Error(t, err)
g := cronTransOnceForwardNow(300)
assert.Equal(t, gid, g)
cronTransOnceForwardNow(t, gid, 300)
}

3
test/tcc_grpc_test.go

@ -49,8 +49,7 @@ func TestTccGrpcRollback(t *testing.T) {
assert.Error(t, err)
waitTransProcessed(gid)
assert.Equal(t, StatusAborting, getTransStatus(gid))
g2 := cronTransOnce()
assert.Equal(t, gid, g2)
cronTransOnce(t, gid)
assert.Equal(t, StatusFailed, getTransStatus(gid))
assert.Equal(t, []string{StatusSucceed, StatusPrepared, StatusSucceed, StatusPrepared}, getBranchesStatus(gid))
}

5
test/tcc_old_test.go

@ -37,8 +37,7 @@ func TestTccOldRollback(t *testing.T) {
assert.Error(t, err)
waitTransProcessed(gid)
assert.Equal(t, StatusAborting, getTransStatus(gid))
g := cronTransOnce()
assert.Equal(t, gid, g)
cronTransOnce(t, gid)
assert.Equal(t, StatusFailed, getTransStatus(gid))
assert.Equal(t, []string{StatusSucceed, StatusPrepared, StatusSucceed, StatusPrepared}, getBranchesStatus(gid))
}
@ -52,7 +51,7 @@ func TestTccOldTimeout(t *testing.T) {
_, err := tcc.CallBranch(req, Busi+"/TransOutOld", Busi+"/TransOutConfirmOld", Busi+"/TransOutRevertOld")
assert.Nil(t, err)
go func() {
cronTransOnceForwardNow(300)
cronTransOnceForwardNow(t, gid, 300)
timeoutChan <- 0
}()
<-timeoutChan

5
test/tcc_test.go

@ -43,8 +43,7 @@ func TestTccRollback(t *testing.T) {
assert.Error(t, err)
waitTransProcessed(gid)
assert.Equal(t, StatusAborting, getTransStatus(gid))
g := cronTransOnce()
assert.Equal(t, gid, g)
cronTransOnce(t, gid)
assert.Equal(t, StatusFailed, getTransStatus(gid))
assert.Equal(t, []string{StatusSucceed, StatusPrepared, StatusSucceed, StatusPrepared}, getBranchesStatus(gid))
}
@ -58,7 +57,7 @@ func TestTccTimeout(t *testing.T) {
_, err := tcc.CallBranch(req, Busi+"/TransOut", Busi+"/TransOutConfirm", Busi+"/TransOutRevert")
assert.Nil(t, err)
go func() {
cronTransOnceForwardNow(300)
cronTransOnceForwardNow(t, gid, 300)
timeoutChan <- 0
}()
<-timeoutChan

16
test/types.go

@ -38,12 +38,12 @@ func waitTransProcessed(gid string) {
}
}
func cronTransOnce() string {
gid := dtmsvr.CronTransOnce()
func cronTransOnce(t *testing.T, gid string) {
gid2 := dtmsvr.CronTransOnce()
assert.Equal(t, gid, gid2)
if dtmsvr.TransProcessedTestChan != nil && gid != "" {
waitTransProcessed(gid)
}
return gid
}
var e2p = dtmimp.E2P
@ -54,20 +54,18 @@ type TransGlobal = dtmsvr.TransGlobal
// TransBranch alias
type TransBranch = dtmsvr.TransBranch
func cronTransOnceForwardNow(seconds int) string {
func cronTransOnceForwardNow(t *testing.T, gid string, seconds int) {
old := dtmsvr.NowForwardDuration
dtmsvr.NowForwardDuration = time.Duration(seconds) * time.Second
gid := cronTransOnce()
cronTransOnce(t, gid)
dtmsvr.NowForwardDuration = old
return gid
}
func cronTransOnceForwardCron(seconds int) string {
func cronTransOnceForwardCron(t *testing.T, gid string, seconds int) {
old := dtmsvr.CronForwardDuration
dtmsvr.CronForwardDuration = time.Duration(seconds) * time.Second
gid := cronTransOnce()
cronTransOnce(t, gid)
dtmsvr.CronForwardDuration = old
return gid
}
const (

2
test/xa_cover_test.go

@ -27,7 +27,7 @@ func TestXaCoverDBError(t *testing.T) {
getXc().Conf.Driver = "no-driver" // make xa rollback failed
waitTransProcessed(gid)
getXc().Conf.Driver = oldDriver
cronTransOnceForwardNow(500) // rollback succeeded here
cronTransOnceForwardNow(t, gid, 500) // rollback succeeded here
assert.Equal(t, StatusFailed, getTransStatus(gid))
}

7
test/xa_test.go

@ -89,7 +89,7 @@ func TestXaTimeout(t *testing.T) {
timeoutChan := make(chan int, 1)
err := getXc().XaGlobalTransaction(gid, func(xa *dtmcli.Xa) (*resty.Response, error) {
go func() {
cronTransOnceForwardNow(300)
cronTransOnceForwardNow(t, gid, 300)
timeoutChan <- 0
}()
<-timeoutChan
@ -105,7 +105,7 @@ func TestXaNotTimeout(t *testing.T) {
timeoutChan := make(chan int, 1)
err := getXc().XaGlobalTransaction(gid, func(xa *dtmcli.Xa) (*resty.Response, error) {
go func() {
cronTransOnceForwardNow(0) // not timeout,
cronTransOnceForwardNow(t, gid, 0) // not timeout,
timeoutChan <- 0
}()
<-timeoutChan
@ -118,8 +118,7 @@ func TestXaNotTimeout(t *testing.T) {
assert.Nil(t, err)
waitTransProcessed(gid)
assert.Equal(t, StatusSubmitted, getTransStatus(gid))
g := cronTransOnce()
assert.Equal(t, gid, g)
cronTransOnce(t, gid)
assert.Equal(t, StatusSucceed, getTransStatus(gid))
assert.Equal(t, []string{StatusPrepared, StatusSucceed}, getBranchesStatus(gid))
}

Loading…
Cancel
Save