Skip to content

Commit

Permalink
Fix flaky shard controller tests (#3693)
Browse files Browse the repository at this point in the history
* Fix flaky shard controller tests

* update
  • Loading branch information
yycptt committed Dec 10, 2022
1 parent ae223cf commit 912dc51
Showing 1 changed file with 12 additions and 6 deletions.
18 changes: 12 additions & 6 deletions service/history/shard/controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,8 @@ func (s *controllerSuite) TestAcquireShardSuccess() {
if hostID == 0 {
myShards = append(myShards, shardID)
s.mockHistoryEngine.EXPECT().Start().Return()
s.mockHistoryEngine.EXPECT().NotifyNewTasks(gomock.Any(), gomock.Any()).AnyTimes()
// notification step is done after engine is created, so may not be called when test finishes
s.mockHistoryEngine.EXPECT().NotifyNewTasks(gomock.Any(), gomock.Any()).MaxTimes(1)
s.mockServiceResolver.EXPECT().Lookup(convert.Int32ToString(shardID)).Return(s.hostInfo, nil).Times(2)
s.mockEngineFactory.EXPECT().CreateEngine(gomock.Any()).Return(s.mockHistoryEngine)
s.mockShardManager.EXPECT().GetOrCreateShard(gomock.Any(), getOrCreateShardRequestMatcher(shardID)).Return(
Expand Down Expand Up @@ -232,7 +233,8 @@ func (s *controllerSuite) TestAcquireShardsConcurrently() {
if hostID == 0 {
myShards = append(myShards, shardID)
s.mockHistoryEngine.EXPECT().Start().Return()
s.mockHistoryEngine.EXPECT().NotifyNewTasks(gomock.Any(), gomock.Any())
// notification step is done after engine is created, so may not be called when test finishes
s.mockHistoryEngine.EXPECT().NotifyNewTasks(gomock.Any(), gomock.Any()).MaxTimes(1)
s.mockServiceResolver.EXPECT().Lookup(convert.Int32ToString(shardID)).Return(s.hostInfo, nil).Times(2)
s.mockEngineFactory.EXPECT().CreateEngine(gomock.Any()).Return(s.mockHistoryEngine)
s.mockShardManager.EXPECT().GetOrCreateShard(gomock.Any(), getOrCreateShardRequestMatcher(shardID)).Return(
Expand Down Expand Up @@ -310,7 +312,8 @@ func (s *controllerSuite) TestAcquireShardRenewSuccess() {

for shardID := int32(1); shardID <= numShards; shardID++ {
s.mockHistoryEngine.EXPECT().Start().Return()
s.mockHistoryEngine.EXPECT().NotifyNewTasks(gomock.Any(), gomock.Any())
// notification step is done after engine is created, so may not be called when test finishes
s.mockHistoryEngine.EXPECT().NotifyNewTasks(gomock.Any(), gomock.Any()).MaxTimes(1)
s.mockServiceResolver.EXPECT().Lookup(convert.Int32ToString(shardID)).Return(s.hostInfo, nil).Times(2)
s.mockEngineFactory.EXPECT().CreateEngine(gomock.Any()).Return(s.mockHistoryEngine)
s.mockShardManager.EXPECT().GetOrCreateShard(gomock.Any(), getOrCreateShardRequestMatcher(shardID)).Return(
Expand Down Expand Up @@ -373,7 +376,8 @@ func (s *controllerSuite) TestAcquireShardRenewLookupFailed() {

for shardID := int32(1); shardID <= numShards; shardID++ {
s.mockHistoryEngine.EXPECT().Start().Return()
s.mockHistoryEngine.EXPECT().NotifyNewTasks(gomock.Any(), gomock.Any())
// notification step is done after engine is created, so may not be called when test finishes
s.mockHistoryEngine.EXPECT().NotifyNewTasks(gomock.Any(), gomock.Any()).MaxTimes(1)
s.mockServiceResolver.EXPECT().Lookup(convert.Int32ToString(shardID)).Return(s.hostInfo, nil).Times(2)
s.mockEngineFactory.EXPECT().CreateEngine(gomock.Any()).Return(s.mockHistoryEngine)
s.mockShardManager.EXPECT().GetOrCreateShard(gomock.Any(), getOrCreateShardRequestMatcher(shardID)).Return(
Expand Down Expand Up @@ -725,7 +729,8 @@ func (s *controllerSuite) TestShardControllerFuzz() {
s.mockEngineFactory.EXPECT().CreateEngine(contextMatcher(shardID)).DoAndReturn(func(shard Context) Engine {
mockEngine := NewMockEngine(disconnectedMockController)
status := new(int32)
mockEngine.EXPECT().NotifyNewTasks(gomock.Any(), gomock.Any()).AnyTimes()
// notification step is done after engine is created, so may not be called when test finishes
mockEngine.EXPECT().NotifyNewTasks(gomock.Any(), gomock.Any()).MaxTimes(1)
mockEngine.EXPECT().Start().Do(func() {
if !atomic.CompareAndSwapInt32(status, common.DaemonStatusInitialized, common.DaemonStatusStarted) {
return
Expand Down Expand Up @@ -844,7 +849,8 @@ func (s *controllerSuite) setupMocksForAcquireShard(

// s.mockResource.ExecutionMgr.On("Close").Return()
mockEngine.EXPECT().Start().MinTimes(minTimes)
mockEngine.EXPECT().NotifyNewTasks(gomock.Any(), gomock.Any()).AnyTimes()
// notification step is done after engine is created, so may not be called when test finishes
mockEngine.EXPECT().NotifyNewTasks(gomock.Any(), gomock.Any()).MaxTimes(1)
s.mockServiceResolver.EXPECT().Lookup(convert.Int32ToString(shardID)).Return(s.hostInfo, nil).Times(2).MinTimes(minTimes)
s.mockEngineFactory.EXPECT().CreateEngine(contextMatcher(shardID)).Return(mockEngine).MinTimes(minTimes)
s.mockShardManager.EXPECT().GetOrCreateShard(gomock.Any(), getOrCreateShardRequestMatcher(shardID)).Return(
Expand Down

0 comments on commit 912dc51

Please sign in to comment.