Search in sources :

Example 1 with WorkflowNode

use of org.flyte.api.v1.WorkflowNode in project flytekit-java by flyteorg.

the class ProjectClosureTest method testCollectSubWorkflows.

@Test
public void testCollectSubWorkflows() {
    TypedInterface emptyInterface = TypedInterface.builder().inputs(ImmutableMap.of()).outputs(ImmutableMap.of()).build();
    WorkflowMetadata emptyMetadata = WorkflowMetadata.builder().build();
    PartialWorkflowIdentifier rewrittenSubWorkflowRef = PartialWorkflowIdentifier.builder().project("project").name("name").version("version").domain("domain").build();
    WorkflowIdentifier subWorkflowRef = WorkflowIdentifier.builder().project("project").name("name").version("version").domain("domain").build();
    WorkflowIdentifier otherSubWorkflowRef = WorkflowIdentifier.builder().project("project").name("other-name").version("version").domain("domain").build();
    PartialWorkflowIdentifier rewrittenNestedSubWorkflowRef = PartialWorkflowIdentifier.builder().project("project").name("nested").version("version").domain("domain").build();
    WorkflowIdentifier nestedSubWorkflowRef = WorkflowIdentifier.builder().project("project").name("nested").version("version").domain("domain").build();
    PartialWorkflowIdentifier rewrittenNestedOtherSubWorkflowRef = PartialWorkflowIdentifier.builder().project("project").name("nested-other").version("version").domain("domain").build();
    WorkflowIdentifier nestedOtherSubWorkflowRef = WorkflowIdentifier.builder().project("project").name("nested-other").version("version").domain("domain").build();
    WorkflowNode workflowNode = WorkflowNode.builder().reference(WorkflowNode.Reference.ofSubWorkflowRef(rewrittenSubWorkflowRef)).build();
    WorkflowNode nestedWorkflowNode = WorkflowNode.builder().reference(WorkflowNode.Reference.ofSubWorkflowRef(rewrittenNestedSubWorkflowRef)).build();
    WorkflowNode nestedOtherWorkflowNode = WorkflowNode.builder().reference(WorkflowNode.Reference.ofSubWorkflowRef(rewrittenNestedOtherSubWorkflowRef)).build();
    WorkflowTemplate emptyWorkflowTemplate = WorkflowTemplate.builder().interface_(emptyInterface).metadata(emptyMetadata).nodes(ImmutableList.of()).outputs(ImmutableList.of()).build();
    WorkflowTemplate nestedWorkflowTemplate = WorkflowTemplate.builder().interface_(emptyInterface).metadata(emptyMetadata).nodes(ImmutableList.of(Node.builder().id("nested-node").inputs(ImmutableList.of()).upstreamNodeIds(ImmutableList.of()).workflowNode(nestedOtherWorkflowNode).build())).outputs(ImmutableList.of()).build();
    Operand opTrue = Operand.ofPrimitive(Primitive.ofBooleanValue(true));
    BooleanExpression exprTrue = BooleanExpression.ofComparison(ComparisonExpression.builder().leftValue(opTrue).rightValue(opTrue).operator(ComparisonExpression.Operator.EQ).build());
    List<Node> nodes = ImmutableList.of(Node.builder().id("node-1").inputs(ImmutableList.of()).upstreamNodeIds(ImmutableList.of()).workflowNode(workflowNode).build(), // Same sub-workflow
    Node.builder().id("node-2").inputs(ImmutableList.of()).upstreamNodeIds(ImmutableList.of()).workflowNode(workflowNode).build(), // Sub-workflow which has a nested sub-workflow in branch (nestedOtherWorkflowNode)
    Node.builder().id("node-3").inputs(ImmutableList.of()).upstreamNodeIds(ImmutableList.of()).branchNode(BranchNode.builder().ifElse(IfElseBlock.builder().case_(IfBlock.builder().condition(exprTrue).thenNode(Node.builder().id("node-4").inputs(ImmutableList.of()).upstreamNodeIds(ImmutableList.of()).workflowNode(nestedWorkflowNode).build()).build()).other(ImmutableList.of()).build()).build()).build());
    // nestedOtherWorkflowNode is not in the previous list because
    // that node belongs to the template of a sub-workflow
    Map<WorkflowIdentifier, WorkflowTemplate> allWorkflows = ImmutableMap.of(subWorkflowRef, emptyWorkflowTemplate, otherSubWorkflowRef, emptyWorkflowTemplate, nestedSubWorkflowRef, nestedWorkflowTemplate, nestedOtherSubWorkflowRef, emptyWorkflowTemplate);
    Map<WorkflowIdentifier, WorkflowTemplate> collectedSubWorkflows = ProjectClosure.collectSubWorkflows(nodes, allWorkflows);
    assertThat(collectedSubWorkflows, equalTo(ImmutableMap.of(subWorkflowRef, emptyWorkflowTemplate, nestedSubWorkflowRef, nestedWorkflowTemplate, nestedOtherSubWorkflowRef, emptyWorkflowTemplate)));
}
Also used : TypedInterface(org.flyte.api.v1.TypedInterface) WorkflowMetadata(org.flyte.api.v1.WorkflowMetadata) PartialWorkflowIdentifier(org.flyte.api.v1.PartialWorkflowIdentifier) WorkflowIdentifier(org.flyte.api.v1.WorkflowIdentifier) PartialWorkflowIdentifier(org.flyte.api.v1.PartialWorkflowIdentifier) BooleanExpression(org.flyte.api.v1.BooleanExpression) WorkflowTemplate(org.flyte.api.v1.WorkflowTemplate) Operand(org.flyte.api.v1.Operand) BranchNode(org.flyte.api.v1.BranchNode) WorkflowNode(org.flyte.api.v1.WorkflowNode) Node(org.flyte.api.v1.Node) WorkflowNode(org.flyte.api.v1.WorkflowNode) Test(org.junit.jupiter.api.Test)

