diff --git a/helper/test-cover.sh b/helper/test-cover.sh index fb7bba1..c5860ca 100755 --- a/helper/test-cover.sh +++ b/helper/test-cover.sh @@ -9,6 +9,8 @@ for store in redis boltdb mysql postgres; do echo > profile.out fi done +## for local unit test, you may use following command +# SKIP_MONGO=1 TEST_STORE=redis GOARCH=amd64 go test -v -failfast -count=1 -gcflags=all=-l ./... # go tool cover -html=coverage.txt diff --git a/test/api_test.go b/test/api_test.go index 9831754..7753236 100644 --- a/test/api_test.go +++ b/test/api_test.go @@ -15,6 +15,7 @@ import ( "github.com/dtm-labs/dtm/client/dtmcli" "github.com/dtm-labs/dtm/client/dtmcli/dtmimp" + "github.com/dtm-labs/dtm/dtmsvr/storage/registry" "github.com/dtm-labs/dtm/dtmutil" "github.com/dtm-labs/dtm/test/busi" "github.com/stretchr/testify/assert" @@ -249,30 +250,30 @@ func TestAPIForceStoppedAbnormal(t *testing.T) { assert.Equal(t, resp.StatusCode(), http.StatusConflict) } -// func TestAPIResetNextCronTime(t *testing.T) { -// saga := genSaga(dtmimp.GetFuncName(), false, false) -// saga.Submit() -// waitTransProcessed(saga.Gid) -// assert.Equal(t, []string{StatusPrepared, StatusSucceed, StatusPrepared, StatusSucceed}, getBranchesStatus(saga.Gid)) -// assert.Equal(t, StatusSucceed, getTransStatus(saga.Gid)) -// gid := saga.Gid - -// s := registry.GetStore() -// g := s.FindTransGlobalStore(saga.Gid) - -// // reset -// resp, err := dtmcli.GetRestyClient().R().SetBody(map[string]string{ -// "gid": saga.Gid, -// }).Post(dtmutil.DefaultHTTPServer + "/resetNextCronTime") -// assert.Nil(t, err) -// assert.Equal(t, resp.StatusCode(), http.StatusOK) - -// // after reset assert -// g2 := s.FindTransGlobalStore(gid) -// assert.NotNil(t, g2) -// assert.Equal(t, gid, g2.Gid) -// assert.Greater(t, time.Now().Add(3*time.Second), *g2.NextCronTime) -// assert.Equal(t, g2.UpdateTime, g2.NextCronTime) -// assert.NotEqual(t, g.UpdateTime, g2.UpdateTime) -// assert.NotEqual(t, g.NextCronTime, g2.NextCronTime) -// } +func TestAPIResetNextCronTime(t *testing.T) { + saga := genSaga(dtmimp.GetFuncName(), false, false) + saga.Submit() + waitTransProcessed(saga.Gid) + assert.Equal(t, []string{StatusPrepared, StatusSucceed, StatusPrepared, StatusSucceed}, getBranchesStatus(saga.Gid)) + assert.Equal(t, StatusSucceed, getTransStatus(saga.Gid)) + gid := saga.Gid + + s := registry.GetStore() + g := s.FindTransGlobalStore(saga.Gid) + + // reset + resp, err := dtmcli.GetRestyClient().R().SetBody(map[string]string{ + "gid": saga.Gid, + }).Post(dtmutil.DefaultHTTPServer + "/resetNextCronTime") + assert.Nil(t, err) + assert.Equal(t, resp.StatusCode(), http.StatusOK) + + // after reset assert + g2 := s.FindTransGlobalStore(gid) + assert.NotNil(t, g2) + assert.Equal(t, gid, g2.Gid) + assert.Greater(t, time.Now().Add(3*time.Second), *g2.NextCronTime) + assert.Equal(t, g2.UpdateTime, g2.NextCronTime) + assert.NotEqual(t, g.UpdateTime, g2.UpdateTime) + assert.NotEqual(t, g.NextCronTime, g2.NextCronTime) +} diff --git a/test/store_test.go b/test/store_test.go index 8f0f93f..5845390 100644 --- a/test/store_test.go +++ b/test/store_test.go @@ -179,22 +179,23 @@ func TestUpdateBranches(t *testing.T) { } } -// func TestResetTransGlobalCronTime(t *testing.T) { -// gid := dtmimp.GetFuncName() -// g, _ := initTransGlobal(gid) - -// s := registry.GetStore() -// g2 := s.FindTransGlobalStore(gid) -// assert.NotNil(t, g2) -// assert.Equal(t, gid, g2.Gid) - -// s.ResetTransGlobalCronTime(g2) - -// g2 = s.FindTransGlobalStore(gid) -// assert.NotNil(t, g2) -// assert.Equal(t, gid, g2.Gid) -// assert.Greater(t, time.Now().Add(3*time.Second), *g2.NextCronTime) -// assert.Equal(t, g2.UpdateTime, g2.NextCronTime) -// assert.NotEqual(t, g.UpdateTime, g2.UpdateTime) -// assert.NotEqual(t, g.NextCronTime, g2.NextCronTime) -// } +func TestResetTransGlobalCronTime(t *testing.T) { + gid := dtmimp.GetFuncName() + g, _ := initTransGlobal(gid) + + s := registry.GetStore() + g2 := s.FindTransGlobalStore(gid) + assert.NotNil(t, g2) + assert.Equal(t, gid, g2.Gid) + + s.ResetTransGlobalCronTime(g2) + + g2 = s.FindTransGlobalStore(gid) + assert.NotNil(t, g2) + assert.Equal(t, gid, g2.Gid) + assert.Greater(t, time.Now().Add(3*time.Second), *g2.NextCronTime) + assert.Equal(t, g2.UpdateTime, g2.NextCronTime) + assert.NotEqual(t, g.UpdateTime, g2.UpdateTime) + assert.NotEqual(t, g.NextCronTime, g2.NextCronTime) + s.ChangeGlobalStatus(g, "succeed", []string{}, true) +}