702
}
703
705
>
s.CreateWorkflow(
706
>
rand.Int63(),
707
>
enumsspb.WORKFLOW_EXECUTION_STATE_CREATED,
708
>
enumspb.WORKFLOW_EXECUTION_STATUS_RUNNING,
709
>
rand.Int63(),
710
>
)
711
>
712
>
zombieRunID := uuid.New().String()
713
>
zombieBranchToken := RandomBranchToken(s.NamespaceID, s.WorkflowID, zombieRunID, s.HistoryBranchUtil)
714
>
zombieSnapshot, zombieEvents1 := RandomSnapshot(
715
>
s.T(),
716
>
s.NamespaceID,
717
>
s.WorkflowID,
718
>
zombieRunID,
719
>
common.FirstEventID,
720
>
rand.Int63(),
721
>
enumsspb.WORKFLOW_EXECUTION_STATE_ZOMBIE,
722
>
enumspb.WORKFLOW_EXECUTION_STATUS_RUNNING,
723
>
rand.Int63(),
724
>
zombieBranchToken,
725
>
)
726
>
_, err := s.ExecutionManager.CreateWorkflowExecution(s.Ctx, &p.CreateWorkflowExecutionRequest{
727
>
ShardID: s.ShardID,
728
>
RangeID: s.RangeID,
729
>
Mode: p.CreateWorkflowModeBypassCurrent,
730
>
731
>
PreviousRunID: "",
732
>
PreviousLastWriteVersion: 0,
733
>
734
>
ArchetypeID: chasm.WorkflowArchetypeID,
735
>
736
>
NewWorkflowSnapshot: *zombieSnapshot,
737
>
NewWorkflowEvents: zombieEvents1,
738
>
})
739
>
s.NoError(err)
740
>
741
>
zombieMutation, zombieEvents2 := RandomMutation(
742
>
s.T(),
743
>
s.NamespaceID,
744
>
s.WorkflowID,
745
>
zombieRunID,
746
>
zombieSnapshot.NextEventID,
747
>
rand.Int63(),
748
>
enumsspb.WORKFLOW_EXECUTION_STATE_ZOMBIE,
749
>
enumspb.WORKFLOW_EXECUTION_STATUS_RUNNING,
750
>
zombieSnapshot.DBRecordVersion+1,
751
>
zombieBranchToken,
752
>
)
753
>
_, err = s.ExecutionManager.UpdateWorkflowExecution(s.Ctx, &p.UpdateWorkflowExecutionRequest{
754
>
ShardID: s.ShardID,
755
>
RangeID: s.RangeID,
756
>
Mode: p.UpdateWorkflowModeBypassCurrent,
757
>
758
>
ArchetypeID: chasm.WorkflowArchetypeID,
759
>
760
>
UpdateWorkflowMutation: *zombieMutation,
761
>
UpdateWorkflowEvents: zombieEvents2,
762
>
763
>
NewWorkflowSnapshot: nil,
764
>
NewWorkflowEvents: nil,
765
>
})
766
>
s.NoError(err)
767
>
768
>
s.AssertMSEqualWithDB(chasm.WorkflowArchetypeID, zombieSnapshot, zombieMutation)
769
>
s.AssertHEEqualWithDB(zombieBranchToken, zombieEvents1, zombieEvents2)
770
>
}
771
772
func (s *ExecutionMutableStateSuite) TestUpdate_Zombie_CurrentConflict() {