Example 2 with WorkflowNode

use of org.flyte.api.v1.WorkflowNode in project flytekit-java by flyteorg.

the class ProtoUtilTest method shouldSerializeWorkflowNodeForSubWorkflowRef.

@Test
void shouldSerializeWorkflowNodeForSubWorkflowRef() {
    PartialWorkflowIdentifier subWorkflowRef = PartialWorkflowIdentifier.builder().domain("domain").project("project").name("name").version("version").build();
    WorkflowNode workflowNode = WorkflowNode.builder().reference(WorkflowNode.Reference.ofSubWorkflowRef(subWorkflowRef)).build();
    assertThat(ProtoUtil.serialize(workflowNode), equalTo(Workflow.WorkflowNode.newBuilder().setSubWorkflowRef(IdentifierOuterClass.Identifier.newBuilder().setResourceType(WORKFLOW).setDomain("domain").setProject("project").setName("name").setVersion("version").build()).build()));
}
Also used : PartialWorkflowIdentifier(org.flyte.api.v1.PartialWorkflowIdentifier) WorkflowNode(org.flyte.api.v1.WorkflowNode) Test(org.junit.jupiter.api.Test) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest)

Example 3 with WorkflowNode

use of org.flyte.api.v1.WorkflowNode in project flytekit-java by flyteorg.

the class ProtoUtilTest method shouldSerializeWorkflowNodeForLaunchPlanRef.

@Test
void shouldSerializeWorkflowNodeForLaunchPlanRef() {
    PartialLaunchPlanIdentifier launchPlanRef = PartialLaunchPlanIdentifier.builder().domain("domain").project("project").name("name").version("version").build();
    WorkflowNode workflowNode = WorkflowNode.builder().reference(WorkflowNode.Reference.ofLaunchPlanRef(launchPlanRef)).build();
    assertThat(ProtoUtil.serialize(workflowNode), equalTo(Workflow.WorkflowNode.newBuilder().setLaunchplanRef(IdentifierOuterClass.Identifier.newBuilder().setResourceType(LAUNCH_PLAN).setDomain("domain").setProject("project").setName("name").setVersion("version").build()).build()));
}
Also used : PartialLaunchPlanIdentifier(org.flyte.api.v1.PartialLaunchPlanIdentifier) WorkflowNode(org.flyte.api.v1.WorkflowNode) Test(org.junit.jupiter.api.Test) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest)

