feat: trace task sources to fixed workflow activations and rounds
This commit is contained in:
@@ -39,8 +39,43 @@ func TestTaskSourceValidationAndPrecision(t *testing.T) {
|
||||
t.Fatal("version precision lost")
|
||||
}
|
||||
}
|
||||
workflow := TaskWorkflowSource{WorkflowID: parent, DefinitionID: parent, DefinitionVersionID: occurrence, Version: "v1", StepID: parent, StepKey: "query", StepKind: "TASK", ActivationID: occurrence, ActivationSequence: 1}
|
||||
for _, kind := range []string{"TASK", "POLL"} {
|
||||
for _, sequence := range []uint32{1, 2} {
|
||||
w := workflow
|
||||
w.StepKind, w.ActivationSequence = kind, sequence
|
||||
if sequence == 2 {
|
||||
w.RetryOf = &p
|
||||
}
|
||||
if kind == "POLL" {
|
||||
w.PollRound, w.PollRoundID = 2, &p
|
||||
}
|
||||
reply.Store(TaskSource{TaskID: task, Kind: "WORKFLOW", Workflow: &w})
|
||||
if _, err := client.GetTaskSource(context.Background(), task); err != nil {
|
||||
t.Fatal("valid workflow source", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
self := task
|
||||
invalid := []TaskSource{{TaskID: parent, Kind: "DIRECT"}, {TaskID: task, Kind: "unknown"}, {TaskID: task, Kind: "DIRECT", RetryOf: &p}, {TaskID: task, Kind: "MANUAL_RETRY"}, {TaskID: task, Kind: "MANUAL_RETRY", RetryOf: &self}, {TaskID: task, Kind: "SCHEDULE"}}
|
||||
invalid = append(invalid, TaskSource{TaskID: task, Kind: "WORKFLOW"}, TaskSource{TaskID: task, Kind: "DIRECT", Workflow: &workflow}, TaskSource{TaskID: task, Kind: "WORKFLOW", Workflow: &workflow, RetryOf: &p})
|
||||
for _, change := range []func(*TaskWorkflowSource){
|
||||
func(w *TaskWorkflowSource) { w.WorkflowID = "invalid" },
|
||||
func(w *TaskWorkflowSource) { w.Version = "../version" },
|
||||
func(w *TaskWorkflowSource) { w.StepKey = "$root" },
|
||||
func(w *TaskWorkflowSource) { w.StepKind = "SIGNAL" },
|
||||
func(w *TaskWorkflowSource) { w.ActivationSequence = 0 },
|
||||
func(w *TaskWorkflowSource) { w.ActivationSequence = 2 },
|
||||
func(w *TaskWorkflowSource) { w.RetryOf = &p },
|
||||
func(w *TaskWorkflowSource) { w.ActivationSequence = 2; w.RetryOf = &self },
|
||||
func(w *TaskWorkflowSource) { w.PollRound = 1 },
|
||||
func(w *TaskWorkflowSource) { w.PollRoundID = &p },
|
||||
func(w *TaskWorkflowSource) { w.StepKind = "POLL"; w.PollRound = 1 },
|
||||
} {
|
||||
w := workflow
|
||||
change(&w)
|
||||
invalid = append(invalid, TaskSource{TaskID: task, Kind: "WORKFLOW", Workflow: &w})
|
||||
}
|
||||
for _, change := range []func(*TaskScheduleSource){func(v *TaskScheduleSource) { v.ScheduleVersion = 0 }, func(v *TaskScheduleSource) { v.Decision = "SKIPPED" }, func(v *TaskScheduleSource) { v.Decision = "COALESCED" }, func(v *TaskScheduleSource) { v.CoveredUntil = &until }, func(v *TaskScheduleSource) { v.ScheduledAt = time.Time{} }, func(v *TaskScheduleSource) { v.OccurrenceID = "invalid" }} {
|
||||
v := valid[2]
|
||||
s := *v.Schedule
|
||||
|
||||
Reference in New Issue
Block a user