Skip to content

Commit aa18e1d

Browse files
authored
Add unit tests for GetVersion (#1389)
* Add unit tests for GetVersion
1 parent 17b9b1a commit aa18e1d

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
@@ -720,6 +720,49 @@ func TestSideEffect(t *testing.T) {
720720
})
721721
}
722722

723+
func TestGetVersion_validation(t *testing.T) {
724+
t.Run("version < minSupported", func(t *testing.T) {
725+
assert.PanicsWithValue(t, `Workflow code removed support of version 1. for "test" changeID. The oldest supported version is 2`, func() {
726+
validateVersion("test", 1, 2, 3)
727+
})
728+
})
729+
t.Run("version > maxSupported", func(t *testing.T) {
730+
assert.PanicsWithValue(t, `Workflow code is too old to support version 3 for "test" changeID. The maximum supported version is 2`, func() {
731+
validateVersion("test", 3, 1, 2)
732+
})
733+
})
734+
t.Run("success", func(t *testing.T) {
735+
validateVersion("test", 2, 1, 3)
736+
})
737+
}
738+
739+
func TestGetVersion(t *testing.T) {
740+
t.Run("version exists", func(t *testing.T) {
741+
weh := testWorkflowExecutionEventHandler(t, newRegistry())
742+
weh.changeVersions = map[string]Version{
743+
"test": 2,
744+
}
745+
res := weh.GetVersion("test", 1, 3)
746+
assert.Equal(t, Version(2), res)
747+
})
748+
t.Run("version doesn't exist in replay", func(t *testing.T) {
749+
weh := testWorkflowExecutionEventHandler(t, newRegistry())
750+
weh.isReplay = true
751+
res := weh.GetVersion("test", DefaultVersion, 3)
752+
assert.Equal(t, DefaultVersion, res)
753+
require.Contains(t, weh.changeVersions, "test")
754+
assert.Equal(t, DefaultVersion, weh.changeVersions["test"])
755+
})
756+
t.Run("version doesn't exist without replay", func(t *testing.T) {
757+
weh := testWorkflowExecutionEventHandler(t, newRegistry())
758+
res := weh.GetVersion("test", DefaultVersion, 3)
759+
assert.Equal(t, Version(3), res)
760+
require.Contains(t, weh.changeVersions, "test")
761+
assert.Equal(t, Version(3), weh.changeVersions["test"])
762+
assert.Equal(t, []byte(`["test-3"]`), weh.workflowInfo.SearchAttributes.IndexedFields[CadenceChangeVersion], "ensure search attributes are updated")
763+
})
764+
}
765+
723766
func testWorkflowExecutionEventHandler(t *testing.T, registry *registry) *workflowExecutionEventHandlerImpl {
724767
return newWorkflowExecutionEventHandler(
725768
testWorkflowInfo,

0 commit comments

Comments
 (0)