Example 4 with WorkflowNode

use of org.flyte.api.v1.WorkflowNode in project flytekit-java by flyteorg.

the class IdentifierRewriteTest method shouldRewriteWorkflowNodeForLaunchPlanRef.

@Test
void shouldRewriteWorkflowNodeForLaunchPlanRef() {
    PartialLaunchPlanIdentifier identifier = PartialLaunchPlanIdentifier.builder().name("name").build();
    PartialLaunchPlanIdentifier rewrittenIdentifier = PartialLaunchPlanIdentifier.builder().name("name").domain("rewritten-domain").version("rewritten-version").project("rewritten-project").build();
    WorkflowNode workflowNode = WorkflowNode.builder().reference(WorkflowNode.Reference.ofLaunchPlanRef(identifier)).build();
    assertThat(rewriter.visitor().visitWorkflowNode(workflowNode), equalTo(WorkflowNode.builder().reference(WorkflowNode.Reference.ofLaunchPlanRef(rewrittenIdentifier)).build()));
}
Also used : PartialLaunchPlanIdentifier(org.flyte.api.v1.PartialLaunchPlanIdentifier) WorkflowNode(org.flyte.api.v1.WorkflowNode) Test(org.junit.jupiter.api.Test)

Example 5 with WorkflowNode

use of org.flyte.api.v1.WorkflowNode in project flytekit-java by flyteorg.

the class IdentifierRewriteTest method shouldRewriteWorkflowNodeForSubWorkflowRef.

@Test
void shouldRewriteWorkflowNodeForSubWorkflowRef() {
    PartialWorkflowIdentifier identifier = PartialWorkflowIdentifier.builder().name("name").build();
    PartialWorkflowIdentifier rewrittenIdentifier = PartialWorkflowIdentifier.builder().name("name").domain("rewritten-domain").version("rewritten-version").project("rewritten-project").build();
    WorkflowNode workflowNode = WorkflowNode.builder().reference(WorkflowNode.Reference.ofSubWorkflowRef(identifier)).build();
    assertThat(rewriter.visitor().visitWorkflowNode(workflowNode), equalTo(WorkflowNode.builder().reference(WorkflowNode.Reference.ofSubWorkflowRef(rewrittenIdentifier)).build()));
}
Also used : PartialWorkflowIdentifier(org.flyte.api.v1.PartialWorkflowIdentifier) WorkflowNode(org.flyte.api.v1.WorkflowNode) Test(org.junit.jupiter.api.Test)

Aggregations

WorkflowNode (org.flyte.api.v1.WorkflowNode)8 Test (org.junit.jupiter.api.Test)7 PartialWorkflowIdentifier (org.flyte.api.v1.PartialWorkflowIdentifier)5 Node (org.flyte.api.v1.Node)3 WorkflowTemplate (org.flyte.api.v1.WorkflowTemplate)3 PartialLaunchPlanIdentifier (org.flyte.api.v1.PartialLaunchPlanIdentifier)2 TypedInterface (org.flyte.api.v1.TypedInterface)2 WorkflowIdentifier (org.flyte.api.v1.WorkflowIdentifier)2 WorkflowMetadata (org.flyte.api.v1.WorkflowMetadata)2 ParameterizedTest (org.junit.jupiter.params.ParameterizedTest)2 ArrayDeque (java.util.ArrayDeque)1 ArrayList (java.util.ArrayList)1 Collections.emptyList (java.util.Collections.emptyList)1 Collections.singletonList (java.util.Collections.singletonList)1 Comparator (java.util.Comparator)1 Deque (java.util.Deque)1 HashMap (java.util.HashMap)1 HashSet (java.util.HashSet)1 List (java.util.List)1 Map (java.util.Map)1