You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@taverna.apache.org by st...@apache.org on 2018/08/10 11:58:32 UTC
[1/6] incubator-taverna-language git commit: API: Add a tool to nest
a workflow in a process
Repository: incubator-taverna-language
Updated Branches:
refs/heads/master 9cd4b8781 -> fb5c41a89
API: Add a tool to nest a workflow in a process
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/edb12c6f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/tree/edb12c6f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/diff/edb12c6f
Branch: refs/heads/master
Commit: edb12c6f7715de1ff78999a130b4038efb73cd9d
Parents: a5251d1
Author: Majdi Haouech <m....@criteo.com>
Authored: Wed Jul 18 23:39:21 2018 +0200
Committer: Majdi Haouech <m....@criteo.com>
Committed: Fri Jul 20 09:22:28 2018 +0200
----------------------------------------------------------------------
.../taverna/scufl2/api/common/Scufl2Tools.java | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/edb12c6f/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 c7d4b11..1222733 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
@@ -752,6 +752,24 @@ public class Scufl2Tools {
return activity;
}
+ public Configuration createNestedRelationship(Processor processor, Workflow childWorkflow, Profile profile) {
+ if(processor.getParent() == null) {
+ throw new IllegalStateException("Processor " + processor + " has no parent");
+ }
+ if(processor.getParent().getParent() != childWorkflow.getParent()) {
+ throw new IllegalStateException(
+ "Processor " + processor + " and workflow " + childWorkflow + " are not in the same Workflow bundle");
+ }
+ if(nestedWorkflowForProcessor(processor, profile) != null) {
+ throw new IllegalStateException("Processor " + processor + " already has a nested workflow");
+ }
+
+ Activity activity = createActivityFromProcessor(processor, profile);
+ activity.setType(NESTED_WORKFLOW);
+ Configuration configuration = createConfigurationFor(activity, NESTED_WORKFLOW);
+ return configuration;
+ }
+
public void removePortsBindingForUnknownPorts(ProcessorBinding binding) {
// First, remove ports no longer owned by processor
Iterator<ProcessorInputPortBinding> inputBindings = binding
[4/6] incubator-taverna-language git commit: Improve testing the
nested workflow tool
Posted by st...@apache.org.
Improve testing the nested workflow tool
- Check if nesting processor doesn't already have a bound activity
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/2530da32
Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/tree/2530da32
Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/diff/2530da32
Branch: refs/heads/master
Commit: 2530da3221a6317671367041c20e85709927b685
Parents: 3efbf08
Author: Majdi Haouech <m....@criteo.com>
Authored: Tue Aug 7 23:29:07 2018 +0200
Committer: Majdi Haouech <m....@criteo.com>
Committed: Tue Aug 7 23:29:07 2018 +0200
----------------------------------------------------------------------
.../taverna/scufl2/api/common/Scufl2Tools.java | 10 ++++------
.../scufl2/api/common/TestScufl2Tools.java | 19 +++++++------------
2 files changed, 11 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/2530da32/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 0823e3b..bb5bcbe 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,12 +764,10 @@ public class Scufl2Tools {
if(nestedWorkflowForProcessor(processor, profile) != null) {
throw new IllegalStateException("Processor " + processor + " already has a nested workflow");
}
- try {
- processor.getActivity(profile);
- throw new IllegalStateException("Processor " + processor + " already has a bound activity");
- } catch(IndexOutOfBoundsException e) {
- // Processor should have no bound activity, which is the case here.
- }
+ 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/2530da32/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 179553b..f336af0 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
@@ -51,6 +51,7 @@ 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 {
@@ -81,19 +82,13 @@ public class TestScufl2Tools extends ExampleWorkflow {
assertEquals(child, nested);
- boolean found = false;
+ ProcessorBinding binding = processor.getBinding(profile);
+ Activity activity = binding.getBoundActivity();
+ Configuration configuration = activity.getConfiguration();
- for(Activity activity: profile.getActivities()) {
- if(activity.getType().equals(Scufl2Tools.NESTED_WORKFLOW)) {
- for(Configuration config: tools.configurationsFor(activity, profile)) {
- String nestedWorkflowName = config.getJson().get("nestedWorkflow").asText();
- Workflow wf = workflowBundle.getWorkflows().getByName(nestedWorkflowName);
- found |= (wf != null && nestedWorkflowName.equals(child.getName()));
- }
- }
- }
-
- assertTrue(found);
+ assertEquals(activity.getType(), Scufl2Tools.NESTED_WORKFLOW);
+ String nestedWorkflowName = configuration.getJson().get("nestedWorkflow").asText();
+ assertEquals(nestedWorkflowName, child.getName());
}
@Test
[2/6] incubator-taverna-language git commit: Add test for nested
helper in Scufl2Tools
Posted by st...@apache.org.
Add test for nested helper in Scufl2Tools
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/d93452d7
Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/tree/d93452d7
Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/diff/d93452d7
Branch: refs/heads/master
Commit: d93452d7ab30dc36bf0cabafe923ff3707bb0c55
Parents: edb12c6
Author: Majdi Haouech <m....@criteo.com>
Authored: Sat Jul 28 14:28:08 2018 +0200
Committer: Majdi Haouech <m....@criteo.com>
Committed: Sat Jul 28 14:28:08 2018 +0200
----------------------------------------------------------------------
.../taverna/scufl2/api/common/Scufl2Tools.java | 7 +++++++
.../scufl2/api/common/TestScufl2Tools.java | 20 ++++++++++++++++++++
2 files changed, 27 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/d93452d7/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 1222733..f7f7698 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
@@ -65,6 +65,7 @@ import org.apache.taverna.scufl2.api.profiles.Profile;
import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.node.ObjectNode;
/**
* Utility methods for dealing with SCUFL2 models
@@ -767,6 +768,12 @@ public class Scufl2Tools {
Activity activity = createActivityFromProcessor(processor, profile);
activity.setType(NESTED_WORKFLOW);
Configuration configuration = createConfigurationFor(activity, NESTED_WORKFLOW);
+
+ ObjectNode json = configuration.getJsonAsObjectNode();
+ json.put("nestedWorkflow", childWorkflow.getName());
+
+ childWorkflow.setParent(processor.getParent().getParent());
+
return configuration;
}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/d93452d7/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 5880253..24fc788 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
@@ -41,6 +41,7 @@ import org.apache.taverna.scufl2.api.common.Visitor.VisitorWithPath;
import org.apache.taverna.scufl2.api.container.WorkflowBundle;
import org.apache.taverna.scufl2.api.core.ControlLink;
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.OutputActivityPort;
@@ -63,6 +64,25 @@ public class TestScufl2Tools extends ExampleWorkflow {
makeWorkflowBundle();
assertNotNull(workflowBundle);
}
+
+ @Test
+ public void testNestedWorkflows() {
+ 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.createNestedRelationship(processor, child, profile);
+ Workflow nested = tools.nestedWorkflowForProcessor(processor, profile);
+
+ assertEquals(child, nested);
+ }
@Test
public void controlLinksBlocking() {
[6/6] incubator-taverna-language git commit: Add method to create
nested workflow
Posted by st...@apache.org.
Add method to create nested workflow
Contributed by Majdi Haouech (ICLA on file)
@haouech
See #41
Signed-off-by: Stian Soiland-Reyes <st...@apache.org>
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/fb5c41a8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/tree/fb5c41a8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/diff/fb5c41a8
Branch: refs/heads/master
Commit: fb5c41a89a55da3015ba5c9309860feb2a56a0b4
Parents: 9cd4b87 0ca7ac2
Author: Stian Soiland-Reyes <st...@apache.org>
Authored: Fri Aug 10 12:58:11 2018 +0100
Committer: Stian Soiland-Reyes <st...@apache.org>
Committed: Fri Aug 10 12:58:11 2018 +0100
----------------------------------------------------------------------
.../taverna/scufl2/api/common/Scufl2Tools.java | 29 +++++++++
.../scufl2/api/common/TestScufl2Tools.java | 63 +++++++++++++++++++-
2 files changed, 89 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
[3/6] incubator-taverna-language git commit: Change nesting method
name, Add a test
Posted by st...@apache.org.
Change nesting method name, Add a test
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/3efbf085
Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/tree/3efbf085
Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/diff/3efbf085
Branch: refs/heads/master
Commit: 3efbf0857f0ed3c8d7fa8b52f45bdc73af2ff747
Parents: d93452d
Author: Majdi Haouech <m....@criteo.com>
Authored: Mon Aug 6 23:59:57 2018 +0200
Committer: Majdi Haouech <m....@criteo.com>
Committed: Mon Aug 6 23:59:57 2018 +0200
----------------------------------------------------------------------
.../taverna/scufl2/api/common/Scufl2Tools.java | 8 +++++++-
.../scufl2/api/common/TestScufl2Tools.java | 20 ++++++++++++++++----
2 files changed, 23 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/3efbf085/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 f7f7698..0823e3b 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
@@ -753,7 +753,7 @@ public class Scufl2Tools {
return activity;
}
- public Configuration createNestedRelationship(Processor processor, Workflow childWorkflow, Profile profile) {
+ public Configuration setAsNestedWorkflow(Processor processor, Workflow childWorkflow, Profile profile) {
if(processor.getParent() == null) {
throw new IllegalStateException("Processor " + processor + " has no parent");
}
@@ -764,6 +764,12 @@ public class Scufl2Tools {
if(nestedWorkflowForProcessor(processor, profile) != null) {
throw new IllegalStateException("Processor " + processor + " already has a nested workflow");
}
+ try {
+ processor.getActivity(profile);
+ throw new IllegalStateException("Processor " + processor + " already has a bound activity");
+ } catch(IndexOutOfBoundsException e) {
+ // Processor should have no bound activity, which is the case here.
+ }
Activity activity = createActivityFromProcessor(processor, profile);
activity.setType(NESTED_WORKFLOW);
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/3efbf085/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 24fc788..179553b 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
@@ -34,10 +34,8 @@ import java.util.Set;
import org.apache.taverna.scufl2.api.ExampleWorkflow;
import org.apache.taverna.scufl2.api.activity.Activity;
-import org.apache.taverna.scufl2.api.common.Child;
-import org.apache.taverna.scufl2.api.common.Scufl2Tools;
-import org.apache.taverna.scufl2.api.common.WorkflowBean;
import org.apache.taverna.scufl2.api.common.Visitor.VisitorWithPath;
+import org.apache.taverna.scufl2.api.configurations.Configuration;
import org.apache.taverna.scufl2.api.container.WorkflowBundle;
import org.apache.taverna.scufl2.api.core.ControlLink;
import org.apache.taverna.scufl2.api.core.Processor;
@@ -78,10 +76,24 @@ public class TestScufl2Tools extends ExampleWorkflow {
Profile profile = workflowBundle.getMainProfile();
Scufl2Tools tools = new Scufl2Tools();
- tools.createNestedRelationship(processor, child, profile);
+ tools.setAsNestedWorkflow(processor, child, profile);
Workflow nested = tools.nestedWorkflowForProcessor(processor, profile);
assertEquals(child, nested);
+
+ boolean found = false;
+
+ for(Activity activity: profile.getActivities()) {
+ if(activity.getType().equals(Scufl2Tools.NESTED_WORKFLOW)) {
+ for(Configuration config: tools.configurationsFor(activity, profile)) {
+ String nestedWorkflowName = config.getJson().get("nestedWorkflow").asText();
+ Workflow wf = workflowBundle.getWorkflows().getByName(nestedWorkflowName);
+ found |= (wf != null && nestedWorkflowName.equals(child.getName()));
+ }
+ }
+ }
+
+ assertTrue(found);
}
@Test
[5/6] incubator-taverna-language git commit: Check that nested
process has the same i/o ports as the child workflow
Posted by st...@apache.org.
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....@criteo.com>
Authored: Wed Aug 8 12:08:54 2018 +0200
Committer: Majdi Haouech <m....@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