|
|
|
@ -6,7 +6,7 @@ import ( |
|
|
|
"reflect" |
|
|
|
"testing" |
|
|
|
|
|
|
|
"bou.ke/monkey" |
|
|
|
"github.com/agiledragon/gomonkey" |
|
|
|
"github.com/dtm-labs/dtm/client/dtmcli/dtmimp" |
|
|
|
"github.com/dtm-labs/dtm/client/dtmgrpc" |
|
|
|
"github.com/dtm-labs/dtm/test/busi" |
|
|
|
@ -39,11 +39,11 @@ func TestMsgGrpcPrepareAndSubmitCommitAfterFailed(t *testing.T) { |
|
|
|
req := busi.GenReqGrpc(30, false, false) |
|
|
|
msg := dtmgrpc.NewMsgGrpc(DtmGrpcServer, gid). |
|
|
|
Add(busi.BusiGrpc+"/busi.Busi/TransInBSaga", req) |
|
|
|
var guard *monkey.PatchGuard |
|
|
|
var guard *gomonkey.Patches |
|
|
|
err := msg.DoAndSubmitDB(busi.BusiGrpc+"/busi.Busi/QueryPreparedB", dbGet().ToSQLDB(), func(tx *sql.Tx) error { |
|
|
|
err := busi.SagaAdjustBalance(tx, busi.TransOutUID, -int(req.Amount), "SUCCESS") |
|
|
|
guard = monkey.PatchInstanceMethod(reflect.TypeOf(tx), "Commit", func(tx *sql.Tx) error { |
|
|
|
guard.Unpatch() |
|
|
|
guard = gomonkey.ApplyMethod(reflect.TypeOf(tx), "Commit", func(tx *sql.Tx) error { |
|
|
|
guard.Reset() |
|
|
|
_ = tx.Commit() |
|
|
|
return errors.New("test error for patch") |
|
|
|
}) |
|
|
|
@ -63,16 +63,16 @@ func TestMsgGrpcPrepareAndSubmitCommitFailed(t *testing.T) { |
|
|
|
req := busi.GenReqGrpc(30, false, false) |
|
|
|
msg := dtmgrpc.NewMsgGrpc(DtmGrpcServer, gid). |
|
|
|
Add(busi.Busi+"/SagaBTransIn", req) |
|
|
|
var g *monkey.PatchGuard |
|
|
|
var g *gomonkey.Patches |
|
|
|
err := msg.DoAndSubmitDB(busi.BusiGrpc+"/busi.Busi/QueryPreparedB", dbGet().ToSQLDB(), func(tx *sql.Tx) error { |
|
|
|
g = monkey.PatchInstanceMethod(reflect.TypeOf(tx), "Commit", func(tx *sql.Tx) error { |
|
|
|
g = gomonkey.ApplyMethod(reflect.TypeOf(tx), "Commit", func(tx *sql.Tx) error { |
|
|
|
logger.Debugf("tx.Commit rollback and return error in test") |
|
|
|
_ = tx.Rollback() |
|
|
|
return errors.New("test error for patch") |
|
|
|
}) |
|
|
|
return busi.SagaAdjustBalance(tx, busi.TransOutUID, -int(req.Amount), "SUCCESS") |
|
|
|
}) |
|
|
|
g.Unpatch() |
|
|
|
g.Reset() |
|
|
|
assert.Error(t, err) |
|
|
|
assertSameBalance(t, before, "mysql") |
|
|
|
} |
|
|
|
|