Skip to content

Commit 7a84384

Browse files
committed
Add unit tests for GetVersion
1 parent 6774654 commit 7a84384

File tree

2 files changed

+47
-1
lines changed

2 files changed

+47
-1
lines changed

internal/internal_event_handlers.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -623,7 +623,10 @@ func (wc *workflowEnvironmentImpl) GetVersion(changeID string, minSupported, max
623623
// Also upsert search attributes to enable ability to search by changeVersion.
624624
version = maxSupported
625625
wc.decisionsHelper.recordVersionMarker(changeID, version, wc.GetDataConverter())
626-
wc.UpsertSearchAttributes(createSearchAttributesForChangeVersion(changeID, version, wc.changeVersions))
626+
err := wc.UpsertSearchAttributes(createSearchAttributesForChangeVersion(changeID, version, wc.changeVersions))
627+
if err != nil {
628+
wc.logger.Warn("UpsertSearchAttributes failed", zap.Error(err))
629+
}
627630
}
628631

629632
validateVersion(changeID, version, minSupported, maxSupported)

internal/internal_event_handlers_test.go

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -695,6 +695,49 @@ func TestWorkflowExecutionEventHandler_ProcessEvent_no_error_events(t *testing.T
695695
}
696696
}
697697

698+
func TestGetVersion_validation(t *testing.T) {
699+
t.Run("version < minSupported", func(t *testing.T) {
700+
assert.PanicsWithValue(t, `Workflow code removed support of version 1. for \"test\" changeID. The oldest supported version is 2`, func() {
701+
validateVersion("test", 1, 2, 3)
702+
})
703+
})
704+
t.Run("version > maxSupported", func(t *testing.T) {
705+
assert.PanicsWithValue(t, `Workflow code is too old to support version 3 for \"test\" changeID. The maximum supported version is 2`, func() {
706+
validateVersion("test", 3, 1, 2)
707+
})
708+
})
709+
t.Run("success", func(t *testing.T) {
710+
validateVersion("test", 2, 1, 3)
711+
})
712+
}
713+
714+
func TestGetVersion(t *testing.T) {
715+
t.Run("version exists", func(t *testing.T) {
716+
weh := testWorkflowExecutionEventHandler(t, newRegistry())
717+
weh.changeVersions = map[string]Version{
718+
"test": 2,
719+
}
720+
res := weh.GetVersion("test", 1, 3)
721+
assert.Equal(t, Version(2), res)
722+
})
723+
t.Run("version doesn't exist in replay", func(t *testing.T) {
724+
weh := testWorkflowExecutionEventHandler(t, newRegistry())
725+
weh.isReplay = true
726+
res := weh.GetVersion("test", DefaultVersion, 3)
727+
assert.Equal(t, DefaultVersion, res)
728+
require.Contains(t, weh.changeVersions, "test")
729+
assert.Equal(t, DefaultVersion, weh.changeVersions["test"])
730+
})
731+
t.Run("version doesn't exist without replay", func(t *testing.T) {
732+
weh := testWorkflowExecutionEventHandler(t, newRegistry())
733+
res := weh.GetVersion("test", DefaultVersion, 3)
734+
assert.Equal(t, Version(3), res)
735+
require.Contains(t, weh.changeVersions, "test")
736+
assert.Equal(t, Version(3), weh.changeVersions["test"])
737+
assert.Equal(t, []byte(`["test-3"]`), weh.workflowInfo.SearchAttributes.IndexedFields[CadenceChangeVersion], "ensure search attributes are updated")
738+
})
739+
}
740+
698741
func testWorkflowExecutionEventHandler(t *testing.T, registry *registry) *workflowExecutionEventHandlerImpl {
699742
return newWorkflowExecutionEventHandler(
700743
testWorkflowInfo,

0 commit comments

Comments
 (0)