mirror of https://github.com/dtm-labs/dtm.git
10 changed files with 117 additions and 4 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,29 @@ |
|||
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" |
|||
) |
|||
|
|||
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.DtmHttpServer, gid, func(tcc *dtmgrpc.TccGrpc) error { |
|||
panic("user panic") |
|||
}) |
|||
assert.FailNow(t, "not executed") |
|||
}) |
|||
assert.Contains(t, err.Error(), "user panic") |
|||
} |
|||
@ -0,0 +1,40 @@ |
|||
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) |
|||
return nil, err |
|||
}) |
|||
assert.Error(t, err) |
|||
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 |
|||
} |
|||
Loading…
Reference in new issue