Check that nested process has the same i/o ports as the child workflow
Project: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/commit/0ca7ac29 Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/tree/0ca7ac29 Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/diff/0ca7ac29 Branch: refs/heads/master Commit: 0ca7ac29164e15f2a05aed6af1370b184fd25fd6 Parents: 2530da3 Author: Majdi Haouech <m.haou...@criteo.com> Authored: Wed Aug 8 12:08:54 2018 +0200 Committer: Majdi Haouech <m.haou...@criteo.com> Committed: Wed Aug 8 12:13:48 2018 +0200 ---------------------------------------------------------------------- .../taverna/scufl2/api/common/Scufl2Tools.java | 8 ++-- .../scufl2/api/common/TestScufl2Tools.java | 40 +++++++++++++++++--- 2 files changed, 39 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/0ca7ac29/taverna-scufl2-api/src/main/java/org/apache/taverna/scufl2/api/common/Scufl2Tools.java ---------------------------------------------------------------------- diff --git a/taverna-scufl2-api/src/main/java/org/apache/taverna/scufl2/api/common/Scufl2Tools.java b/taverna-scufl2-api/src/main/java/org/apache/taverna/scufl2/api/common/Scufl2Tools.java index bb5bcbe..e3b5d6e 100644 --- a/taverna-scufl2-api/src/main/java/org/apache/taverna/scufl2/api/common/Scufl2Tools.java +++ b/taverna-scufl2-api/src/main/java/org/apache/taverna/scufl2/api/common/Scufl2Tools.java @@ -764,10 +764,10 @@ public class Scufl2Tools { if(nestedWorkflowForProcessor(processor, profile) != null) { throw new IllegalStateException("Processor " + processor + " already has a nested workflow"); } - List<ProcessorBinding> processorBindings = processorBindingsForProcessor(processor, profile); - if(processorBindings.size() != 0) { - throw new IllegalStateException("Processor " + processor + "already has a binding") - } + List<ProcessorBinding> processorBindings = processorBindingsForProcessor(processor, profile); + if(processorBindings.size() != 0) { + throw new IllegalStateException("Processor " + processor + "already has a binding"); + } Activity activity = createActivityFromProcessor(processor, profile); activity.setType(NESTED_WORKFLOW); http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/0ca7ac29/taverna-scufl2-api/src/test/java/org/apache/taverna/scufl2/api/common/TestScufl2Tools.java ---------------------------------------------------------------------- diff --git a/taverna-scufl2-api/src/test/java/org/apache/taverna/scufl2/api/common/TestScufl2Tools.java b/taverna-scufl2-api/src/test/java/org/apache/taverna/scufl2/api/common/TestScufl2Tools.java index f336af0..d397168 100644 --- a/taverna-scufl2-api/src/test/java/org/apache/taverna/scufl2/api/common/TestScufl2Tools.java +++ b/taverna-scufl2-api/src/test/java/org/apache/taverna/scufl2/api/common/TestScufl2Tools.java @@ -31,7 +31,10 @@ import java.util.Arrays; import java.util.Collections; import java.util.HashSet; import java.util.Set; +import java.util.List; +import java.util.ArrayList; +import java.util.stream.Collectors; import org.apache.taverna.scufl2.api.ExampleWorkflow; import org.apache.taverna.scufl2.api.activity.Activity; import org.apache.taverna.scufl2.api.common.Visitor.VisitorWithPath; @@ -42,8 +45,10 @@ import org.apache.taverna.scufl2.api.core.Processor; import org.apache.taverna.scufl2.api.core.Workflow; import org.apache.taverna.scufl2.api.port.InputActivityPort; import org.apache.taverna.scufl2.api.port.InputProcessorPort; +import org.apache.taverna.scufl2.api.port.InputWorkflowPort; import org.apache.taverna.scufl2.api.port.OutputActivityPort; import org.apache.taverna.scufl2.api.port.OutputProcessorPort; +import org.apache.taverna.scufl2.api.port.OutputWorkflowPort; import org.apache.taverna.scufl2.api.profiles.ProcessorBinding; import org.apache.taverna.scufl2.api.profiles.ProcessorInputPortBinding; import org.apache.taverna.scufl2.api.profiles.ProcessorOutputPortBinding; @@ -51,7 +56,6 @@ import org.apache.taverna.scufl2.api.profiles.ProcessorPortBinding; import org.apache.taverna.scufl2.api.profiles.Profile; import org.junit.Before; import org.junit.Test; -import sun.security.krb5.Config; public class TestScufl2Tools extends ExampleWorkflow { @@ -84,11 +88,37 @@ public class TestScufl2Tools extends ExampleWorkflow { ProcessorBinding binding = processor.getBinding(profile); Activity activity = binding.getBoundActivity(); - Configuration configuration = activity.getConfiguration(); + Configuration configuration = activity.getConfiguration(); - assertEquals(activity.getType(), Scufl2Tools.NESTED_WORKFLOW); - String nestedWorkflowName = configuration.getJson().get("nestedWorkflow").asText(); - assertEquals(nestedWorkflowName, child.getName()); + assertEquals(activity.getType(), Scufl2Tools.NESTED_WORKFLOW); + String nestedWorkflowName = configuration.getJson().get("nestedWorkflow").asText(); + assertEquals(nestedWorkflowName, child.getName()); + } + + @Test + public void testNestedProcessHasCorrectStructure() { + Workflow child = new Workflow(); + child.setName("childWorkflow"); + child.setParent(workflowBundle); + + Workflow mainWorkflow = workflowBundle.getMainWorkflow(); + Processor processor = new Processor(); + processor.setParent(mainWorkflow); + + Profile profile = workflowBundle.getMainProfile(); + + Scufl2Tools tools = new Scufl2Tools(); + tools.setAsNestedWorkflow(processor, child, profile); + + Set<String> processorInputNames = processor.getInputPorts().stream().map(InputProcessorPort::getName).collect(Collectors.toSet()); + Set<String> workflowInputNames = child.getInputPorts().stream().map(InputWorkflowPort::getName).collect(Collectors.toSet()); + + assertEquals(workflowInputNames, processorInputNames); + + Set<String> processorOutputNames = processor.getOutputPorts().stream().map(OutputProcessorPort::getName).collect(Collectors.toSet()); + Set<String> workflowOutputNames = child.getOutputPorts().stream().map(OutputWorkflowPort::getName).collect(Collectors.toSet()); + + assertEquals(workflowOutputNames, processorOutputNames); } @Test