diff --git a/.travis.yml b/.travis.yml index 1ba0f6e..a57c97b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,4 +14,4 @@ before_install: - go get -t -v ./... - go get github.com/mattn/goveralls script: - - $GOPATH/bin/goveralls -service=travis-ci -ignore="examples/*,dtmgrpc/dtmgimp/*.pb.go,bench/*" + - $GOPATH/bin/goveralls -service=travis-ci -ignore="examples/*,dtmgrpc/dtmgimp/*.pb.go,bench/*,test/*" diff --git a/test/tcc_test.go b/test/tcc_test.go index fc40dea..b46af82 100644 --- a/test/tcc_test.go +++ b/test/tcc_test.go @@ -40,3 +40,25 @@ func TestTccRollback(t *testing.T) { assert.Equal(t, StatusFailed, getTransStatus(gid)) assert.Equal(t, []string{StatusSucceed, StatusPrepared, StatusSucceed, StatusPrepared}, getBranchesStatus(gid)) } + +func TestTccTimeout(t *testing.T) { + req := examples.GenTransReq(30, false, false) + gid := dtmimp.GetFuncName() + timeoutChan := make(chan int, 1) + + err := dtmcli.TccGlobalTransaction(examples.DtmServer, gid, func(tcc *dtmcli.Tcc) (*resty.Response, error) { + _, err := tcc.CallBranch(req, Busi+"/TransOut", Busi+"/TransOutConfirm", Busi+"/TransOutRevert") + assert.Nil(t, err) + go func() { + cronTransOnceForwardNow(300) + timeoutChan <- 0 + }() + <-timeoutChan + _, err = tcc.CallBranch(req, Busi+"/TransIn", Busi+"/TransInConfirm", Busi+"/TransInRevert") + assert.Error(t, err) + return nil, err + }) + assert.Error(t, err) + assert.Equal(t, StatusFailed, getTransStatus(gid)) + assert.Equal(t, []string{StatusSucceed, StatusPrepared}, getBranchesStatus(gid)) +}