Skip to content

Commit 7bd5a1a

Browse files
grussorussomatnar
andcommitted
New UnaryTask and ConditionalTask interfaces
Co-authored-by: Matteo Nardelli <matnar@gmail.com>
1 parent ed911bd commit 7bd5a1a

14 files changed

Lines changed: 192 additions & 125 deletions

internal/test/util.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,7 @@ func IsWindows() bool {
311311
func CreateSequenceWorkflow(funcs ...*function.Function) (*workflow.Workflow, error) {
312312
builder := workflow.NewBuilder()
313313
for _, f := range funcs {
314-
builder = builder.AddSimpleNode(f)
314+
builder = builder.AddFunctionTask(f)
315315
}
316316
return builder.Build()
317317
}

internal/test/workflow_integration_test.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -199,10 +199,10 @@ func TestInvokeFC_DifferentFunctions(t *testing.T) {
199199
u.AssertNil(t, errF2)
200200

201201
wflow, err := workflow.NewBuilder().
202-
AddSimpleNode(fDouble).
203-
AddSimpleNode(fInc).
204-
AddSimpleNode(fDouble).
205-
AddSimpleNode(fInc).
202+
AddFunctionTask(fDouble).
203+
AddFunctionTask(fInc).
204+
AddFunctionTask(fDouble).
205+
AddFunctionTask(fInc).
206206
Build()
207207
wflow.Name = workflowName
208208

@@ -248,7 +248,7 @@ func TestInvokeFC_Concurrent(t *testing.T) {
248248
u.AssertNil(t, err)
249249
builder := workflow.NewBuilder()
250250
for i := 0; i < length; i++ {
251-
builder.AddSimpleNodeWithId(f, fmt.Sprintf("simple %d", i))
251+
builder.AddFunctionTaskWithId(f, fmt.Sprintf("simple %d", i))
252252
}
253253
wflow, err := builder.Build()
254254
wflow.Name = workflowName
@@ -334,7 +334,7 @@ func TestInvokeSieveChoice(t *testing.T) {
334334
u.AssertNil(t, errDp)
335335

336336
wflow, err := workflow.NewBuilder().
337-
AddSimpleNode(isPrimePy).
337+
AddFunctionTask(isPrimePy).
338338
AddChoiceNode(
339339
workflow.NewEqParamCondition(workflow.NewParam("IsPrime"), workflow.NewValue(true)),
340340
workflow.NewEqParamCondition(workflow.NewParam("IsPrime"), workflow.NewValue(false)),
@@ -465,9 +465,9 @@ func TestInvokeWorkflowPassDoNothing(t *testing.T) {
465465
AddOutput("result", function.Int{}).Build())
466466
u.AssertNil(t, errDp)
467467
wflow, err := workflow.NewBuilder().
468-
AddSimpleNode(incPy).
468+
AddFunctionTask(incPy).
469469
AddPassNode(""). // this should not do nothing
470-
AddSimpleNode(incPy).
470+
AddFunctionTask(incPy).
471471
Build()
472472
wflow.Name = "pass_do_nothing"
473473
u.AssertNil(t, err)

internal/test/workflow_test.go

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -71,18 +71,20 @@ func TestSimpleWorkflow(t *testing.T) {
7171
var prevNode workflow.Task = wflow.Start
7272
var currentNode workflow.Task
7373
for !end {
74-
switch prevNode.(type) {
74+
switch pn := prevNode.(type) {
7575
case *workflow.StartTask:
76-
nextNodeId := prevNode.GetNext()
76+
nextNodeId := pn.GetNext()
7777
currentNode, _ = wflow.Find(nextNodeId)
78-
u.AssertEquals(t, prevNode.GetNext(), currentNode.GetId())
78+
u.AssertEquals(t, pn.GetNext(), currentNode.GetId())
7979
case *workflow.EndTask:
8080
end = true
81-
default: // currentNode = simple node
82-
nextNodeId := prevNode.GetNext()
81+
case workflow.UnaryTask:
82+
nextNodeId := pn.GetNext()
8383
currentNode, _ = wflow.Find(nextNodeId)
84-
u.AssertEquals(t, prevNode.GetNext(), currentNode.GetId())
84+
u.AssertEquals(t, pn.GetNext(), currentNode.GetId())
8585
u.AssertTrue(t, prevNode.(*workflow.FunctionTask).Func == f.Name)
86+
default:
87+
t.Fatalf("unknown type %T", pn)
8688
}
8789
prevNode = currentNode
8890
}
@@ -124,11 +126,15 @@ func TestChoiceWorkflow(t *testing.T) {
124126
for _, n := range wflow.Tasks {
125127
switch n.(type) {
126128
case *workflow.ChoiceTask:
127-
u.AssertEquals(t, len(choice.Conditions), len(choice.AlternativeNextTasks))
128-
for _, s := range choice.AlternativeNextTasks {
129+
u.AssertEquals(t, len(choice.Conditions), len(choice.GetAlternatives()))
130+
for _, s := range choice.GetAlternatives() {
129131
simple, foundS := wflow.Find(s)
132+
unary := simple.(*workflow.FunctionTask)
133+
if unary == nil {
134+
t.Fail()
135+
}
130136
u.AssertTrue(t, foundS)
131-
u.AssertEquals(t, simple.GetNext(), wflow.End.GetId())
137+
u.AssertEquals(t, unary.GetNext(), wflow.End.GetId())
132138
}
133139
case *workflow.FunctionTask:
134140
u.AssertTrue(t, n.(*workflow.FunctionTask).Func == f.Name)
@@ -204,7 +210,7 @@ func TestWorkflowBuilder(t *testing.T) {
204210
f, err := initializeExamplePyFunction()
205211
u.AssertNil(t, err)
206212
wflow, err := workflow.NewBuilder().
207-
AddSimpleNode(f).
213+
AddFunctionTask(f).
208214
AddChoiceNode(workflow.NewEqCondition(1, 4), workflow.NewDiffCondition(1, 4)).
209215
NextBranch(CreateSequenceWorkflow(f)).
210216
NextBranch(CreateSequenceWorkflow(f)).
@@ -241,23 +247,22 @@ func TestVisit(t *testing.T) {
241247
f, err := initializeExamplePyFunction()
242248
u.AssertNil(t, err)
243249
complexWorkflow, err := workflow.NewBuilder().
244-
AddSimpleNode(f).
250+
AddFunctionTask(f).
245251
AddChoiceNode(workflow.NewEqCondition(1, 4), workflow.NewDiffCondition(1, 4)).
246252
NextBranch(CreateSequenceWorkflow(f)).
247253
NextBranch(CreateSequenceWorkflow(f, f)).
248254
EndChoiceAndBuild()
249255
u.AssertNil(t, err)
250256

251-
startNext, _ := complexWorkflow.Find(complexWorkflow.Start.GetNext())
252-
253-
choice := startNext.GetNext()
254-
255257
visitedNodes := workflow.Visit(complexWorkflow, complexWorkflow.Start.Id, false)
256258
u.AssertEquals(t, len(complexWorkflow.Tasks), len(visitedNodes))
257259

258260
visitedNodes = workflow.Visit(complexWorkflow, complexWorkflow.Start.Id, true)
259261
u.AssertEquals(t, len(complexWorkflow.Tasks)-1, len(visitedNodes))
260262

263+
startNext, _ := complexWorkflow.Find(complexWorkflow.Start.GetNext())
264+
choice := startNext.(workflow.UnaryTask).GetNext()
265+
261266
visitedNodes = workflow.Visit(complexWorkflow, choice, false)
262267
u.AssertEquals(t, 5, len(visitedNodes))
263268

internal/workflow/asl.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ func BuildFromTaskState(builder *Builder, t *asl.TaskState, name string) (*Build
103103
if !found {
104104
return nil, fmt.Errorf("non existing function in workflow: %s", t.Resource)
105105
}
106-
builder = builder.AddSimpleNodeWithId(f, name)
106+
builder = builder.AddFunctionTaskWithId(f, name)
107107
return builder, nil
108108
}
109109

0 commit comments

Comments
 (0)