From 7c28d5acee2c4d2f985e8c2d4d3365891dabf433 Mon Sep 17 00:00:00 2001 From: yedf2 <120050102@qq.com> Date: Mon, 10 Jan 2022 16:10:50 +0800 Subject: [PATCH] cover nested --- dtmutil/utils.go | 2 ++ test/busi/base_http.go | 4 ++-- test/tcc_cover_test.go | 15 +++++++++++++++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/dtmutil/utils.go b/dtmutil/utils.go index d673c53..d690cd6 100644 --- a/dtmutil/utils.go +++ b/dtmutil/utils.go @@ -14,6 +14,7 @@ import ( "net/http" "os" "path/filepath" + "reflect" "strings" "time" @@ -64,6 +65,7 @@ func WrapHandler2(fn func(*gin.Context) interface{}) gin.HandlerFunc { if resp, ok := r.(*resty.Response); ok { b := resp.Body() status = resp.StatusCode() + r = nil err = json.Unmarshal(b, &r) } diff --git a/test/busi/base_http.go b/test/busi/base_http.go index bfcf2a9..0feee1e 100644 --- a/test/busi/base_http.go +++ b/test/busi/base_http.go @@ -139,10 +139,10 @@ func BaseAddRoute(app *gin.Engine) { }) })) - app.POST(BusiAPI+"/TransInTccParent", dtmutil.WrapHandler2(func(c *gin.Context) interface{} { + app.POST(BusiAPI+"/TransInTccNested", dtmutil.WrapHandler2(func(c *gin.Context) interface{} { tcc, err := dtmcli.TccFromQuery(c.Request.URL.Query()) logger.FatalIfError(err) - logger.Debugf("TransInTccParent ") + logger.Debugf("TransInTccNested ") resp, err := tcc.CallBranch(&TransReq{Amount: reqFrom(c).Amount}, Busi+"/TransIn", Busi+"/TransInConfirm", Busi+"/TransInRevert") if err != nil { return err diff --git a/test/tcc_cover_test.go b/test/tcc_cover_test.go index c8d93d8..00ba711 100644 --- a/test/tcc_cover_test.go +++ b/test/tcc_cover_test.go @@ -6,6 +6,7 @@ import ( "github.com/dtm-labs/dtm/dtmcli" "github.com/dtm-labs/dtm/dtmcli/dtmimp" "github.com/dtm-labs/dtm/dtmutil" + "github.com/dtm-labs/dtm/test/busi" "github.com/go-resty/resty/v2" "github.com/stretchr/testify/assert" ) @@ -29,3 +30,17 @@ func TestTccCoverPanic(t *testing.T) { assert.Contains(t, err.Error(), "user panic") waitTransProcessed(gid) } + +func TestTccNested(t *testing.T) { + req := busi.GenTransReq(30, false, false) + gid := dtmimp.GetFuncName() + err := dtmcli.TccGlobalTransaction(dtmutil.DefaultHTTPServer, gid, func(tcc *dtmcli.Tcc) (*resty.Response, error) { + _, err := tcc.CallBranch(req, Busi+"/TransOut", Busi+"/TransOutConfirm", Busi+"/TransOutRevert") + assert.Nil(t, err) + return tcc.CallBranch(req, Busi+"/TransInTccNested", Busi+"/TransInConfirm", Busi+"/TransInRevert") + }) + assert.Nil(t, err) + waitTransProcessed(gid) + assert.Equal(t, StatusSucceed, getTransStatus(gid)) + assert.Equal(t, []string{StatusPrepared, StatusSucceed, StatusPrepared, StatusSucceed, StatusPrepared, StatusSucceed}, getBranchesStatus(gid)) +}