1831
}
1832
1834
>
s.CreateWorkflow(
1835
>
rand.Int63(),
1836
>
enumsspb.WORKFLOW_EXECUTION_STATE_CREATED,
1837
>
enumspb.WORKFLOW_EXECUTION_STATUS_RUNNING,
1838
>
rand.Int63(),
1839
>
)
1840
>
baseRunID := uuid.New().String()
1841
>
baseBranchToken := RandomBranchToken(s.NamespaceID, s.WorkflowID, baseRunID, s.HistoryBranchUtil)
1842
>
baseSnapshot, baseEvents := RandomSnapshot(
1843
>
s.T(),
1844
>
s.NamespaceID,
1845
>
s.WorkflowID,
1846
>
baseRunID,
1847
>
common.FirstEventID,
1848
>
rand.Int63(),
1849
>
enumsspb.WORKFLOW_EXECUTION_STATE_ZOMBIE,
1850
>
enumspb.WORKFLOW_EXECUTION_STATUS_RUNNING,
1851
>
rand.Int63(),
1852
>
baseBranchToken,
1853
>
)
1854
>
_, err := s.ExecutionManager.CreateWorkflowExecution(s.Ctx, &p.CreateWorkflowExecutionRequest{
1855
>
ShardID: s.ShardID,
1856
>
RangeID: s.RangeID,
1857
>
Mode: p.CreateWorkflowModeBypassCurrent,
1858
>
1859
>
PreviousRunID: "",
1860
>
PreviousLastWriteVersion: 0,
1861
>
1862
>
ArchetypeID: chasm.WorkflowArchetypeID,
1863
>
1864
>
NewWorkflowSnapshot: *baseSnapshot,
1865
>
NewWorkflowEvents: baseEvents,
1866
>
})
1867
>
s.NoError(err)
1868
>
1869
>
resetSnapshot, resetEvents := RandomSnapshot(
1870
>
s.T(),
1871
>
s.NamespaceID,
1872
>
s.WorkflowID,
1873
>
baseRunID,
1874
>
baseSnapshot.NextEventID,
1875
>
rand.Int63(),
1876
>
enumsspb.WORKFLOW_EXECUTION_STATE_ZOMBIE,
1877
>
enumspb.WORKFLOW_EXECUTION_STATUS_RUNNING,
1878
>
baseSnapshot.DBRecordVersion+1,
1879
>
baseBranchToken,
1880
>
)
1881
>
_, err = s.ExecutionManager.ConflictResolveWorkflowExecution(s.Ctx, &p.ConflictResolveWorkflowExecutionRequest{
1882
>
ShardID: s.ShardID,
1883
>
RangeID: s.RangeID,
1884
>
Mode: p.ConflictResolveWorkflowModeBypassCurrent,
1885
>
1886
>
ArchetypeID: chasm.WorkflowArchetypeID,
1887
>
1888
>
ResetWorkflowSnapshot: *resetSnapshot,
1889
>
ResetWorkflowEvents: resetEvents,
1890
>
1891
>
NewWorkflowSnapshot: nil,
1892
>
NewWorkflowEvents: nil,
1893
>
1894
>
CurrentWorkflowMutation: nil,
1895
>
CurrentWorkflowEvents: nil,
1896
>
})
1897
>
s.NoError(err)
1898
>
1899
>
s.AssertMSEqualWithDB(chasm.WorkflowArchetypeID, resetSnapshot)
1900
>
s.AssertHEEqualWithDB(baseBranchToken, baseEvents, resetEvents)
1901
>
}
1902
1903
func (s *ExecutionMutableStateSuite) TestConflictResolve_Zombie_CurrentConflict() {