Browse Source

empty url is supported

pull/123/head
yedf2 4 years ago
parent
commit
9cb10db62c
  1. 3
      dtmsvr/trans_status.go
  2. 11
      test/saga_grpc_test.go
  3. 11
      test/saga_test.go

3
dtmsvr/trans_status.go

@ -67,6 +67,9 @@ func (t *TransGlobal) needProcess() bool {
}
func (t *TransGlobal) getURLResult(url string, branchID, op string, branchPayload []byte) (string, error) {
if url == "" { // empty url is success
return dtmcli.ResultSuccess, nil
}
if t.Protocol == "grpc" {
dtmimp.PanicIf(strings.HasPrefix(url, "http"), fmt.Errorf("bad url for grpc: %s", url))
server, method, err := dtmdriver.GetDriver().ParseServerMethod(url)

11
test/saga_grpc_test.go

@ -75,6 +75,17 @@ func TestSagaGrpcNormalWait(t *testing.T) {
waitTransProcessed(saga.Gid)
}
func TestSagaGrpcEmptyUrl(t *testing.T) {
saga := dtmgrpc.NewSagaGrpc(examples.DtmGrpcServer, dtmimp.GetFuncName())
req := examples.GenBusiReq(30, false, false)
saga.Add(examples.BusiGrpc+"/examples.Busi/TransOut", examples.BusiGrpc+"/examples.Busi/TransOutRevert", req)
saga.Add("", examples.BusiGrpc+"/examples.Busi/TransInRevert", req)
saga.Submit()
waitTransProcessed(saga.Gid)
assert.Equal(t, []string{StatusPrepared, StatusSucceed, StatusPrepared, StatusSucceed}, getBranchesStatus(saga.Gid))
assert.Equal(t, StatusSucceed, getTransStatus(saga.Gid))
}
func genSagaGrpc(gid string, outFailed bool, inFailed bool) *dtmgrpc.SagaGrpc {
saga := dtmgrpc.NewSagaGrpc(examples.DtmGrpcServer, gid)
req := examples.GenBusiReq(30, outFailed, inFailed)

11
test/saga_test.go

@ -58,6 +58,17 @@ func TestSagaAbnormal(t *testing.T) {
assert.Error(t, err) // a succeed trans can't accept submit
}
func TestSagaEmptyUrl(t *testing.T) {
saga := dtmcli.NewSaga(examples.DtmHttpServer, dtmimp.GetFuncName())
req := examples.GenTransReq(30, false, false)
saga.Add(examples.Busi+"/TransOut", "", &req)
saga.Add("", "", &req)
saga.Submit()
waitTransProcessed(saga.Gid)
assert.Equal(t, []string{StatusPrepared, StatusSucceed, StatusPrepared, StatusSucceed}, getBranchesStatus(saga.Gid))
assert.Equal(t, StatusSucceed, getTransStatus(saga.Gid))
}
func genSaga(gid string, outFailed bool, inFailed bool) *dtmcli.Saga {
saga := dtmcli.NewSaga(examples.DtmHttpServer, gid)
req := examples.GenTransReq(30, outFailed, inFailed)

Loading…
Cancel
Save