unit tests
Project: http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/commit/626919d5 Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/tree/626919d5 Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/diff/626919d5 Branch: refs/heads/cwl-browse Commit: 626919d5bc0960ecc7940c1c031b0e5f18cd5637 Parents: 4e8f8d0 Author: ThilinaManamgoda <[email protected]> Authored: Sat Jul 23 13:42:55 2016 +0530 Committer: ThilinaManamgoda <[email protected]> Committed: Sat Jul 23 13:42:55 2016 +0530 ---------------------------------------------------------------------- .../ui/serviceprovider/CwlServiceProvider.java | 122 ++++++++++++------- .../ui/view/CwlActivityContextViewFactory.java | 1 + .../src/main/resources/CWLFiles/customtool1.cwl | 2 +- .../serviceprovider/CwlServiceProviderTest.java | 19 +++ .../view/CwlActivityContextViewFactoryTest.java | 25 ++++ taverna-cwl-activity/pom.xml | 46 +++---- .../src/main/resources/CWLFiles/customtool1.cwl | 2 +- .../taverna/cwl/CwlActivityFactoryTest.java | 86 +++++++++---- 8 files changed, 211 insertions(+), 92 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/626919d5/taverna-cwl-activity-ui/src/main/java/org/apache/taverna/cwl/ui/serviceprovider/CwlServiceProvider.java ---------------------------------------------------------------------- diff --git a/taverna-cwl-activity-ui/src/main/java/org/apache/taverna/cwl/ui/serviceprovider/CwlServiceProvider.java b/taverna-cwl-activity-ui/src/main/java/org/apache/taverna/cwl/ui/serviceprovider/CwlServiceProvider.java index 44672aa..56c462f 100644 --- a/taverna-cwl-activity-ui/src/main/java/org/apache/taverna/cwl/ui/serviceprovider/CwlServiceProvider.java +++ b/taverna-cwl-activity-ui/src/main/java/org/apache/taverna/cwl/ui/serviceprovider/CwlServiceProvider.java @@ -23,7 +23,9 @@ import java.nio.file.DirectoryStream; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.ArrayList; import java.util.Arrays; +import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.stream.Stream; @@ -51,71 +53,102 @@ public class CwlServiceProvider extends AbstractConfigurableServiceProvider impl public static final String DEFAULT_PATH_1 = "/usr/share/commonwl/"; public static final String DEFAULT_PATH_2 = "/usr/local/share/commonwl/"; - public static final String DEFAULT_PATH_3 = "$HOME/.local/share/commonwl"; - + public static final String XDF_DATA_HOME = "XDF_DATA_HOME"; + public static final String COMMONWL = "commonwl/"; private static Logger logger = Logger.getLogger(CwlServiceProvider.class); CwlServiceProvider() { - //FIXME + // FIXME super(getDefaultConfiguration()); } private static final String providerName = "CWL Services"; private static final URI providerId = CwlServiceDesc.ACTIVITY_TYPE.resolve("#provider"); - - @Override public void findServiceDescriptionsAsync(FindServiceDescriptionsCallBack callBack) { - // TODO default and configurable provider - // get the location of the cwl tool from the workbench - Path path = getPath(); - // figure out the dots in the path ex: /maanadev/../cwltools - Path normalizedPath = path.normalize(); - - DirectoryStream<Path> stream = null; - try { - stream = Files.newDirectoryStream(normalizedPath, "*.cwl"); - } catch (IOException e) { - logger.warn("Path is not correct !"); - return; - } - // create stream with parallel capabilities - Stream<Path> paralleStream = StreamSupport.stream(stream.spliterator(), true); + ArrayList<Path> paths = getPath(); - paralleStream.forEach(p -> { - Yaml reader = getYamlReader(); - - Map cwlFile; - try (FileInputStream file = new FileInputStream(path.toFile())) { - cwlFile = (Map) reader.load(file); - JsonNode config = createJsonNode(p, cwlFile); - // Creating CWl service Description - CwlServiceDesc cwlServiceDesc = createCWLDesc(config); - // return the service description - callBack.partialResults(Arrays.asList(cwlServiceDesc)); + for (Path path : paths) { + // figure out the dots in the path ex: /maanadev/../cwltools + Path normalizedPath = path.normalize(); + DirectoryStream<Path> stream = null; + try { + stream = Files.newDirectoryStream(normalizedPath, "*.cwl"); } catch (IOException e) { + logger.warn("Path is not correct !"); + return; + } + // create stream with parallel capabilities + Stream<Path> paralleStream = StreamSupport.stream(stream.spliterator(), true); - logger.warn("File not Found !"); + paralleStream.forEach(p -> { + Yaml reader = getYamlReader(); - } + Map cwlFile; + try (FileInputStream file = new FileInputStream(path.toFile())) { + cwlFile = (Map) reader.load(file); + JsonNode config = createJsonNode(p, cwlFile); + // Creating CWl service Description + CwlServiceDesc cwlServiceDesc = createCWLDesc(config); + // return the service description + callBack.partialResults(Arrays.asList(cwlServiceDesc)); + + } catch (IOException e) { - }); + logger.warn("File not Found !"); - callBack.finished(); + } + }); + + callBack.finished(); + } + + } +/** + * This method checks whether provided path is valid or not and if it's valid the it's added to the list + * @param defaultPaths arrylist to hold valid paths + * @param path + * @param path1 if there is no second path argument this should be set to null + */ + public void addPath(ArrayList<Path> defaultPaths, String path, String path1) { + + Path defaultPath; + if (path1 == null) + defaultPath = Paths.get(path); + else + defaultPath = Paths.get(path, path1); + + if (defaultPath.isAbsolute()) + defaultPaths.add(defaultPath); } - private Path getPath() { - return Paths.get(getConfiguration().getJsonAsObjectNode().get("path").asText()); + private ArrayList<Path> getPath() { + String userInput = getConfiguration().getJsonAsObjectNode().get("path").asText(); + // If user haven't provided a PATH + if (userInput.isEmpty()||userInput==null) { + ArrayList<Path> defaultPaths = new ArrayList<>(); + addPath(defaultPaths, DEFAULT_PATH_1, null); + addPath(defaultPaths, DEFAULT_PATH_2, null); + addPath(defaultPaths, XDF_DATA_HOME, COMMONWL); + return defaultPaths; + } + + return (ArrayList<Path>) Arrays.asList(Paths.get(userInput)); } + /** - * This method is creating a JsonNode object which contains Tool as a map and it's Path,Name - * @param p Path of the CWL tool - * @param cwlFile Output of the YAML reader + * This method is creating a JsonNode object which contains Tool as a map + * and it's Path,Name + * + * @param p + * Path of the CWL tool + * @param cwlFile + * Output of the YAML reader * @return */ private JsonNode createJsonNode(Path p, Map cwlFile) { @@ -127,10 +160,14 @@ public class CwlServiceProvider extends AbstractConfigurableServiceProvider impl ((ObjectNode) root).put(CWL_PATH, p.toString()); return root; } + /** * - * This method creates CwlServiceDesc which hold the configuration of the tool and the tool name - * @param node JsonnNode which holds the final configuration of the tool + * This method creates CwlServiceDesc which hold the configuration of the + * tool and the tool name + * + * @param node + * JsonnNode which holds the final configuration of the tool * @return */ @@ -186,7 +223,6 @@ public class CwlServiceProvider extends AbstractConfigurableServiceProvider impl return false; } - private static Configuration getDefaultConfiguration() { Configuration c = new Configuration(); ObjectNode conf = c.getJsonAsObjectNode(); http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/626919d5/taverna-cwl-activity-ui/src/main/java/org/apache/taverna/cwl/ui/view/CwlActivityContextViewFactory.java ---------------------------------------------------------------------- diff --git a/taverna-cwl-activity-ui/src/main/java/org/apache/taverna/cwl/ui/view/CwlActivityContextViewFactory.java b/taverna-cwl-activity-ui/src/main/java/org/apache/taverna/cwl/ui/view/CwlActivityContextViewFactory.java index 3967cc1..0e10086 100644 --- a/taverna-cwl-activity-ui/src/main/java/org/apache/taverna/cwl/ui/view/CwlActivityContextViewFactory.java +++ b/taverna-cwl-activity-ui/src/main/java/org/apache/taverna/cwl/ui/view/CwlActivityContextViewFactory.java @@ -20,6 +20,7 @@ import java.net.URI; import java.util.Arrays; import java.util.List; +import org.apache.taverna.cwl.CwlDumyActivity; import org.apache.taverna.scufl2.api.activity.Activity; import org.apache.taverna.workbench.configuration.colour.ColourManager; import org.apache.taverna.workbench.ui.views.contextualviews.ContextualView; http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/626919d5/taverna-cwl-activity-ui/src/main/resources/CWLFiles/customtool1.cwl ---------------------------------------------------------------------- diff --git a/taverna-cwl-activity-ui/src/main/resources/CWLFiles/customtool1.cwl b/taverna-cwl-activity-ui/src/main/resources/CWLFiles/customtool1.cwl index cc36f02..b140207 100644 --- a/taverna-cwl-activity-ui/src/main/resources/CWLFiles/customtool1.cwl +++ b/taverna-cwl-activity-ui/src/main/resources/CWLFiles/customtool1.cwl @@ -52,7 +52,7 @@ outputs: description: this is a short description of output 1 format: just a string - - id: ouput_2 + - id: output_2 type: String label: output 2 testing label description: this is a short description of output 2 http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/626919d5/taverna-cwl-activity-ui/src/test/java/org/apache/taverna/cwl/ui/serviceprovider/CwlServiceProviderTest.java ---------------------------------------------------------------------- diff --git a/taverna-cwl-activity-ui/src/test/java/org/apache/taverna/cwl/ui/serviceprovider/CwlServiceProviderTest.java b/taverna-cwl-activity-ui/src/test/java/org/apache/taverna/cwl/ui/serviceprovider/CwlServiceProviderTest.java new file mode 100644 index 0000000..cfc50b1 --- /dev/null +++ b/taverna-cwl-activity-ui/src/test/java/org/apache/taverna/cwl/ui/serviceprovider/CwlServiceProviderTest.java @@ -0,0 +1,19 @@ +package org.apache.taverna.cwl.ui.serviceprovider; + +import static org.junit.Assert.*; + +import org.junit.Before; +import org.junit.Test; + +public class CwlServiceProviderTest { + + @Before + public void setUp() throws Exception { + } + + @Test + public void test() { + fail("Not yet implemented"); + } + +} http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/626919d5/taverna-cwl-activity-ui/src/test/java/org/apache/taverna/cwl/ui/view/CwlActivityContextViewFactoryTest.java ---------------------------------------------------------------------- diff --git a/taverna-cwl-activity-ui/src/test/java/org/apache/taverna/cwl/ui/view/CwlActivityContextViewFactoryTest.java b/taverna-cwl-activity-ui/src/test/java/org/apache/taverna/cwl/ui/view/CwlActivityContextViewFactoryTest.java new file mode 100644 index 0000000..873dd78 --- /dev/null +++ b/taverna-cwl-activity-ui/src/test/java/org/apache/taverna/cwl/ui/view/CwlActivityContextViewFactoryTest.java @@ -0,0 +1,25 @@ +package org.apache.taverna.cwl.ui.view; + +import static org.junit.Assert.*; + +import org.apache.taverna.cwl.CwlDumyActivity; +import org.apache.taverna.scufl2.api.activity.Activity; +import org.apache.taverna.workbench.configuration.colour.ColourManager; +import org.junit.Before; +import org.junit.Test; + +public class CwlActivityContextViewFactoryTest { + + @Before + public void setUp() throws Exception { + ColourManager colourManager=null; + CwlDumyActivity activity =new CwlDumyActivity(); + //CwlContextualView contextualView = new CwlContextualView((Activity)activity,colourManager); + } + + @Test + public void test() { + fail("Not yet implemented"); + } + +} http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/626919d5/taverna-cwl-activity/pom.xml ---------------------------------------------------------------------- diff --git a/taverna-cwl-activity/pom.xml b/taverna-cwl-activity/pom.xml index eaecd6f..10c6ad6 100644 --- a/taverna-cwl-activity/pom.xml +++ b/taverna-cwl-activity/pom.xml @@ -1,22 +1,16 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- - - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - ---> + Licensed to the Apache Software Foundation (ASF) under one or more contributor + license agreements. See the NOTICE file distributed with this work for additional + information regarding copyright ownership. The ASF licenses this file to + You under the Apache License, Version 2.0 (the "License"); you may not use + this file except in compliance with the License. You may obtain a copy of + the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required + by applicable law or agreed to in writing, software distributed under the + License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + OF ANY KIND, either express or implied. See the License for the specific + language governing permissions and limitations under the License. + --> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> @@ -71,11 +65,11 @@ <version>${jackson.version}</version> </dependency> - <dependency> - <groupId>org.apache.taverna.workbench</groupId> - <artifactId>taverna-activity-palette-api</artifactId> - <version>${taverna.workbench.version}</version> - </dependency> + <dependency> + <groupId>org.apache.taverna.workbench</groupId> + <artifactId>taverna-activity-palette-api</artifactId> + <version>${taverna.workbench.version}</version> + </dependency> <dependency> @@ -85,14 +79,14 @@ <type>bundle</type> </dependency> </dependencies> -<!-- Added these properties to configure new dependencies --> + <!-- Added these properties to configure new dependencies --> <properties> - <taverna.language.version>0.15.1-incubating</taverna.language.version> + <taverna.language.version>0.15.1-incubating</taverna.language.version> <taverna.osgi.version>0.2.1-incubating</taverna.osgi.version> <taverna.workbench.version>3.1.0-incubating-SNAPSHOT</taverna.workbench.version> </properties> <repositories> - <repository> + <repository> <id>apache.snapshots</id> <name>Apache Snapshot Repository</name> <url>http://repository.apache.org/snapshots</url> @@ -100,7 +94,7 @@ <enabled>false</enabled> </releases> </repository> - + </repositories> </project> http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/626919d5/taverna-cwl-activity/src/main/resources/CWLFiles/customtool1.cwl ---------------------------------------------------------------------- diff --git a/taverna-cwl-activity/src/main/resources/CWLFiles/customtool1.cwl b/taverna-cwl-activity/src/main/resources/CWLFiles/customtool1.cwl index cc36f02..b140207 100644 --- a/taverna-cwl-activity/src/main/resources/CWLFiles/customtool1.cwl +++ b/taverna-cwl-activity/src/main/resources/CWLFiles/customtool1.cwl @@ -52,7 +52,7 @@ outputs: description: this is a short description of output 1 format: just a string - - id: ouput_2 + - id: output_2 type: String label: output 2 testing label description: this is a short description of output 2 http://git-wip-us.apache.org/repos/asf/incubator-taverna-common-activities/blob/626919d5/taverna-cwl-activity/src/main/test/java/org/apache/taverna/cwl/CwlActivityFactoryTest.java ---------------------------------------------------------------------- diff --git a/taverna-cwl-activity/src/main/test/java/org/apache/taverna/cwl/CwlActivityFactoryTest.java b/taverna-cwl-activity/src/main/test/java/org/apache/taverna/cwl/CwlActivityFactoryTest.java index d8c3b09..d423991 100644 --- a/taverna-cwl-activity/src/main/test/java/org/apache/taverna/cwl/CwlActivityFactoryTest.java +++ b/taverna-cwl-activity/src/main/test/java/org/apache/taverna/cwl/CwlActivityFactoryTest.java @@ -1,14 +1,21 @@ package org.apache.taverna.cwl; - - import static org.junit.Assert.assertEquals; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; import org.apache.log4j.Logger; +import org.apache.taverna.workflowmodel.Edits; +import org.apache.taverna.workflowmodel.impl.EditsImpl; +import org.apache.taverna.workflowmodel.processor.activity.ActivityConfigurationException; +import org.apache.taverna.workflowmodel.processor.activity.ActivityInputPort; +import org.apache.taverna.workflowmodel.processor.activity.ActivityOutputPort; import org.junit.Before; import org.junit.Test; import org.yaml.snakeyaml.Yaml; @@ -21,43 +28,80 @@ public class CwlActivityFactoryTest { private static Logger logger = Logger.getLogger(CwlActivityFactoryTest.class); CwlActivityFactory cwlActivityFactory; public static final String CWL_CONF = "cwl_conf"; - private JsonNode root; - + private JsonNode root; + @Before public void setUp() throws Exception { - System.out.println("1"); cwlActivityFactory = new CwlActivityFactory(); + Edits edits = new EditsImpl(); + cwlActivityFactory.setEdits(edits); + Yaml reader = new Yaml(); - ObjectMapper mapper = new ObjectMapper(); + ObjectMapper mapper = new ObjectMapper(); ObjectNode cwlFile = null; try { - cwlFile = mapper.valueToTree(reader.load(new FileInputStream(getClass().getResource("/CWLFiles/customtool1.cwl").getPath()))); + cwlFile = mapper.valueToTree( + reader.load(new FileInputStream(getClass().getResource("/CWLFiles/customtool1.cwl").getPath()))); } catch (IllegalArgumentException | FileNotFoundException e) { System.out.println(e); - } - - root =mapper.createObjectNode(); + } + + root = mapper.createObjectNode(); ((ObjectNode) root).put(CWL_CONF, cwlFile); } @Test public void testSchemaJson() { ObjectMapper objectMapper = new ObjectMapper(); - try { - assertEquals(cwlActivityFactory.getActivityConfigurationSchema(), objectMapper.readTree(getClass().getResource("/schema.json"))); + try { + assertEquals(cwlActivityFactory.getActivityConfigurationSchema(), + objectMapper.readTree(getClass().getResource("/schema.json"))); } catch (IOException e) { logger.error(e); } - + } - @Test //FIXME + + @Test // FIXME public void testgetInputPorts() { - -// try { -// cwlActivityFactory.getInputPorts(root); -// } catch (ActivityConfigurationException e) { -// logger.error(e); -// -// } + Set<ActivityInputPort> set = null; + try { + set = cwlActivityFactory.getInputPorts(root); + } catch (ActivityConfigurationException e) { + logger.error(e); + + } + assertEquals(3, set.size()); + Map<String, Integer> expected = new HashMap<>(); + expected.put("input_2", 1); + expected.put("input_3", 0); + expected.put("input_1", 0); + Iterator<ActivityInputPort> itr = set.iterator(); + while (itr.hasNext()) { + ActivityInputPort input = itr.next(); + int expectedDepth = expected.get(input.getName()); + assertEquals(expectedDepth, input.getDepth()); + } + } + + @Test // FIXME + public void testgetOutputPorts() { + Set<ActivityOutputPort> set = null; + try { + set = cwlActivityFactory.getOutputPorts(root); + } catch (ActivityConfigurationException e) { + logger.error(e); + + } + assertEquals(2, set.size()); + Map<String, Integer> expected = new HashMap<>(); + expected.put("output_1", 0); + expected.put("output_2", 0); + Iterator<ActivityOutputPort> itr = set.iterator(); + while (itr.hasNext()) { + ActivityOutputPort output = itr.next(); + int expectedDepth = expected.get(output.getName()); + assertEquals(expectedDepth, output.getDepth()); + } } }
