diff --git a/dtmgrpc/type.go b/dtmgrpc/type.go index f92d830..bce24ba 100644 --- a/dtmgrpc/type.go +++ b/dtmgrpc/type.go @@ -8,6 +8,7 @@ package dtmgrpc import ( context "context" + "fmt" "github.com/dtm-labs/dtm/dtmcli" "github.com/dtm-labs/dtm/dtmcli/dtmimp" @@ -38,7 +39,7 @@ func GrpcError2DtmError(err error) error { if st.Message() == dtmcli.ResultOngoing { return dtmcli.ErrOngoing } - return dtmcli.ErrFailure + return fmt.Errorf("%s. %w", st.Message(), dtmcli.ErrFailure) } else if ok && st.Code() == codes.FailedPrecondition { return dtmcli.ErrOngoing } diff --git a/test/busi/busi.go b/test/busi/busi.go index 6749783..d6b30bc 100644 --- a/test/busi/busi.go +++ b/test/busi/busi.go @@ -34,7 +34,7 @@ func handleGrpcBusiness(in *BusiReq, result1 string, result2 string, busi string if res == dtmcli.ResultSuccess { return nil } else if res == dtmcli.ResultFailure { - return status.New(codes.Aborted, dtmcli.ResultFailure).Err() + return status.New(codes.Aborted, fmt.Sprintf("reason:%s. %s", MainSwitch.FailureReason.Fetch(), dtmimp.ErrFailure)).Err() } else if res == dtmcli.ResultOngoing { return status.New(codes.FailedPrecondition, dtmcli.ResultOngoing).Err() } diff --git a/test/saga_grpc_test.go b/test/saga_grpc_test.go index 94f1732..273dee6 100644 --- a/test/saga_grpc_test.go +++ b/test/saga_grpc_test.go @@ -28,6 +28,7 @@ func TestSagaGrpcNormal(t *testing.T) { func TestSagaGrpcRollback(t *testing.T) { gid := dtmimp.GetFuncName() saga := genSagaGrpc(gid, false, true) + busi.MainSwitch.FailureReason.SetOnce("Insufficient balance") busi.MainSwitch.TransOutRevertResult.SetOnce(dtmcli.ResultOngoing) saga.Submit() waitTransProcessed(saga.Gid) @@ -35,6 +36,7 @@ func TestSagaGrpcRollback(t *testing.T) { cronTransOnce(t, gid) assert.Equal(t, StatusFailed, getTransStatus(saga.Gid)) assert.Equal(t, []string{StatusSucceed, StatusSucceed, StatusSucceed, StatusFailed}, getBranchesStatus(saga.Gid)) + assert.Equal(t, "url:localhost:58081/busi.Busi/TransIn return failed: reason:Insufficient balance. FAILURE. FAILURE", getTrans(saga.Gid).RollbackReason) } func TestSagaGrpcCurrent(t *testing.T) {