Skip to content

Commit 6bf8b86

Browse files
authored
Added tests for UpdateWorkflowExecution (#6484)
What changed? Added tests for UpdateWorkflowExecution Why? Improve coverage How did you test it? Potential risks Release notes Documentation Changes
1 parent ca70959 commit 6bf8b86

File tree

1 file changed

+100
-0
lines changed

1 file changed

+100
-0
lines changed

service/history/shard/context_test.go

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -486,6 +486,106 @@ func (s *contextTestSuite) TestCreateWorkflowExecution() {
486486
}
487487
}
488488

489+
func (s *contextTestSuite) TestUpdateWorkflowExecution() {
490+
cases := []struct {
491+
name string
492+
err error
493+
domainLookupErr error
494+
response *persistence.UpdateWorkflowExecutionResponse
495+
setup func()
496+
asserts func(*persistence.UpdateWorkflowExecutionResponse, error)
497+
}{
498+
{
499+
name: "Success",
500+
response: &persistence.UpdateWorkflowExecutionResponse{},
501+
asserts: func(response *persistence.UpdateWorkflowExecutionResponse, err error) {
502+
s.NoError(err)
503+
s.NotNil(response)
504+
},
505+
},
506+
{
507+
name: "No special handling",
508+
err: &types.ServiceBusyError{},
509+
asserts: func(resp *persistence.UpdateWorkflowExecutionResponse, err error) {
510+
s.Equal(err, &types.ServiceBusyError{})
511+
s.NoError(s.context.closedError())
512+
},
513+
},
514+
{
515+
name: "Shard ownership lost error",
516+
err: &persistence.ShardOwnershipLostError{},
517+
asserts: func(resp *persistence.UpdateWorkflowExecutionResponse, err error) {
518+
s.Equal(err, &persistence.ShardOwnershipLostError{})
519+
s.ErrorContains(s.context.closedError(), "shard closed")
520+
},
521+
},
522+
{
523+
name: "Other error - update shard succeed",
524+
err: assert.AnError,
525+
setup: func() {
526+
s.mockShardManager.On("UpdateShard", mock.Anything, mock.Anything).Return(nil)
527+
},
528+
asserts: func(resp *persistence.UpdateWorkflowExecutionResponse, err error) {
529+
s.Equal(assert.AnError, err)
530+
s.NoError(s.context.closedError())
531+
},
532+
},
533+
{
534+
name: "Other error - update shard failed",
535+
err: assert.AnError,
536+
setup: func() {
537+
s.mockShardManager.On("UpdateShard", mock.Anything, mock.Anything).Return(assert.AnError)
538+
},
539+
asserts: func(resp *persistence.UpdateWorkflowExecutionResponse, err error) {
540+
s.Equal(assert.AnError, err)
541+
s.ErrorContains(s.context.closedError(), "shard closed")
542+
},
543+
},
544+
{
545+
name: "Domain lookup failed",
546+
domainLookupErr: assert.AnError,
547+
asserts: func(resp *persistence.UpdateWorkflowExecutionResponse, err error) {
548+
s.ErrorIs(err, assert.AnError)
549+
},
550+
},
551+
}
552+
553+
for _, tc := range cases {
554+
s.Run(tc.name, func() {
555+
// Need setup the suite manually, since we are in a subtest
556+
s.SetupTest()
557+
ctx := context.Background()
558+
request := &persistence.UpdateWorkflowExecutionRequest{
559+
RangeID: 123,
560+
Mode: persistence.UpdateWorkflowModeUpdateCurrent,
561+
UpdateWorkflowMutation: persistence.WorkflowMutation{
562+
ExecutionInfo: &persistence.WorkflowExecutionInfo{
563+
DomainID: testDomainID,
564+
WorkflowID: testWorkflowID,
565+
},
566+
},
567+
NewWorkflowSnapshot: &persistence.WorkflowSnapshot{},
568+
DomainName: testDomain,
569+
}
570+
571+
domainCacheEntry := cache.NewLocalDomainCacheEntryForTest(
572+
&persistence.DomainInfo{ID: testDomainID},
573+
&persistence.DomainConfig{Retention: 7},
574+
testCluster,
575+
)
576+
s.mockResource.DomainCache.EXPECT().GetDomainByID(testDomainID).Return(domainCacheEntry, tc.domainLookupErr)
577+
if tc.setup != nil {
578+
tc.setup()
579+
}
580+
581+
s.mockResource.ExecutionMgr.On("UpdateWorkflowExecution", ctx, mock.Anything).Once().Return(tc.response, tc.err)
582+
583+
resp, err := s.context.UpdateWorkflowExecution(ctx, request)
584+
tc.asserts(resp, err)
585+
})
586+
}
587+
}
588+
489589
func (s *contextTestSuite) TestValidateAndUpdateFailoverMarkers() {
490590
domainFailoverVersion := 100
491591
domainCacheEntryInactiveCluster := cache.NewGlobalDomainCacheEntryForTest(

0 commit comments

Comments
 (0)