diff --git a/examples/http_saga_barrier.go b/examples/http_saga_barrier.go index 7c8a125..1d50d3b 100644 --- a/examples/http_saga_barrier.go +++ b/examples/http_saga_barrier.go @@ -53,8 +53,8 @@ func sagaBarrierTransInCompensate(c *gin.Context) (interface{}, error) { func sagaBarrierTransOut(c *gin.Context) (interface{}, error) { req := reqFrom(c) - if req.TransInResult != "" { - return req.TransInResult, nil + if req.TransOutResult != "" { + return req.TransOutResult, nil } barrier := MustBarrierFromGin(c) return dtmcli.MapSuccess, barrier.Call(txGet(), func(db dtmcli.DB) error { diff --git a/examples/http_tcc_barrier.go b/examples/http_tcc_barrier.go index a241e23..fca9548 100644 --- a/examples/http_tcc_barrier.go +++ b/examples/http_tcc_barrier.go @@ -81,8 +81,8 @@ func tccBarrierTransInCancel(c *gin.Context) (interface{}, error) { func tccBarrierTransOutTry(c *gin.Context) (interface{}, error) { req := reqFrom(c) - if req.TransInResult != "" { - return req.TransInResult, nil + if req.TransOutResult != "" { + return req.TransOutResult, nil } return dtmcli.MapSuccess, MustBarrierFromGin(c).Call(txGet(), func(db dtmcli.DB) error { return adjustTrading(db, transOutUID, -req.Amount) diff --git a/test/dtmsvr_test.go b/test/dtmsvr_test.go index b0dc6e3..67668f1 100644 --- a/test/dtmsvr_test.go +++ b/test/dtmsvr_test.go @@ -7,7 +7,6 @@ import ( "github.com/gin-gonic/gin" "github.com/stretchr/testify/assert" "github.com/yedf/dtm/common" - "github.com/yedf/dtm/dtmcli" "github.com/yedf/dtm/dtmcli/dtmimp" "github.com/yedf/dtm/dtmsvr" "github.com/yedf/dtm/examples" @@ -37,7 +36,7 @@ func getBranchesStatus(gid string) []string { func assertSucceed(t *testing.T, gid string) { waitTransProcessed(gid) - assert.Equal(t, dtmcli.StatusSucceed, getTransStatus(gid)) + assert.Equal(t, StatusSucceed, getTransStatus(gid)) } func TestUpdateBranchAsync(t *testing.T) { @@ -48,7 +47,7 @@ func TestUpdateBranchAsync(t *testing.T) { assert.Nil(t, err) waitTransProcessed(saga.Gid) time.Sleep(dtmsvr.UpdateBranchAsyncInterval) - assert.Equal(t, []string{dtmcli.StatusPrepared, dtmcli.StatusSucceed}, getBranchesStatus(saga.Gid)) - assert.Equal(t, dtmcli.StatusSucceed, getTransStatus(saga.Gid)) + assert.Equal(t, []string{StatusPrepared, StatusSucceed}, getBranchesStatus(saga.Gid)) + assert.Equal(t, StatusSucceed, getTransStatus(saga.Gid)) common.DtmConfig.UpdateBranchSync = 1 } diff --git a/test/grpc_msg_test.go b/test/grpc_msg_test.go index 2366d87..2314d28 100644 --- a/test/grpc_msg_test.go +++ b/test/grpc_msg_test.go @@ -16,7 +16,7 @@ func TestGrpcMsgNormal(t *testing.T) { err := msg.Submit() assert.Nil(t, err) waitTransProcessed(msg.Gid) - assert.Equal(t, dtmcli.StatusSucceed, getTransStatus(msg.Gid)) + assert.Equal(t, StatusSucceed, getTransStatus(msg.Gid)) } func TestGrpcMsgOngoingSuccess(t *testing.T) { @@ -25,25 +25,25 @@ func TestGrpcMsgOngoingSuccess(t *testing.T) { assert.Nil(t, err) examples.MainSwitch.CanSubmitResult.SetOnce(dtmcli.ResultOngoing) cronTransOnceForwardNow(180) - assert.Equal(t, dtmcli.StatusPrepared, getTransStatus(msg.Gid)) + assert.Equal(t, StatusPrepared, getTransStatus(msg.Gid)) examples.MainSwitch.TransInResult.SetOnce(dtmcli.ResultOngoing) cronTransOnceForwardNow(180) - assert.Equal(t, dtmcli.StatusSubmitted, getTransStatus(msg.Gid)) + assert.Equal(t, StatusSubmitted, getTransStatus(msg.Gid)) cronTransOnce() - assert.Equal(t, dtmcli.StatusSucceed, getTransStatus(msg.Gid)) + assert.Equal(t, StatusSucceed, getTransStatus(msg.Gid)) } func TestGrpcMsgOngoingFailed(t *testing.T) { msg := genGrpcMsg(dtmimp.GetFuncName()) msg.Prepare("") - assert.Equal(t, dtmcli.StatusPrepared, getTransStatus(msg.Gid)) + assert.Equal(t, StatusPrepared, getTransStatus(msg.Gid)) examples.MainSwitch.CanSubmitResult.SetOnce(dtmcli.ResultOngoing) cronTransOnceForwardNow(180) - assert.Equal(t, dtmcli.StatusPrepared, getTransStatus(msg.Gid)) + assert.Equal(t, StatusPrepared, getTransStatus(msg.Gid)) examples.MainSwitch.CanSubmitResult.SetOnce(dtmcli.ResultFailure) cronTransOnceForwardNow(180) - assert.Equal(t, []string{dtmcli.StatusPrepared, dtmcli.StatusPrepared}, getBranchesStatus(msg.Gid)) - assert.Equal(t, dtmcli.StatusFailed, getTransStatus(msg.Gid)) + assert.Equal(t, []string{StatusPrepared, StatusPrepared}, getBranchesStatus(msg.Gid)) + assert.Equal(t, StatusFailed, getTransStatus(msg.Gid)) } func genGrpcMsg(gid string) *dtmgrpc.MsgGrpc { diff --git a/test/grpc_saga_barrier_test.go b/test/grpc_saga_barrier_test.go index e744075..d1394c5 100644 --- a/test/grpc_saga_barrier_test.go +++ b/test/grpc_saga_barrier_test.go @@ -4,7 +4,6 @@ import ( "testing" "github.com/stretchr/testify/assert" - "github.com/yedf/dtm/dtmcli" "github.com/yedf/dtm/dtmcli/dtmimp" "github.com/yedf/dtm/dtmgrpc" "github.com/yedf/dtm/examples" @@ -18,7 +17,7 @@ func TestGrpcSagaBarrierNormal(t *testing.T) { err := saga.Submit() e2p(err) waitTransProcessed(saga.Gid) - assert.Equal(t, []string{dtmcli.StatusPrepared, dtmcli.StatusSucceed, dtmcli.StatusPrepared, dtmcli.StatusSucceed}, getBranchesStatus(saga.Gid)) + assert.Equal(t, []string{StatusPrepared, StatusSucceed, StatusPrepared, StatusSucceed}, getBranchesStatus(saga.Gid)) } func TestGrpcSagaBarrierRollback(t *testing.T) { @@ -29,6 +28,6 @@ func TestGrpcSagaBarrierRollback(t *testing.T) { err := saga.Submit() e2p(err) waitTransProcessed(saga.Gid) - assert.Equal(t, dtmcli.StatusFailed, getTransStatus(saga.Gid)) - assert.Equal(t, []string{dtmcli.StatusSucceed, dtmcli.StatusSucceed, dtmcli.StatusSucceed, dtmcli.StatusFailed}, getBranchesStatus(saga.Gid)) + assert.Equal(t, StatusFailed, getTransStatus(saga.Gid)) + assert.Equal(t, []string{StatusSucceed, StatusSucceed, StatusSucceed, StatusFailed}, getBranchesStatus(saga.Gid)) } diff --git a/test/grpc_saga_test.go b/test/grpc_saga_test.go index 513de55..efc3615 100644 --- a/test/grpc_saga_test.go +++ b/test/grpc_saga_test.go @@ -14,8 +14,8 @@ func TestGrpcSagaNormal(t *testing.T) { saga := genSagaGrpc(dtmimp.GetFuncName(), false, false) saga.Submit() waitTransProcessed(saga.Gid) - assert.Equal(t, []string{dtmcli.StatusPrepared, dtmcli.StatusSucceed, dtmcli.StatusPrepared, dtmcli.StatusSucceed}, getBranchesStatus(saga.Gid)) - assert.Equal(t, dtmcli.StatusSucceed, getTransStatus(saga.Gid)) + assert.Equal(t, []string{StatusPrepared, StatusSucceed, StatusPrepared, StatusSucceed}, getBranchesStatus(saga.Gid)) + assert.Equal(t, StatusSucceed, getTransStatus(saga.Gid)) } func TestGrpcSagaCommittedOngoing(t *testing.T) { @@ -23,10 +23,10 @@ func TestGrpcSagaCommittedOngoing(t *testing.T) { examples.MainSwitch.TransOutResult.SetOnce(dtmcli.ResultOngoing) saga.Submit() waitTransProcessed(saga.Gid) - assert.Equal(t, []string{dtmcli.StatusPrepared, dtmcli.StatusPrepared, dtmcli.StatusPrepared, dtmcli.StatusPrepared}, getBranchesStatus(saga.Gid)) + assert.Equal(t, []string{StatusPrepared, StatusPrepared, StatusPrepared, StatusPrepared}, getBranchesStatus(saga.Gid)) cronTransOnce() - assert.Equal(t, []string{dtmcli.StatusPrepared, dtmcli.StatusSucceed, dtmcli.StatusPrepared, dtmcli.StatusSucceed}, getBranchesStatus(saga.Gid)) - assert.Equal(t, dtmcli.StatusSucceed, getTransStatus(saga.Gid)) + assert.Equal(t, []string{StatusPrepared, StatusSucceed, StatusPrepared, StatusSucceed}, getBranchesStatus(saga.Gid)) + assert.Equal(t, StatusSucceed, getTransStatus(saga.Gid)) } func TestGrpcSagaRollback(t *testing.T) { @@ -34,10 +34,10 @@ func TestGrpcSagaRollback(t *testing.T) { examples.MainSwitch.TransOutRevertResult.SetOnce(dtmcli.ResultOngoing) saga.Submit() waitTransProcessed(saga.Gid) - assert.Equal(t, dtmcli.StatusAborting, getTransStatus(saga.Gid)) + assert.Equal(t, StatusAborting, getTransStatus(saga.Gid)) cronTransOnce() - assert.Equal(t, dtmcli.StatusFailed, getTransStatus(saga.Gid)) - assert.Equal(t, []string{dtmcli.StatusSucceed, dtmcli.StatusSucceed, dtmcli.StatusSucceed, dtmcli.StatusFailed}, getBranchesStatus(saga.Gid)) + assert.Equal(t, StatusFailed, getTransStatus(saga.Gid)) + assert.Equal(t, []string{StatusSucceed, StatusSucceed, StatusSucceed, StatusFailed}, getBranchesStatus(saga.Gid)) } func genSagaGrpc(gid string, outFailed bool, inFailed bool) *dtmgrpc.SagaGrpc { diff --git a/test/grpc_tcc_test.go b/test/grpc_tcc_test.go index afee7f7..adae071 100644 --- a/test/grpc_tcc_test.go +++ b/test/grpc_tcc_test.go @@ -58,7 +58,7 @@ func TestGrpcTccRollback(t *testing.T) { }) assert.Error(t, err) waitTransProcessed(gid) - assert.Equal(t, dtmcli.StatusAborting, getTransStatus(gid)) + assert.Equal(t, StatusAborting, getTransStatus(gid)) cronTransOnce() - assert.Equal(t, dtmcli.StatusFailed, getTransStatus(gid)) + assert.Equal(t, StatusFailed, getTransStatus(gid)) } diff --git a/test/grpc_xa_test.go b/test/grpc_xa_test.go index 1421645..8d1f085 100644 --- a/test/grpc_xa_test.go +++ b/test/grpc_xa_test.go @@ -49,7 +49,7 @@ func TestGrpcXaNormal(t *testing.T) { }) assert.Equal(t, nil, err) waitTransProcessed(gid) - assert.Equal(t, []string{dtmcli.StatusPrepared, dtmcli.StatusSucceed, dtmcli.StatusPrepared, dtmcli.StatusSucceed}, getBranchesStatus(gid)) + assert.Equal(t, []string{StatusPrepared, StatusSucceed, StatusPrepared, StatusSucceed}, getBranchesStatus(gid)) } func TestGrpcXaRollback(t *testing.T) { @@ -67,6 +67,6 @@ func TestGrpcXaRollback(t *testing.T) { }) assert.Error(t, err) waitTransProcessed(gid) - assert.Equal(t, []string{dtmcli.StatusSucceed, dtmcli.StatusPrepared}, getBranchesStatus(gid)) - assert.Equal(t, dtmcli.StatusFailed, getTransStatus(gid)) + assert.Equal(t, []string{StatusSucceed, StatusPrepared}, getBranchesStatus(gid)) + assert.Equal(t, StatusFailed, getTransStatus(gid)) } diff --git a/test/msg_test.go b/test/msg_test.go index c788525..5397397 100644 --- a/test/msg_test.go +++ b/test/msg_test.go @@ -12,38 +12,38 @@ import ( func TestMsgNormal(t *testing.T) { msg := genMsg(dtmimp.GetFuncName()) msg.Submit() - assert.Equal(t, dtmcli.StatusSubmitted, getTransStatus(msg.Gid)) + assert.Equal(t, StatusSubmitted, getTransStatus(msg.Gid)) waitTransProcessed(msg.Gid) - assert.Equal(t, []string{dtmcli.StatusSucceed, dtmcli.StatusSucceed}, getBranchesStatus(msg.Gid)) - assert.Equal(t, dtmcli.StatusSucceed, getTransStatus(msg.Gid)) + assert.Equal(t, []string{StatusSucceed, StatusSucceed}, getBranchesStatus(msg.Gid)) + assert.Equal(t, StatusSucceed, getTransStatus(msg.Gid)) } func TestMsgOngoingSuccess(t *testing.T) { msg := genMsg(dtmimp.GetFuncName()) msg.Prepare("") - assert.Equal(t, dtmcli.StatusPrepared, getTransStatus(msg.Gid)) + assert.Equal(t, StatusPrepared, getTransStatus(msg.Gid)) examples.MainSwitch.CanSubmitResult.SetOnce(dtmcli.ResultOngoing) cronTransOnceForwardNow(180) - assert.Equal(t, dtmcli.StatusPrepared, getTransStatus(msg.Gid)) + assert.Equal(t, StatusPrepared, getTransStatus(msg.Gid)) examples.MainSwitch.TransInResult.SetOnce(dtmcli.ResultOngoing) cronTransOnceForwardNow(180) - assert.Equal(t, dtmcli.StatusSubmitted, getTransStatus(msg.Gid)) + assert.Equal(t, StatusSubmitted, getTransStatus(msg.Gid)) cronTransOnce() - assert.Equal(t, []string{dtmcli.StatusSucceed, dtmcli.StatusSucceed}, getBranchesStatus(msg.Gid)) - assert.Equal(t, dtmcli.StatusSucceed, getTransStatus(msg.Gid)) + assert.Equal(t, []string{StatusSucceed, StatusSucceed}, getBranchesStatus(msg.Gid)) + assert.Equal(t, StatusSucceed, getTransStatus(msg.Gid)) } func TestMsgOngoingFailed(t *testing.T) { msg := genMsg(dtmimp.GetFuncName()) msg.Prepare("") - assert.Equal(t, dtmcli.StatusPrepared, getTransStatus(msg.Gid)) + assert.Equal(t, StatusPrepared, getTransStatus(msg.Gid)) examples.MainSwitch.CanSubmitResult.SetOnce(dtmcli.ResultOngoing) cronTransOnceForwardNow(180) - assert.Equal(t, dtmcli.StatusPrepared, getTransStatus(msg.Gid)) + assert.Equal(t, StatusPrepared, getTransStatus(msg.Gid)) examples.MainSwitch.CanSubmitResult.SetOnce(dtmcli.ResultFailure) cronTransOnceForwardNow(180) - assert.Equal(t, []string{dtmcli.StatusPrepared, dtmcli.StatusPrepared}, getBranchesStatus(msg.Gid)) - assert.Equal(t, dtmcli.StatusFailed, getTransStatus(msg.Gid)) + assert.Equal(t, []string{StatusPrepared, StatusPrepared}, getBranchesStatus(msg.Gid)) + assert.Equal(t, StatusFailed, getTransStatus(msg.Gid)) } func TestMsgAbnormal(t *testing.T) { diff --git a/test/saga_barrier_test.go b/test/saga_barrier_test.go index ab8b1e1..f89ffd4 100644 --- a/test/saga_barrier_test.go +++ b/test/saga_barrier_test.go @@ -10,24 +10,27 @@ import ( ) func TestSagaBarrierNormal(t *testing.T) { - req := &examples.TransReq{Amount: 30} - saga := dtmcli.NewSaga(DtmServer, dtmimp.GetFuncName()). - Add(Busi+"/SagaBTransOut", Busi+"/SagaBTransOutCompensate", req). - Add(Busi+"/SagaBTransIn", Busi+"/SagaBTransInCompensate", req) - dtmimp.Logf("busi trans submit") + saga := genSagaBarrier(dtmimp.GetFuncName(), false, false) err := saga.Submit() - e2p(err) + assert.Nil(t, err) waitTransProcessed(saga.Gid) - assert.Equal(t, []string{dtmcli.StatusPrepared, dtmcli.StatusSucceed, dtmcli.StatusPrepared, dtmcli.StatusSucceed}, getBranchesStatus(saga.Gid)) + assert.Equal(t, []string{StatusPrepared, StatusSucceed, StatusPrepared, StatusSucceed}, getBranchesStatus(saga.Gid)) + assert.Equal(t, StatusSucceed, getTransStatus(saga.Gid)) } func TestSagaBarrierRollback(t *testing.T) { - saga := dtmcli.NewSaga(DtmServer, dtmimp.GetFuncName()). - Add(Busi+"/SagaBTransOut", Busi+"/SagaBTransOutCompensate", &examples.TransReq{Amount: 30}). - Add(Busi+"/SagaBTransIn", Busi+"/SagaBTransInCompensate", &examples.TransReq{Amount: 30, TransInResult: dtmcli.ResultFailure}) - dtmimp.Logf("busi trans submit") + saga := genSagaBarrier(dtmimp.GetFuncName(), false, true) err := saga.Submit() - e2p(err) + assert.Nil(t, err) waitTransProcessed(saga.Gid) - assert.Equal(t, dtmcli.StatusFailed, getTransStatus(saga.Gid)) + assert.Equal(t, StatusFailed, getTransStatus(saga.Gid)) + assert.Equal(t, []string{StatusSucceed, StatusSucceed, StatusSucceed, StatusFailed}, getBranchesStatus(saga.Gid)) +} + +func genSagaBarrier(gid string, outFailed, inFailed bool) *dtmcli.Saga { + req := examples.GenTransReq(30, outFailed, inFailed) + return dtmcli.NewSaga(DtmServer, gid). + Add(Busi+"/SagaBTransOut", Busi+"/SagaBTransOutCompensate", req). + Add(Busi+"/SagaBTransIn", Busi+"/SagaBTransInCompensate", req) + } diff --git a/test/saga_compatible_test.go b/test/saga_compatible_test.go index aa338ca..b8d994c 100644 --- a/test/saga_compatible_test.go +++ b/test/saga_compatible_test.go @@ -5,7 +5,6 @@ import ( "testing" "github.com/stretchr/testify/assert" - "github.com/yedf/dtm/dtmcli" "github.com/yedf/dtm/dtmcli/dtmimp" "github.com/yedf/dtm/examples" ) @@ -16,6 +15,6 @@ func TestSagaCompatibleNormal(t *testing.T) { // compatible with old http, which gid, examples.Busi, examples.Busi, examples.Busi, examples.Busi) dtmimp.RestyClient.R().SetBody(body).Post(fmt.Sprintf("%s/submit", examples.DtmServer)) waitTransProcessed(gid) - assert.Equal(t, []string{dtmcli.StatusPrepared, dtmcli.StatusSucceed, dtmcli.StatusPrepared, dtmcli.StatusSucceed}, getBranchesStatus(gid)) - assert.Equal(t, dtmcli.StatusSucceed, getTransStatus(gid)) + assert.Equal(t, []string{StatusPrepared, StatusSucceed, StatusPrepared, StatusSucceed}, getBranchesStatus(gid)) + assert.Equal(t, StatusSucceed, getTransStatus(gid)) } diff --git a/test/saga_concurrent_test.go b/test/saga_concurrent_test.go index 450b4b9..6beafbf 100644 --- a/test/saga_concurrent_test.go +++ b/test/saga_concurrent_test.go @@ -10,47 +10,37 @@ import ( ) func genSagaCon(gid string, outFailed bool, inFailed bool) *dtmcli.Saga { - dtmimp.Logf("beginning a concurrent saga test ---------------- %s", gid) - req := examples.GenTransReq(30, outFailed, inFailed) - sagaCon := dtmcli.NewSaga(examples.DtmServer, gid). - Add(examples.Busi+"/TransOut", examples.Busi+"/TransOutRevert", &req). - Add(examples.Busi+"/TransIn", examples.Busi+"/TransInRevert", &req). - EnableConcurrent() - return sagaCon + return genSaga(gid, outFailed, inFailed).EnableConcurrent() } func TestSagaConNormal(t *testing.T) { sagaCon := genSagaCon(dtmimp.GetFuncName(), false, false) sagaCon.Submit() waitTransProcessed(sagaCon.Gid) - assert.Equal(t, []string{dtmcli.StatusPrepared, dtmcli.StatusSucceed, dtmcli.StatusPrepared, dtmcli.StatusSucceed}, getBranchesStatus(sagaCon.Gid)) - assert.Equal(t, dtmcli.StatusSucceed, getTransStatus(sagaCon.Gid)) + assert.Equal(t, []string{StatusPrepared, StatusSucceed, StatusPrepared, StatusSucceed}, getBranchesStatus(sagaCon.Gid)) + assert.Equal(t, StatusSucceed, getTransStatus(sagaCon.Gid)) } -func TestSagaConRollback(t *testing.T) { +func TestSagaConRollbackNormal(t *testing.T) { sagaCon := genSagaCon(dtmimp.GetFuncName(), true, false) examples.MainSwitch.TransOutRevertResult.SetOnce(dtmcli.ResultOngoing) err := sagaCon.Submit() assert.Nil(t, err) waitTransProcessed(sagaCon.Gid) - assert.Equal(t, dtmcli.StatusAborting, getTransStatus(sagaCon.Gid)) + assert.Equal(t, StatusAborting, getTransStatus(sagaCon.Gid)) cronTransOnce() - assert.Equal(t, dtmcli.StatusFailed, getTransStatus(sagaCon.Gid)) - assert.Equal(t, []string{dtmcli.StatusSucceed, dtmcli.StatusFailed, dtmcli.StatusSucceed, dtmcli.StatusSucceed}, getBranchesStatus(sagaCon.Gid)) - err = sagaCon.Submit() - assert.Error(t, err) + assert.Equal(t, StatusFailed, getTransStatus(sagaCon.Gid)) + assert.Equal(t, []string{StatusSucceed, StatusFailed, StatusSucceed, StatusSucceed}, getBranchesStatus(sagaCon.Gid)) } -func TestSagaConRollback2(t *testing.T) { +func TestSagaConRollbackOrder(t *testing.T) { sagaCon := genSagaCon(dtmimp.GetFuncName(), true, false) sagaCon.AddBranchOrder(1, []int{0}) err := sagaCon.Submit() assert.Nil(t, err) waitTransProcessed(sagaCon.Gid) - assert.Equal(t, dtmcli.StatusFailed, getTransStatus(sagaCon.Gid)) - assert.Equal(t, []string{dtmcli.StatusSucceed, dtmcli.StatusFailed, dtmcli.StatusPrepared, dtmcli.StatusPrepared}, getBranchesStatus(sagaCon.Gid)) - err = sagaCon.Submit() - assert.Error(t, err) + assert.Equal(t, StatusFailed, getTransStatus(sagaCon.Gid)) + assert.Equal(t, []string{StatusSucceed, StatusFailed, StatusPrepared, StatusPrepared}, getBranchesStatus(sagaCon.Gid)) } func TestSagaConCommittedOngoing(t *testing.T) { @@ -58,10 +48,10 @@ func TestSagaConCommittedOngoing(t *testing.T) { examples.MainSwitch.TransOutResult.SetOnce(dtmcli.ResultOngoing) sagaCon.Submit() waitTransProcessed(sagaCon.Gid) - assert.Equal(t, []string{dtmcli.StatusPrepared, dtmcli.StatusPrepared, dtmcli.StatusPrepared, dtmcli.StatusSucceed}, getBranchesStatus(sagaCon.Gid)) - assert.Equal(t, dtmcli.StatusSubmitted, getTransStatus(sagaCon.Gid)) + assert.Equal(t, []string{StatusPrepared, StatusPrepared, StatusPrepared, StatusSucceed}, getBranchesStatus(sagaCon.Gid)) + assert.Equal(t, StatusSubmitted, getTransStatus(sagaCon.Gid)) cronTransOnce() - assert.Equal(t, []string{dtmcli.StatusPrepared, dtmcli.StatusSucceed, dtmcli.StatusPrepared, dtmcli.StatusSucceed}, getBranchesStatus(sagaCon.Gid)) - assert.Equal(t, dtmcli.StatusSucceed, getTransStatus(sagaCon.Gid)) + assert.Equal(t, []string{StatusPrepared, StatusSucceed, StatusPrepared, StatusSucceed}, getBranchesStatus(sagaCon.Gid)) + assert.Equal(t, StatusSucceed, getTransStatus(sagaCon.Gid)) } diff --git a/test/saga_options_test.go b/test/saga_options_test.go index ea56eff..6572586 100644 --- a/test/saga_options_test.go +++ b/test/saga_options_test.go @@ -17,8 +17,8 @@ func TestSagaOptionsRetryOngoing(t *testing.T) { assert.Nil(t, err) waitTransProcessed(saga.Gid) cronTransOnce() - assert.Equal(t, dtmcli.StatusSucceed, getTransStatus(saga.Gid)) - assert.Equal(t, []string{dtmcli.StatusPrepared, dtmcli.StatusSucceed}, getBranchesStatus(saga.Gid)) + assert.Equal(t, StatusSucceed, getTransStatus(saga.Gid)) + assert.Equal(t, []string{StatusPrepared, StatusSucceed}, getBranchesStatus(saga.Gid)) } func TestSagaOptionsRetryError(t *testing.T) { @@ -29,11 +29,11 @@ func TestSagaOptionsRetryError(t *testing.T) { assert.Nil(t, err) waitTransProcessed(saga.Gid) cronTransOnce() - assert.Equal(t, dtmcli.StatusSubmitted, getTransStatus(saga.Gid)) - assert.Equal(t, []string{dtmcli.StatusPrepared, dtmcli.StatusPrepared}, getBranchesStatus(saga.Gid)) + assert.Equal(t, StatusSubmitted, getTransStatus(saga.Gid)) + assert.Equal(t, []string{StatusPrepared, StatusPrepared}, getBranchesStatus(saga.Gid)) cronTransOnceForwardCron(360) - assert.Equal(t, dtmcli.StatusSucceed, getTransStatus(saga.Gid)) - assert.Equal(t, []string{dtmcli.StatusPrepared, dtmcli.StatusSucceed}, getBranchesStatus(saga.Gid)) + assert.Equal(t, StatusSucceed, getTransStatus(saga.Gid)) + assert.Equal(t, []string{StatusPrepared, StatusSucceed}, getBranchesStatus(saga.Gid)) } func TestSagaOptionsTimeout(t *testing.T) { @@ -42,9 +42,9 @@ func TestSagaOptionsTimeout(t *testing.T) { examples.MainSwitch.TransOutResult.SetOnce(dtmcli.ResultOngoing) saga.Submit() waitTransProcessed(saga.Gid) - assert.Equal(t, dtmcli.StatusSubmitted, getTransStatus(saga.Gid)) + assert.Equal(t, StatusSubmitted, getTransStatus(saga.Gid)) cronTransOnceForwardNow(3600) - assert.Equal(t, dtmcli.StatusFailed, getTransStatus(saga.Gid)) + assert.Equal(t, StatusFailed, getTransStatus(saga.Gid)) } func TestSagaOptionsNormalWait(t *testing.T) { @@ -53,8 +53,8 @@ func TestSagaOptionsNormalWait(t *testing.T) { err := saga.Submit() assert.Nil(t, err) waitTransProcessed(saga.Gid) - assert.Equal(t, []string{dtmcli.StatusPrepared, dtmcli.StatusSucceed, dtmcli.StatusPrepared, dtmcli.StatusSucceed}, getBranchesStatus(saga.Gid)) - assert.Equal(t, dtmcli.StatusSucceed, getTransStatus(saga.Gid)) + assert.Equal(t, []string{StatusPrepared, StatusSucceed, StatusPrepared, StatusSucceed}, getBranchesStatus(saga.Gid)) + assert.Equal(t, StatusSucceed, getTransStatus(saga.Gid)) } func TestSagaOptionsCommittedOngoingWait(t *testing.T) { @@ -63,12 +63,12 @@ func TestSagaOptionsCommittedOngoingWait(t *testing.T) { saga.SetOptions(&dtmimp.TransOptions{WaitResult: true}) err := saga.Submit() assert.Error(t, err) - assert.Equal(t, []string{dtmcli.StatusPrepared, dtmcli.StatusPrepared, dtmcli.StatusPrepared, dtmcli.StatusPrepared}, getBranchesStatus(saga.Gid)) - assert.Equal(t, dtmcli.StatusSubmitted, getTransStatus(saga.Gid)) + assert.Equal(t, []string{StatusPrepared, StatusPrepared, StatusPrepared, StatusPrepared}, getBranchesStatus(saga.Gid)) + assert.Equal(t, StatusSubmitted, getTransStatus(saga.Gid)) waitTransProcessed(saga.Gid) cronTransOnce() - assert.Equal(t, []string{dtmcli.StatusPrepared, dtmcli.StatusSucceed, dtmcli.StatusPrepared, dtmcli.StatusSucceed}, getBranchesStatus(saga.Gid)) - assert.Equal(t, dtmcli.StatusSucceed, getTransStatus(saga.Gid)) + assert.Equal(t, []string{StatusPrepared, StatusSucceed, StatusPrepared, StatusSucceed}, getBranchesStatus(saga.Gid)) + assert.Equal(t, StatusSucceed, getTransStatus(saga.Gid)) } func TestSagaOptionsRollbackWait(t *testing.T) { @@ -77,6 +77,6 @@ func TestSagaOptionsRollbackWait(t *testing.T) { err := saga.Submit() assert.Error(t, err) waitTransProcessed(saga.Gid) - assert.Equal(t, dtmcli.StatusFailed, getTransStatus(saga.Gid)) - assert.Equal(t, []string{dtmcli.StatusSucceed, dtmcli.StatusSucceed, dtmcli.StatusSucceed, dtmcli.StatusFailed}, getBranchesStatus(saga.Gid)) + assert.Equal(t, StatusFailed, getTransStatus(saga.Gid)) + assert.Equal(t, []string{StatusSucceed, StatusSucceed, StatusSucceed, StatusFailed}, getBranchesStatus(saga.Gid)) } diff --git a/test/saga_test.go b/test/saga_test.go index a005a7b..2e7f72e 100644 --- a/test/saga_test.go +++ b/test/saga_test.go @@ -13,8 +13,8 @@ func TestSagaNormal(t *testing.T) { saga := genSaga(dtmimp.GetFuncName(), false, false) saga.Submit() waitTransProcessed(saga.Gid) - assert.Equal(t, []string{dtmcli.StatusPrepared, dtmcli.StatusSucceed, dtmcli.StatusPrepared, dtmcli.StatusSucceed}, getBranchesStatus(saga.Gid)) - assert.Equal(t, dtmcli.StatusSucceed, getTransStatus(saga.Gid)) + assert.Equal(t, []string{StatusPrepared, StatusSucceed, StatusPrepared, StatusSucceed}, getBranchesStatus(saga.Gid)) + assert.Equal(t, StatusSucceed, getTransStatus(saga.Gid)) } func TestSagaOngoingSucceed(t *testing.T) { @@ -22,11 +22,11 @@ func TestSagaOngoingSucceed(t *testing.T) { examples.MainSwitch.TransOutResult.SetOnce(dtmcli.ResultOngoing) saga.Submit() waitTransProcessed(saga.Gid) - assert.Equal(t, []string{dtmcli.StatusPrepared, dtmcli.StatusPrepared, dtmcli.StatusPrepared, dtmcli.StatusPrepared}, getBranchesStatus(saga.Gid)) - assert.Equal(t, dtmcli.StatusSubmitted, getTransStatus(saga.Gid)) + assert.Equal(t, []string{StatusPrepared, StatusPrepared, StatusPrepared, StatusPrepared}, getBranchesStatus(saga.Gid)) + assert.Equal(t, StatusSubmitted, getTransStatus(saga.Gid)) cronTransOnce() - assert.Equal(t, []string{dtmcli.StatusPrepared, dtmcli.StatusSucceed, dtmcli.StatusPrepared, dtmcli.StatusSucceed}, getBranchesStatus(saga.Gid)) - assert.Equal(t, dtmcli.StatusSucceed, getTransStatus(saga.Gid)) + assert.Equal(t, []string{StatusPrepared, StatusSucceed, StatusPrepared, StatusSucceed}, getBranchesStatus(saga.Gid)) + assert.Equal(t, StatusSucceed, getTransStatus(saga.Gid)) } func TestSagaFailed(t *testing.T) { @@ -35,10 +35,10 @@ func TestSagaFailed(t *testing.T) { err := saga.Submit() assert.Nil(t, err) waitTransProcessed(saga.Gid) - assert.Equal(t, dtmcli.StatusAborting, getTransStatus(saga.Gid)) + assert.Equal(t, StatusAborting, getTransStatus(saga.Gid)) cronTransOnce() - assert.Equal(t, dtmcli.StatusFailed, getTransStatus(saga.Gid)) - assert.Equal(t, []string{dtmcli.StatusSucceed, dtmcli.StatusSucceed, dtmcli.StatusSucceed, dtmcli.StatusFailed}, getBranchesStatus(saga.Gid)) + assert.Equal(t, StatusFailed, getTransStatus(saga.Gid)) + assert.Equal(t, []string{StatusSucceed, StatusSucceed, StatusSucceed, StatusFailed}, getBranchesStatus(saga.Gid)) } func TestSagaAbnormal(t *testing.T) { diff --git a/test/tcc_barrier_test.go b/test/tcc_barrier_test.go index f3a53e2..61d0a4f 100644 --- a/test/tcc_barrier_test.go +++ b/test/tcc_barrier_test.go @@ -17,28 +17,30 @@ import ( "github.com/yedf/dtm/examples" ) -func TestTccBarrierRollback(t *testing.T) { +func TestTccBarrierNormal(t *testing.T) { + req := examples.GenTransReq(30, false, false) gid := dtmimp.GetFuncName() err := dtmcli.TccGlobalTransaction(DtmServer, gid, func(tcc *dtmcli.Tcc) (*resty.Response, error) { - _, err := tcc.CallBranch(&examples.TransReq{Amount: 30}, Busi+"/TccBTransOutTry", Busi+"/TccBTransOutConfirm", Busi+"/TccBTransOutCancel") + _, err := tcc.CallBranch(req, Busi+"/TccBTransOutTry", Busi+"/TccBTransOutConfirm", Busi+"/TccBTransOutCancel") assert.Nil(t, err) - return tcc.CallBranch(&examples.TransReq{Amount: 30, TransInResult: dtmcli.ResultFailure}, Busi+"/TccBTransInTry", Busi+"/TccBTransInConfirm", Busi+"/TccBTransInCancel") + return tcc.CallBranch(req, Busi+"/TccBTransInTry", Busi+"/TccBTransInConfirm", Busi+"/TccBTransInCancel") }) - assert.Error(t, err) + assert.Nil(t, err) waitTransProcessed(gid) - assert.Equal(t, dtmcli.StatusFailed, getTransStatus(gid)) + assert.Equal(t, StatusSucceed, getTransStatus(gid)) } -func TestTccBarrierNormal(t *testing.T) { +func TestTccBarrierRollback(t *testing.T) { + req := examples.GenTransReq(30, false, true) gid := dtmimp.GetFuncName() err := dtmcli.TccGlobalTransaction(DtmServer, gid, func(tcc *dtmcli.Tcc) (*resty.Response, error) { - _, err := tcc.CallBranch(&examples.TransReq{Amount: 30}, Busi+"/TccBTransOutTry", Busi+"/TccBTransOutConfirm", Busi+"/TccBTransOutCancel") + _, err := tcc.CallBranch(req, Busi+"/TccBTransOutTry", Busi+"/TccBTransOutConfirm", Busi+"/TccBTransOutCancel") assert.Nil(t, err) - return tcc.CallBranch(&examples.TransReq{Amount: 30}, Busi+"/TccBTransInTry", Busi+"/TccBTransInConfirm", Busi+"/TccBTransInCancel") + return tcc.CallBranch(req, Busi+"/TccBTransInTry", Busi+"/TccBTransInConfirm", Busi+"/TccBTransInCancel") }) - assert.Nil(t, err) + assert.Error(t, err) waitTransProcessed(gid) - assert.Equal(t, dtmcli.StatusSucceed, getTransStatus(gid)) + assert.Equal(t, StatusFailed, getTransStatus(gid)) } func TestTccBarrierDisorder(t *testing.T) { @@ -69,7 +71,7 @@ func TestTccBarrierDisorder(t *testing.T) { "gid": tcc.Gid, "branch_id": branchID, "trans_type": "tcc", - "status": dtmcli.StatusPrepared, + "status": StatusPrepared, "data": string(dtmimp.MustMarshal(body)), dtmcli.BranchTry: tryURL, dtmcli.BranchConfirm: confirmURL, @@ -107,8 +109,8 @@ func TestTccBarrierDisorder(t *testing.T) { return nil, fmt.Errorf("a cancelled tcc") }) assert.Error(t, err, fmt.Errorf("a cancelled tcc")) - assert.Equal(t, []string{dtmcli.StatusSucceed, dtmcli.StatusPrepared, dtmcli.StatusPrepared}, getBranchesStatus(gid)) - assert.Equal(t, dtmcli.StatusFailed, getTransStatus(gid)) + assert.Equal(t, []string{StatusSucceed, StatusPrepared, StatusPrepared}, getBranchesStatus(gid)) + assert.Equal(t, StatusFailed, getTransStatus(gid)) } func TestTccBarrierPanic(t *testing.T) { diff --git a/test/tcc_test.go b/test/tcc_test.go index 9a8d119..f7bd709 100644 --- a/test/tcc_test.go +++ b/test/tcc_test.go @@ -11,28 +11,30 @@ import ( ) func TestTccNormal(t *testing.T) { - data := &examples.TransReq{Amount: 30} + req := examples.GenTransReq(30, false, false) gid := dtmimp.GetFuncName() err := dtmcli.TccGlobalTransaction(examples.DtmServer, gid, func(tcc *dtmcli.Tcc) (*resty.Response, error) { - _, err := tcc.CallBranch(data, Busi+"/TransOut", Busi+"/TransOutConfirm", Busi+"/TransOutRevert") + _, err := tcc.CallBranch(req, Busi+"/TransOut", Busi+"/TransOutConfirm", Busi+"/TransOutRevert") assert.Nil(t, err) - return tcc.CallBranch(data, Busi+"/TransIn", Busi+"/TransInConfirm", Busi+"/TransInRevert") + return tcc.CallBranch(req, Busi+"/TransIn", Busi+"/TransInConfirm", Busi+"/TransInRevert") }) assert.Nil(t, err) + waitTransProcessed(gid) + assert.Equal(t, StatusSucceed, getTransStatus(gid)) } func TestTccRollback(t *testing.T) { gid := dtmimp.GetFuncName() - data := &examples.TransReq{Amount: 30, TransInResult: dtmcli.ResultFailure} + req := examples.GenTransReq(30, false, true) err := dtmcli.TccGlobalTransaction(examples.DtmServer, gid, func(tcc *dtmcli.Tcc) (*resty.Response, error) { - _, rerr := tcc.CallBranch(data, Busi+"/TransOut", Busi+"/TransOutConfirm", Busi+"/TransOutRevert") + _, rerr := tcc.CallBranch(req, Busi+"/TransOut", Busi+"/TransOutConfirm", Busi+"/TransOutRevert") assert.Nil(t, rerr) examples.MainSwitch.TransOutRevertResult.SetOnce(dtmcli.ResultOngoing) - return tcc.CallBranch(data, Busi+"/TransIn", Busi+"/TransInConfirm", Busi+"/TransInRevert") + return tcc.CallBranch(req, Busi+"/TransIn", Busi+"/TransInConfirm", Busi+"/TransInRevert") }) assert.Error(t, err) waitTransProcessed(gid) - assert.Equal(t, dtmcli.StatusAborting, getTransStatus(gid)) + assert.Equal(t, StatusAborting, getTransStatus(gid)) cronTransOnce() - assert.Equal(t, dtmcli.StatusFailed, getTransStatus(gid)) + assert.Equal(t, StatusFailed, getTransStatus(gid)) } diff --git a/test/types.go b/test/types.go index 663f0f0..82e241c 100644 --- a/test/types.go +++ b/test/types.go @@ -4,6 +4,7 @@ import ( "time" "github.com/yedf/dtm/common" + "github.com/yedf/dtm/dtmcli" "github.com/yedf/dtm/dtmcli/dtmimp" "github.com/yedf/dtm/dtmsvr" ) @@ -57,3 +58,16 @@ func cronTransOnceForwardCron(seconds int) { cronTransOnce() dtmsvr.CronForwardDuration = old } + +const ( + // StatusPrepared status for global/branch trans status. + StatusPrepared = dtmcli.StatusPrepared + // StatusSubmitted status for global trans status. + StatusSubmitted = dtmcli.StatusSubmitted + // StatusSucceed status for global/branch trans status. + StatusSucceed = dtmcli.StatusSucceed + // StatusFailed status for global/branch trans status. + StatusFailed = dtmcli.StatusFailed + // StatusAborting status for global trans status. + StatusAborting = dtmcli.StatusAborting +) diff --git a/test/xa_test.go b/test/xa_test.go index 6223d03..48e452a 100644 --- a/test/xa_test.go +++ b/test/xa_test.go @@ -33,7 +33,7 @@ func TestXaNormal(t *testing.T) { }) assert.Equal(t, nil, err) waitTransProcessed(gid) - assert.Equal(t, []string{dtmcli.StatusPrepared, dtmcli.StatusSucceed, dtmcli.StatusPrepared, dtmcli.StatusSucceed}, getBranchesStatus(gid)) + assert.Equal(t, []string{StatusPrepared, StatusSucceed, StatusPrepared, StatusSucceed}, getBranchesStatus(gid)) } func TestXaDuplicate(t *testing.T) { @@ -51,7 +51,7 @@ func TestXaDuplicate(t *testing.T) { }) assert.Equal(t, nil, err) waitTransProcessed(gid) - assert.Equal(t, []string{dtmcli.StatusPrepared, dtmcli.StatusSucceed, dtmcli.StatusPrepared, dtmcli.StatusSucceed}, getBranchesStatus(gid)) + assert.Equal(t, []string{StatusPrepared, StatusSucceed, StatusPrepared, StatusSucceed}, getBranchesStatus(gid)) } func TestXaRollback(t *testing.T) { xc := examples.XaClient @@ -66,8 +66,8 @@ func TestXaRollback(t *testing.T) { }) assert.Error(t, err) waitTransProcessed(gid) - assert.Equal(t, []string{dtmcli.StatusSucceed, dtmcli.StatusPrepared}, getBranchesStatus(gid)) - assert.Equal(t, dtmcli.StatusFailed, getTransStatus(gid)) + assert.Equal(t, []string{StatusSucceed, StatusPrepared}, getBranchesStatus(gid)) + assert.Equal(t, StatusFailed, getTransStatus(gid)) } func TestXaTimeout(t *testing.T) {