committed by
GitHub
11 changed files with 151 additions and 5 deletions
@ -0,0 +1,30 @@ |
|||||
|
package test |
||||
|
|
||||
|
import ( |
||||
|
"testing" |
||||
|
|
||||
|
"github.com/go-resty/resty/v2" |
||||
|
"github.com/stretchr/testify/assert" |
||||
|
"github.com/yedf/dtm/dtmcli" |
||||
|
"github.com/yedf/dtm/dtmcli/dtmimp" |
||||
|
"github.com/yedf/dtm/examples" |
||||
|
) |
||||
|
|
||||
|
func TestTccCoverNotConnected(t *testing.T) { |
||||
|
gid := dtmimp.GetFuncName() |
||||
|
err := dtmcli.TccGlobalTransaction("localhost:01", gid, func(tcc *dtmcli.Tcc) (*resty.Response, error) { |
||||
|
return nil, nil |
||||
|
}) |
||||
|
assert.Error(t, err) |
||||
|
} |
||||
|
|
||||
|
func TestTccCoverPanic(t *testing.T) { |
||||
|
gid := dtmimp.GetFuncName() |
||||
|
err := dtmimp.CatchP(func() { |
||||
|
_ = dtmcli.TccGlobalTransaction(examples.DtmHttpServer, gid, func(tcc *dtmcli.Tcc) (*resty.Response, error) { |
||||
|
panic("user panic") |
||||
|
}) |
||||
|
assert.FailNow(t, "not executed") |
||||
|
}) |
||||
|
assert.Contains(t, err.Error(), "user panic") |
||||
|
} |
||||
@ -0,0 +1,48 @@ |
|||||
|
package test |
||||
|
|
||||
|
import ( |
||||
|
"testing" |
||||
|
|
||||
|
"github.com/stretchr/testify/assert" |
||||
|
"github.com/yedf/dtm/dtmcli/dtmimp" |
||||
|
"github.com/yedf/dtm/dtmgrpc" |
||||
|
"github.com/yedf/dtm/examples" |
||||
|
"google.golang.org/protobuf/types/known/emptypb" |
||||
|
) |
||||
|
|
||||
|
func TestTccGrpcCoverNotConnected(t *testing.T) { |
||||
|
gid := dtmimp.GetFuncName() |
||||
|
err := dtmgrpc.TccGlobalTransaction("localhost:01", gid, func(tcc *dtmgrpc.TccGrpc) error { |
||||
|
return nil |
||||
|
}) |
||||
|
assert.Error(t, err) |
||||
|
} |
||||
|
|
||||
|
func TestTccGrpcCoverPanic(t *testing.T) { |
||||
|
gid := dtmimp.GetFuncName() |
||||
|
err := dtmimp.CatchP(func() { |
||||
|
_ = dtmgrpc.TccGlobalTransaction(examples.DtmGrpcServer, gid, func(tcc *dtmgrpc.TccGrpc) error { |
||||
|
panic("user panic") |
||||
|
}) |
||||
|
assert.FailNow(t, "not executed") |
||||
|
}) |
||||
|
assert.Contains(t, err.Error(), "user panic") |
||||
|
} |
||||
|
|
||||
|
func TestTccGrpcCoverCallBranch(t *testing.T) { |
||||
|
req := examples.GenBusiReq(30, false, false) |
||||
|
gid := dtmimp.GetFuncName() |
||||
|
err := dtmgrpc.TccGlobalTransaction(examples.DtmGrpcServer, gid, func(tcc *dtmgrpc.TccGrpc) error { |
||||
|
|
||||
|
r := &emptypb.Empty{} |
||||
|
err := tcc.CallBranch(req, "not_exists://abc", examples.BusiGrpc+"/examples.Busi/TransOutConfirm", examples.BusiGrpc+"/examples.Busi/TransOutRevert", r) |
||||
|
assert.Error(t, err) |
||||
|
|
||||
|
tcc.Dtm = "localhost:01" |
||||
|
err = tcc.CallBranch(req, examples.BusiGrpc+"/examples.Busi/TransOut", examples.BusiGrpc+"/examples.Busi/TransOutConfirm", examples.BusiGrpc+"/examples.Busi/TransOutRevert", r) |
||||
|
assert.Error(t, err) |
||||
|
|
||||
|
return err |
||||
|
}) |
||||
|
assert.Error(t, err) |
||||
|
} |
||||
@ -0,0 +1,54 @@ |
|||||
|
package test |
||||
|
|
||||
|
import ( |
||||
|
"testing" |
||||
|
|
||||
|
"github.com/go-resty/resty/v2" |
||||
|
"github.com/stretchr/testify/assert" |
||||
|
"github.com/yedf/dtm/dtmcli" |
||||
|
"github.com/yedf/dtm/dtmcli/dtmimp" |
||||
|
"github.com/yedf/dtm/examples" |
||||
|
) |
||||
|
|
||||
|
func TestXaCoverDBError(t *testing.T) { |
||||
|
oldDriver := getXc().Conf["driver"] |
||||
|
gid := dtmimp.GetFuncName() |
||||
|
err := getXc().XaGlobalTransaction(gid, func(xa *dtmcli.Xa) (*resty.Response, error) { |
||||
|
req := examples.GenTransReq(30, false, false) |
||||
|
_, err := xa.CallBranch(req, examples.Busi+"/TransOutXa") |
||||
|
assert.Nil(t, err) |
||||
|
getXc().Conf["driver"] = "no-driver" |
||||
|
_, err = xa.CallBranch(req, examples.Busi+"/TransInXa") |
||||
|
assert.Error(t, err) |
||||
|
getXc().Conf["driver"] = oldDriver // make abort succeed
|
||||
|
return nil, err |
||||
|
}) |
||||
|
assert.Error(t, err) |
||||
|
getXc().Conf["driver"] = "no-driver" // make xa rollback failed
|
||||
|
waitTransProcessed(gid) |
||||
|
getXc().Conf["driver"] = oldDriver |
||||
|
cronTransOnceForwardNow(500) // rollback succeeded here
|
||||
|
assert.Equal(t, StatusFailed, getTransStatus(gid)) |
||||
|
} |
||||
|
|
||||
|
func TestXaCoverDTMError(t *testing.T) { |
||||
|
oldServer := getXc().Server |
||||
|
getXc().Server = "localhost:01" |
||||
|
gid := dtmimp.GetFuncName() |
||||
|
err := getXc().XaGlobalTransaction(gid, func(xa *dtmcli.Xa) (*resty.Response, error) { |
||||
|
return nil, nil |
||||
|
}) |
||||
|
assert.Error(t, err) |
||||
|
getXc().Server = oldServer |
||||
|
} |
||||
|
|
||||
|
func TestXaCoverGidError(t *testing.T) { |
||||
|
gid := "errgid-' '" |
||||
|
err := getXc().XaGlobalTransaction(gid, func(xa *dtmcli.Xa) (*resty.Response, error) { |
||||
|
req := examples.GenTransReq(30, false, false) |
||||
|
_, err := xa.CallBranch(req, examples.Busi+"/TransOutXa") |
||||
|
assert.Error(t, err) |
||||
|
return nil, err |
||||
|
}) |
||||
|
assert.Error(t, err) |
||||
|
} |
||||
Loading…
Reference in new issue