Skip to content

Commit

Permalink
Tests for ConflictResolveWorkflowExecution
Browse files Browse the repository at this point in the history
  • Loading branch information
jakobht committed Nov 7, 2024
1 parent ca70959 commit a8773c9
Showing 1 changed file with 99 additions and 0 deletions.
99 changes: 99 additions & 0 deletions service/history/shard/context_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -486,6 +486,105 @@ func (s *contextTestSuite) TestCreateWorkflowExecution() {
}
}

func (s *contextTestSuite) TestConflictResolveWorkflowExecution() {
cases := []struct {
name string
err error
domainLookupErr error
response *persistence.ConflictResolveWorkflowExecutionResponse
setup func()
asserts func(*persistence.ConflictResolveWorkflowExecutionResponse, error)
}{
{
name: "Success",
response: &persistence.ConflictResolveWorkflowExecutionResponse{},
asserts: func(response *persistence.ConflictResolveWorkflowExecutionResponse, err error) {
s.NoError(err)
s.NotNil(response)
},
},
{
name: "No special handling",
err: &types.ServiceBusyError{},
asserts: func(resp *persistence.ConflictResolveWorkflowExecutionResponse, err error) {
s.Equal(err, &types.ServiceBusyError{})
s.NoError(s.context.closedError())
},
},
{
name: "Shard ownership lost error",
err: &persistence.ShardOwnershipLostError{},
asserts: func(resp *persistence.ConflictResolveWorkflowExecutionResponse, err error) {
s.Equal(err, &persistence.ShardOwnershipLostError{})
s.ErrorContains(s.context.closedError(), "shard closed")
},
},
{
name: "Other error - update shard succeed",
err: assert.AnError,
setup: func() {
s.mockShardManager.On("UpdateShard", mock.Anything, mock.Anything).Return(nil)
},
asserts: func(resp *persistence.ConflictResolveWorkflowExecutionResponse, err error) {
s.Equal(assert.AnError, err)
s.NoError(s.context.closedError())
},
},
{
name: "Other error - update shard failed",
err: assert.AnError,
setup: func() {
s.mockShardManager.On("UpdateShard", mock.Anything, mock.Anything).Return(assert.AnError)
},
asserts: func(resp *persistence.ConflictResolveWorkflowExecutionResponse, err error) {
s.Equal(assert.AnError, err)
s.ErrorContains(s.context.closedError(), "shard closed")
},
},
{
name: "Domain lookup failed",
domainLookupErr: assert.AnError,
asserts: func(resp *persistence.ConflictResolveWorkflowExecutionResponse, err error) {
s.ErrorIs(err, assert.AnError)
},
},
}

for _, tc := range cases {
s.Run(tc.name, func() {
// Need setup the suite manually, since we are in a subtest
s.SetupTest()
ctx := context.Background()
request := &persistence.ConflictResolveWorkflowExecutionRequest{
ResetWorkflowSnapshot: persistence.WorkflowSnapshot{
ExecutionInfo: &persistence.WorkflowExecutionInfo{
DomainID: testDomainID,
WorkflowID: testWorkflowID,
},
},
NewWorkflowSnapshot: &persistence.WorkflowSnapshot{},
CurrentWorkflowMutation: &persistence.WorkflowMutation{},
DomainName: testDomain,
}

domainCacheEntry := cache.NewLocalDomainCacheEntryForTest(
&persistence.DomainInfo{ID: testDomainID},
&persistence.DomainConfig{Retention: 7},
testCluster,
)
s.mockResource.DomainCache.EXPECT().GetDomainByID(testDomainID).Return(domainCacheEntry, tc.domainLookupErr)
if tc.setup != nil {
tc.setup()
}

s.mockResource.ExecutionMgr.On("ConflictResolveWorkflowExecution", ctx, mock.Anything).Once().Return(tc.response, tc.err)

resp, err := s.context.ConflictResolveWorkflowExecution(ctx, request)
tc.asserts(resp, err)
})
}
}

func (s *contextTestSuite) TestValidateAndUpdateFailoverMarkers() {
domainFailoverVersion := 100
domainCacheEntryInactiveCluster := cache.NewGlobalDomainCacheEntryForTest(
Expand Down

0 comments on commit a8773c9

Please sign in to comment.