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() g.Unpatch()
assert.Error(t, err) assert.Error(t, err)
cronTransOnceForwardNow(180)
assertSameBalance(t, before, "mysql") assertSameBalance(t, before, "mysql")
} }

2
test/msg_grpc_barrier_test.go

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

17
test/msg_grpc_test.go

@ -28,31 +28,32 @@ func TestMsgGrpcNormal(t *testing.T) {
} }
func TestMsgGrpcTimeoutSuccess(t *testing.T) { func TestMsgGrpcTimeoutSuccess(t *testing.T) {
msg := genGrpcMsg(dtmimp.GetFuncName()) gid := dtmimp.GetFuncName()
msg := genGrpcMsg(gid)
err := msg.Prepare("") err := msg.Prepare("")
assert.Nil(t, err) assert.Nil(t, err)
busi.MainSwitch.QueryPreparedResult.SetOnce(dtmcli.ResultOngoing) busi.MainSwitch.QueryPreparedResult.SetOnce(dtmcli.ResultOngoing)
cronTransOnceForwardNow(180) cronTransOnceForwardNow(t, gid, 180)
assert.Equal(t, StatusPrepared, getTransStatus(msg.Gid)) assert.Equal(t, StatusPrepared, getTransStatus(msg.Gid))
busi.MainSwitch.TransOutResult.SetOnce(dtmcli.ResultOngoing) busi.MainSwitch.TransOutResult.SetOnce(dtmcli.ResultOngoing)
cronTransOnceForwardNow(180) cronTransOnceForwardNow(t, gid, 180)
assert.Equal(t, StatusSubmitted, getTransStatus(msg.Gid)) assert.Equal(t, StatusSubmitted, getTransStatus(msg.Gid))
assert.Equal(t, []string{StatusPrepared, StatusPrepared}, getBranchesStatus(msg.Gid)) assert.Equal(t, []string{StatusPrepared, StatusPrepared}, getBranchesStatus(msg.Gid))
g := cronTransOnce() cronTransOnce(t, gid)
assert.Equal(t, msg.Gid, g)
assert.Equal(t, StatusSucceed, getTransStatus(msg.Gid)) assert.Equal(t, StatusSucceed, getTransStatus(msg.Gid))
assert.Equal(t, []string{StatusSucceed, StatusSucceed}, getBranchesStatus(msg.Gid)) assert.Equal(t, []string{StatusSucceed, StatusSucceed}, getBranchesStatus(msg.Gid))
} }
func TestMsgGrpcTimeoutFailed(t *testing.T) { func TestMsgGrpcTimeoutFailed(t *testing.T) {
msg := genGrpcMsg(dtmimp.GetFuncName()) gid := dtmimp.GetFuncName()
msg := genGrpcMsg(gid)
msg.Prepare("") msg.Prepare("")
assert.Equal(t, StatusPrepared, getTransStatus(msg.Gid)) assert.Equal(t, StatusPrepared, getTransStatus(msg.Gid))
busi.MainSwitch.QueryPreparedResult.SetOnce(dtmcli.ResultOngoing) busi.MainSwitch.QueryPreparedResult.SetOnce(dtmcli.ResultOngoing)
cronTransOnceForwardNow(180) cronTransOnceForwardNow(t, gid, 180)
assert.Equal(t, StatusPrepared, getTransStatus(msg.Gid)) assert.Equal(t, StatusPrepared, getTransStatus(msg.Gid))
busi.MainSwitch.QueryPreparedResult.SetOnce(dtmcli.ResultFailure) busi.MainSwitch.QueryPreparedResult.SetOnce(dtmcli.ResultFailure)
cronTransOnceForwardNow(180) cronTransOnceForwardNow(t, gid, 180)
assert.Equal(t, StatusFailed, getTransStatus(msg.Gid)) assert.Equal(t, StatusFailed, getTransStatus(msg.Gid))
assert.Equal(t, []string{StatusPrepared, StatusPrepared}, getBranchesStatus(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) { func TestMsgOptionsTimeout(t *testing.T) {
msg := genMsg(dtmimp.GetFuncName()) gid := dtmimp.GetFuncName()
msg := genMsg(gid)
msg.Prepare("") msg.Prepare("")
g := cronTransOnce() cronTransOnce(t, gid)
assert.Equal(t, msg.Gid, g)
assert.Equal(t, StatusPrepared, getTransStatus(msg.Gid)) assert.Equal(t, StatusPrepared, getTransStatus(msg.Gid))
cronTransOnceForwardNow(60) cronTransOnceForwardNow(t, gid, 60)
assert.Equal(t, StatusSucceed, getTransStatus(msg.Gid)) assert.Equal(t, StatusSucceed, getTransStatus(msg.Gid))
} }
func TestMsgOptionsTimeoutCustom(t *testing.T) { func TestMsgOptionsTimeoutCustom(t *testing.T) {
msg := genMsg(dtmimp.GetFuncName()) gid := dtmimp.GetFuncName()
msg := genMsg(gid)
msg.TimeoutToFail = 120 msg.TimeoutToFail = 120
msg.Prepare("") msg.Prepare("")
g := cronTransOnce() cronTransOnce(t, gid)
assert.Equal(t, msg.Gid, g)
assert.Equal(t, StatusPrepared, getTransStatus(msg.Gid)) assert.Equal(t, StatusPrepared, getTransStatus(msg.Gid))
cronTransOnceForwardNow(60) cronTransOnceForwardNow(t, gid, 60)
assert.Equal(t, StatusPrepared, getTransStatus(msg.Gid)) assert.Equal(t, StatusPrepared, getTransStatus(msg.Gid))
cronTransOnceForwardNow(180) cronTransOnceForwardNow(t, gid, 180)
assert.Equal(t, StatusSucceed, getTransStatus(msg.Gid)) assert.Equal(t, StatusSucceed, getTransStatus(msg.Gid))
} }
func TestMsgOptionsTimeoutFailed(t *testing.T) { func TestMsgOptionsTimeoutFailed(t *testing.T) {
msg := genMsg(dtmimp.GetFuncName()) gid := dtmimp.GetFuncName()
msg := genMsg(gid)
msg.TimeoutToFail = 120 msg.TimeoutToFail = 120
msg.Prepare("") msg.Prepare("")
g := cronTransOnce() cronTransOnce(t, gid)
assert.Equal(t, msg.Gid, g)
assert.Equal(t, StatusPrepared, getTransStatus(msg.Gid)) assert.Equal(t, StatusPrepared, getTransStatus(msg.Gid))
cronTransOnceForwardNow(60) cronTransOnceForwardNow(t, gid, 60)
assert.Equal(t, StatusPrepared, getTransStatus(msg.Gid)) assert.Equal(t, StatusPrepared, getTransStatus(msg.Gid))
busi.MainSwitch.QueryPreparedResult.SetOnce(dtmcli.ResultFailure) busi.MainSwitch.QueryPreparedResult.SetOnce(dtmcli.ResultFailure)
cronTransOnceForwardNow(180) cronTransOnceForwardNow(t, gid, 180)
assert.Equal(t, StatusFailed, getTransStatus(msg.Gid)) 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) { func TestMsgTimeoutSuccess(t *testing.T) {
msg := genMsg(dtmimp.GetFuncName()) gid := dtmimp.GetFuncName()
msg := genMsg(gid)
msg.Prepare("") msg.Prepare("")
assert.Equal(t, StatusPrepared, getTransStatus(msg.Gid)) assert.Equal(t, StatusPrepared, getTransStatus(msg.Gid))
busi.MainSwitch.QueryPreparedResult.SetOnce(dtmcli.ResultOngoing) busi.MainSwitch.QueryPreparedResult.SetOnce(dtmcli.ResultOngoing)
cronTransOnceForwardNow(180) cronTransOnceForwardNow(t, gid, 180)
assert.Equal(t, StatusPrepared, getTransStatus(msg.Gid)) assert.Equal(t, StatusPrepared, getTransStatus(msg.Gid))
busi.MainSwitch.TransInResult.SetOnce(dtmcli.ResultOngoing) busi.MainSwitch.TransInResult.SetOnce(dtmcli.ResultOngoing)
cronTransOnceForwardNow(180) cronTransOnceForwardNow(t, gid, 180)
assert.Equal(t, StatusSubmitted, getTransStatus(msg.Gid)) assert.Equal(t, StatusSubmitted, getTransStatus(msg.Gid))
g := cronTransOnce() cronTransOnce(t, gid)
assert.Equal(t, msg.Gid, g)
assert.Equal(t, []string{StatusSucceed, StatusSucceed}, getBranchesStatus(msg.Gid)) assert.Equal(t, []string{StatusSucceed, StatusSucceed}, getBranchesStatus(msg.Gid))
assert.Equal(t, StatusSucceed, getTransStatus(msg.Gid)) assert.Equal(t, StatusSucceed, getTransStatus(msg.Gid))
} }
func TestMsgTimeoutFailed(t *testing.T) { func TestMsgTimeoutFailed(t *testing.T) {
msg := genMsg(dtmimp.GetFuncName()) gid := dtmimp.GetFuncName()
msg := genMsg(gid)
msg.Prepare("") msg.Prepare("")
assert.Equal(t, StatusPrepared, getTransStatus(msg.Gid)) assert.Equal(t, StatusPrepared, getTransStatus(msg.Gid))
busi.MainSwitch.QueryPreparedResult.SetOnce(dtmcli.ResultOngoing) busi.MainSwitch.QueryPreparedResult.SetOnce(dtmcli.ResultOngoing)
cronTransOnceForwardNow(360) cronTransOnceForwardNow(t, gid, 360)
assert.Equal(t, StatusPrepared, getTransStatus(msg.Gid)) assert.Equal(t, StatusPrepared, getTransStatus(msg.Gid))
busi.MainSwitch.QueryPreparedResult.SetOnce(dtmcli.ResultFailure) busi.MainSwitch.QueryPreparedResult.SetOnce(dtmcli.ResultFailure)
cronTransOnceForwardNow(180) cronTransOnceForwardNow(t, gid, 180)
assert.Equal(t, []string{StatusPrepared, StatusPrepared}, getBranchesStatus(msg.Gid)) assert.Equal(t, []string{StatusPrepared, StatusPrepared}, getBranchesStatus(msg.Gid))
assert.Equal(t, StatusFailed, getTransStatus(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) { 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) busi.MainSwitch.TransOutRevertResult.SetOnce(dtmcli.ResultOngoing)
err := sagaCon.Submit() err := sagaCon.Submit()
assert.Nil(t, err) assert.Nil(t, err)
waitTransProcessed(sagaCon.Gid) waitTransProcessed(sagaCon.Gid)
assert.Equal(t, StatusAborting, getTransStatus(sagaCon.Gid)) assert.Equal(t, StatusAborting, getTransStatus(sagaCon.Gid))
g := cronTransOnce() cronTransOnce(t, gid)
assert.Equal(t, sagaCon.Gid, g)
assert.Equal(t, StatusFailed, getTransStatus(sagaCon.Gid)) assert.Equal(t, StatusFailed, getTransStatus(sagaCon.Gid))
// TODO should fix this // TODO should fix this
// assert.Equal(t, []string{StatusSucceed, StatusFailed, StatusSucceed, StatusSucceed}, getBranchesStatus(sagaCon.Gid)) // 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)) assert.Equal(t, []string{StatusSucceed, StatusSucceed, StatusSucceed, StatusFailed}, getBranchesStatus(sagaCon.Gid))
} }
func TestSagaConCommittedOngoing(t *testing.T) { 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) busi.MainSwitch.TransOutResult.SetOnce(dtmcli.ResultOngoing)
sagaCon.Submit() sagaCon.Submit()
waitTransProcessed(sagaCon.Gid) waitTransProcessed(sagaCon.Gid)
assert.Equal(t, []string{StatusPrepared, StatusPrepared, StatusPrepared, StatusSucceed}, getBranchesStatus(sagaCon.Gid)) assert.Equal(t, []string{StatusPrepared, StatusPrepared, StatusPrepared, StatusSucceed}, getBranchesStatus(sagaCon.Gid))
assert.Equal(t, StatusSubmitted, getTransStatus(sagaCon.Gid)) assert.Equal(t, StatusSubmitted, getTransStatus(sagaCon.Gid))
g := cronTransOnce() cronTransOnce(t, gid)
assert.Equal(t, sagaCon.Gid, g)
assert.Equal(t, []string{StatusPrepared, StatusSucceed, StatusPrepared, StatusSucceed}, getBranchesStatus(sagaCon.Gid)) assert.Equal(t, []string{StatusPrepared, StatusSucceed, StatusPrepared, StatusSucceed}, getBranchesStatus(sagaCon.Gid))
assert.Equal(t, StatusSucceed, getTransStatus(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) { 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) busi.MainSwitch.TransOutRevertResult.SetOnce(dtmcli.ResultOngoing)
saga.Submit() saga.Submit()
waitTransProcessed(saga.Gid) waitTransProcessed(saga.Gid)
assert.Equal(t, StatusAborting, getTransStatus(saga.Gid)) assert.Equal(t, StatusAborting, getTransStatus(saga.Gid))
g := cronTransOnce() cronTransOnce(t, gid)
assert.Equal(t, saga.Gid, g)
assert.Equal(t, StatusFailed, getTransStatus(saga.Gid)) assert.Equal(t, StatusFailed, getTransStatus(saga.Gid))
assert.Equal(t, []string{StatusSucceed, StatusSucceed, StatusSucceed, StatusFailed}, getBranchesStatus(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) { 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) busi.MainSwitch.TransOutResult.SetOnce(dtmcli.ResultOngoing)
saga.Submit() saga.Submit()
waitTransProcessed(saga.Gid) waitTransProcessed(saga.Gid)
assert.Equal(t, StatusSubmitted, getTransStatus(saga.Gid)) assert.Equal(t, StatusSubmitted, getTransStatus(saga.Gid))
assert.Equal(t, []string{StatusPrepared, StatusPrepared, StatusPrepared, StatusPrepared}, getBranchesStatus(saga.Gid)) assert.Equal(t, []string{StatusPrepared, StatusPrepared, StatusPrepared, StatusPrepared}, getBranchesStatus(saga.Gid))
g := cronTransOnce() cronTransOnce(t, gid)
assert.Equal(t, saga.Gid, g)
assert.Equal(t, StatusSucceed, getTransStatus(saga.Gid)) assert.Equal(t, StatusSucceed, getTransStatus(saga.Gid))
assert.Equal(t, []string{StatusPrepared, StatusSucceed, StatusPrepared, StatusSucceed}, getBranchesStatus(saga.Gid)) assert.Equal(t, []string{StatusPrepared, StatusSucceed, StatusPrepared, StatusSucceed}, getBranchesStatus(saga.Gid))
} }
func TestSagaGrpcNormalWait(t *testing.T) { func TestSagaGrpcNormalWait(t *testing.T) {
saga := genSagaGrpc(dtmimp.GetFuncName(), false, false) gid := dtmimp.GetFuncName()
saga := genSagaGrpc(gid, false, false)
saga.WaitResult = true saga.WaitResult = true
saga.Submit() saga.Submit()
assert.Equal(t, []string{StatusPrepared, StatusSucceed, StatusPrepared, StatusSucceed}, getBranchesStatus(saga.Gid)) assert.Equal(t, []string{StatusPrepared, StatusSucceed, StatusPrepared, StatusSucceed}, getBranchesStatus(saga.Gid))
@ -119,8 +120,7 @@ func TestSagaGrpcCronPassthroughHeadersYes(t *testing.T) {
assert.Nil(t, err) assert.Nil(t, err)
waitTransProcessed(gidYes) waitTransProcessed(gidYes)
assert.Equal(t, StatusSubmitted, getTransStatus(gidYes)) assert.Equal(t, StatusSubmitted, getTransStatus(gidYes))
g := cronTransOnce() cronTransOnce(t, gidYes)
assert.Equal(t, gidYes, g)
assert.Equal(t, StatusSucceed, getTransStatus(gidYes)) assert.Equal(t, StatusSucceed, getTransStatus(gidYes))
} }
@ -159,7 +159,6 @@ func TestSagaGrpcCronHeaders(t *testing.T) {
assert.Nil(t, err) assert.Nil(t, err)
waitTransProcessed(gidYes) waitTransProcessed(gidYes)
assert.Equal(t, StatusSubmitted, getTransStatus(gidYes)) assert.Equal(t, StatusSubmitted, getTransStatus(gidYes))
g := cronTransOnce() cronTransOnce(t, gidYes)
assert.Equal(t, gidYes, g)
assert.Equal(t, StatusSucceed, getTransStatus(gidYes)) assert.Equal(t, StatusSucceed, getTransStatus(gidYes))
} }

24
test/saga_options_test.go

@ -17,19 +17,20 @@ import (
) )
func TestSagaOptionsRetryOngoing(t *testing.T) { func TestSagaOptionsRetryOngoing(t *testing.T) {
gid := dtmimp.GetFuncName()
saga := genSaga1(dtmimp.GetFuncName(), false, false) saga := genSaga1(dtmimp.GetFuncName(), false, false)
saga.RetryInterval = 150 // CronForwardDuration is larger than RetryInterval saga.RetryInterval = 150 // CronForwardDuration is larger than RetryInterval
busi.MainSwitch.TransOutResult.SetOnce(dtmcli.ResultOngoing) busi.MainSwitch.TransOutResult.SetOnce(dtmcli.ResultOngoing)
err := saga.Submit() err := saga.Submit()
assert.Nil(t, err) assert.Nil(t, err)
waitTransProcessed(saga.Gid) waitTransProcessed(saga.Gid)
g := cronTransOnce() cronTransOnce(t, gid)
assert.Equal(t, saga.Gid, g)
assert.Equal(t, StatusSucceed, getTransStatus(saga.Gid)) assert.Equal(t, StatusSucceed, getTransStatus(saga.Gid))
assert.Equal(t, []string{StatusPrepared, StatusSucceed}, getBranchesStatus(saga.Gid)) assert.Equal(t, []string{StatusPrepared, StatusSucceed}, getBranchesStatus(saga.Gid))
} }
func TestSagaOptionsRetryError(t *testing.T) { func TestSagaOptionsRetryError(t *testing.T) {
gid := dtmimp.GetFuncName()
saga := genSaga1(dtmimp.GetFuncName(), false, false) saga := genSaga1(dtmimp.GetFuncName(), false, false)
saga.RetryInterval = 150 // CronForwardDuration is less than 2*RetryInterval saga.RetryInterval = 150 // CronForwardDuration is less than 2*RetryInterval
busi.MainSwitch.TransOutResult.SetOnce("ERROR") busi.MainSwitch.TransOutResult.SetOnce("ERROR")
@ -38,22 +39,21 @@ func TestSagaOptionsRetryError(t *testing.T) {
waitTransProcessed(saga.Gid) waitTransProcessed(saga.Gid)
assert.Equal(t, StatusSubmitted, getTransStatus(saga.Gid)) assert.Equal(t, StatusSubmitted, getTransStatus(saga.Gid))
assert.Equal(t, []string{StatusPrepared, StatusPrepared}, getBranchesStatus(saga.Gid)) assert.Equal(t, []string{StatusPrepared, StatusPrepared}, getBranchesStatus(saga.Gid))
g := cronTransOnce() cronTransOnce(t, "")
assert.Equal(t, "", g) cronTransOnceForwardCron(t, gid, 360)
g = cronTransOnceForwardCron(360)
assert.Equal(t, saga.Gid, g)
assert.Equal(t, StatusSucceed, getTransStatus(saga.Gid)) assert.Equal(t, StatusSucceed, getTransStatus(saga.Gid))
assert.Equal(t, []string{StatusPrepared, StatusSucceed}, getBranchesStatus(saga.Gid)) assert.Equal(t, []string{StatusPrepared, StatusSucceed}, getBranchesStatus(saga.Gid))
} }
func TestSagaOptionsTimeout(t *testing.T) { func TestSagaOptionsTimeout(t *testing.T) {
gid := dtmimp.GetFuncName()
saga := genSaga(dtmimp.GetFuncName(), false, false) saga := genSaga(dtmimp.GetFuncName(), false, false)
saga.TimeoutToFail = 1800 saga.TimeoutToFail = 1800
busi.MainSwitch.TransOutResult.SetOnce(dtmcli.ResultOngoing) busi.MainSwitch.TransOutResult.SetOnce(dtmcli.ResultOngoing)
saga.Submit() saga.Submit()
waitTransProcessed(saga.Gid) waitTransProcessed(saga.Gid)
assert.Equal(t, StatusSubmitted, getTransStatus(saga.Gid)) assert.Equal(t, StatusSubmitted, getTransStatus(saga.Gid))
cronTransOnceForwardNow(3600) cronTransOnceForwardNow(t, gid, 3600)
assert.Equal(t, StatusFailed, getTransStatus(saga.Gid)) assert.Equal(t, StatusFailed, getTransStatus(saga.Gid))
} }
@ -68,6 +68,7 @@ func TestSagaOptionsNormalWait(t *testing.T) {
} }
func TestSagaOptionsCommittedOngoingWait(t *testing.T) { func TestSagaOptionsCommittedOngoingWait(t *testing.T) {
gid := dtmimp.GetFuncName()
saga := genSaga(dtmimp.GetFuncName(), false, false) saga := genSaga(dtmimp.GetFuncName(), false, false)
busi.MainSwitch.TransOutResult.SetOnce(dtmcli.ResultOngoing) busi.MainSwitch.TransOutResult.SetOnce(dtmcli.ResultOngoing)
saga.WaitResult = true 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, []string{StatusPrepared, StatusPrepared, StatusPrepared, StatusPrepared}, getBranchesStatus(saga.Gid))
assert.Equal(t, StatusSubmitted, getTransStatus(saga.Gid)) assert.Equal(t, StatusSubmitted, getTransStatus(saga.Gid))
waitTransProcessed(saga.Gid) waitTransProcessed(saga.Gid)
g := cronTransOnce() cronTransOnce(t, gid)
assert.Equal(t, saga.Gid, g)
assert.Equal(t, []string{StatusPrepared, StatusSucceed, StatusPrepared, StatusSucceed}, getBranchesStatus(saga.Gid)) assert.Equal(t, []string{StatusPrepared, StatusSucceed, StatusPrepared, StatusSucceed}, getBranchesStatus(saga.Gid))
assert.Equal(t, StatusSucceed, getTransStatus(saga.Gid)) assert.Equal(t, StatusSucceed, getTransStatus(saga.Gid))
} }
@ -113,8 +113,7 @@ func TestSagaCronPassthroughHeadersYes(t *testing.T) {
assert.Nil(t, err) assert.Nil(t, err)
waitTransProcessed(gidYes) waitTransProcessed(gidYes)
assert.Equal(t, StatusSubmitted, getTransStatus(gidYes)) assert.Equal(t, StatusSubmitted, getTransStatus(gidYes))
g := cronTransOnce() cronTransOnce(t, gidYes)
assert.Equal(t, gidYes, g)
assert.Equal(t, StatusSucceed, getTransStatus(gidYes)) assert.Equal(t, StatusSucceed, getTransStatus(gidYes))
} }
@ -153,7 +152,6 @@ func TestSagaHeadersYes1(t *testing.T) {
assert.Nil(t, err) assert.Nil(t, err)
waitTransProcessed(gidYes) waitTransProcessed(gidYes)
assert.Equal(t, StatusSubmitted, getTransStatus(gidYes)) assert.Equal(t, StatusSubmitted, getTransStatus(gidYes))
g := cronTransOnce() cronTransOnce(t, gidYes)
assert.Equal(t, gidYes, g)
assert.Equal(t, StatusSucceed, getTransStatus(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) { func TestSagaOngoingSucceed(t *testing.T) {
gid := dtmimp.GetFuncName()
saga := genSaga(dtmimp.GetFuncName(), false, false) saga := genSaga(dtmimp.GetFuncName(), false, false)
busi.MainSwitch.TransOutResult.SetOnce(dtmcli.ResultOngoing) busi.MainSwitch.TransOutResult.SetOnce(dtmcli.ResultOngoing)
saga.Submit() saga.Submit()
waitTransProcessed(saga.Gid) waitTransProcessed(saga.Gid)
assert.Equal(t, []string{StatusPrepared, StatusPrepared, StatusPrepared, StatusPrepared}, getBranchesStatus(saga.Gid)) assert.Equal(t, []string{StatusPrepared, StatusPrepared, StatusPrepared, StatusPrepared}, getBranchesStatus(saga.Gid))
assert.Equal(t, StatusSubmitted, getTransStatus(saga.Gid)) assert.Equal(t, StatusSubmitted, getTransStatus(saga.Gid))
g := cronTransOnce() cronTransOnce(t, gid)
assert.Equal(t, saga.Gid, g)
assert.Equal(t, []string{StatusPrepared, StatusSucceed, StatusPrepared, StatusSucceed}, getBranchesStatus(saga.Gid)) assert.Equal(t, []string{StatusPrepared, StatusSucceed, StatusPrepared, StatusSucceed}, getBranchesStatus(saga.Gid))
assert.Equal(t, StatusSucceed, getTransStatus(saga.Gid)) assert.Equal(t, StatusSucceed, getTransStatus(saga.Gid))
} }
func TestSagaFailed(t *testing.T) { func TestSagaFailed(t *testing.T) {
gid := dtmimp.GetFuncName()
saga := genSaga(dtmimp.GetFuncName(), false, true) saga := genSaga(dtmimp.GetFuncName(), false, true)
busi.MainSwitch.TransOutRevertResult.SetOnce("ERROR") busi.MainSwitch.TransOutRevertResult.SetOnce("ERROR")
err := saga.Submit() err := saga.Submit()
assert.Nil(t, err) assert.Nil(t, err)
waitTransProcessed(saga.Gid) waitTransProcessed(saga.Gid)
assert.Equal(t, StatusAborting, getTransStatus(saga.Gid)) assert.Equal(t, StatusAborting, getTransStatus(saga.Gid))
g := cronTransOnce() cronTransOnce(t, gid)
assert.Equal(t, saga.Gid, g)
assert.Equal(t, StatusFailed, getTransStatus(saga.Gid)) assert.Equal(t, StatusFailed, getTransStatus(saga.Gid))
assert.Equal(t, []string{StatusSucceed, StatusSucceed, StatusSucceed, StatusFailed}, getBranchesStatus(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") logger.Debugf("cron to timeout and then call cancelled twice")
cron := func() { cron := func() {
cronTransOnceForwardNow(300) cronTransOnceForwardNow(t, gid, 300)
logger.Debugf("cronFinished write") logger.Debugf("cronFinished write")
cronFinished <- "1" cronFinished <- "1"
logger.Debugf("cronFinished after write") logger.Debugf("cronFinished after write")

3
test/tcc_grpc_cover_test.go

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

3
test/tcc_grpc_test.go

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

5
test/tcc_test.go

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

16
test/types.go

@ -38,12 +38,12 @@ func waitTransProcessed(gid string) {
} }
} }
func cronTransOnce() string { func cronTransOnce(t *testing.T, gid string) {
gid := dtmsvr.CronTransOnce() gid2 := dtmsvr.CronTransOnce()
assert.Equal(t, gid, gid2)
if dtmsvr.TransProcessedTestChan != nil && gid != "" { if dtmsvr.TransProcessedTestChan != nil && gid != "" {
waitTransProcessed(gid) waitTransProcessed(gid)
} }
return gid
} }
var e2p = dtmimp.E2P var e2p = dtmimp.E2P
@ -54,20 +54,18 @@ type TransGlobal = dtmsvr.TransGlobal
// TransBranch alias // TransBranch alias
type TransBranch = dtmsvr.TransBranch type TransBranch = dtmsvr.TransBranch
func cronTransOnceForwardNow(seconds int) string { func cronTransOnceForwardNow(t *testing.T, gid string, seconds int) {
old := dtmsvr.NowForwardDuration old := dtmsvr.NowForwardDuration
dtmsvr.NowForwardDuration = time.Duration(seconds) * time.Second dtmsvr.NowForwardDuration = time.Duration(seconds) * time.Second
gid := cronTransOnce() cronTransOnce(t, gid)
dtmsvr.NowForwardDuration = old dtmsvr.NowForwardDuration = old
return gid
} }
func cronTransOnceForwardCron(seconds int) string { func cronTransOnceForwardCron(t *testing.T, gid string, seconds int) {
old := dtmsvr.CronForwardDuration old := dtmsvr.CronForwardDuration
dtmsvr.CronForwardDuration = time.Duration(seconds) * time.Second dtmsvr.CronForwardDuration = time.Duration(seconds) * time.Second
gid := cronTransOnce() cronTransOnce(t, gid)
dtmsvr.CronForwardDuration = old dtmsvr.CronForwardDuration = old
return gid
} }
const ( 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 getXc().Conf.Driver = "no-driver" // make xa rollback failed
waitTransProcessed(gid) waitTransProcessed(gid)
getXc().Conf.Driver = oldDriver getXc().Conf.Driver = oldDriver
cronTransOnceForwardNow(500) // rollback succeeded here cronTransOnceForwardNow(t, gid, 500) // rollback succeeded here
assert.Equal(t, StatusFailed, getTransStatus(gid)) 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) timeoutChan := make(chan int, 1)
err := getXc().XaGlobalTransaction(gid, func(xa *dtmcli.Xa) (*resty.Response, error) { err := getXc().XaGlobalTransaction(gid, func(xa *dtmcli.Xa) (*resty.Response, error) {
go func() { go func() {
cronTransOnceForwardNow(300) cronTransOnceForwardNow(t, gid, 300)
timeoutChan <- 0 timeoutChan <- 0
}() }()
<-timeoutChan <-timeoutChan
@ -105,7 +105,7 @@ func TestXaNotTimeout(t *testing.T) {
timeoutChan := make(chan int, 1) timeoutChan := make(chan int, 1)
err := getXc().XaGlobalTransaction(gid, func(xa *dtmcli.Xa) (*resty.Response, error) { err := getXc().XaGlobalTransaction(gid, func(xa *dtmcli.Xa) (*resty.Response, error) {
go func() { go func() {
cronTransOnceForwardNow(0) // not timeout, cronTransOnceForwardNow(t, gid, 0) // not timeout,
timeoutChan <- 0 timeoutChan <- 0
}() }()
<-timeoutChan <-timeoutChan
@ -118,8 +118,7 @@ func TestXaNotTimeout(t *testing.T) {
assert.Nil(t, err) assert.Nil(t, err)
waitTransProcessed(gid) waitTransProcessed(gid)
assert.Equal(t, StatusSubmitted, getTransStatus(gid)) assert.Equal(t, StatusSubmitted, getTransStatus(gid))
g := cronTransOnce() cronTransOnce(t, gid)
assert.Equal(t, gid, g)
assert.Equal(t, StatusSucceed, getTransStatus(gid)) assert.Equal(t, StatusSucceed, getTransStatus(gid))
assert.Equal(t, []string{StatusPrepared, StatusSucceed}, getBranchesStatus(gid)) assert.Equal(t, []string{StatusPrepared, StatusSucceed}, getBranchesStatus(gid))
} }

Loading…
Cancel
Save