1   /*
2    * $Id: WorkflowConversionTest.java 1353 2010-03-04 16:21:48Z andreas.hoheisel@first.fraunhofer.de $
3    *
4    * Copyright (c) 2008, Fraunhofer FIRST
5    * Fraunhofer Institute for Computer Architecture and Software Technology
6    * See http://www.first.fraunhofer.de and http://www.gridworkflow.org/gwes for more details.
7    */
8   package net.kwfgrid.gworkflowdl;
9   
10  import org.apache.log4j.Logger;
11  import org.jdom.JDOMException;
12  import junit.framework.Test;
13  import junit.framework.TestSuite;
14  import junit.framework.Assert;
15  import net.kwfgrid.gworkflowdl.structure.*;
16  import net.kwfgrid.gworkflowdl.conversion.EPNML2GWorkflowDLConverter;
17  import net.kwfgrid.gworkflowdl.conversion.FileUtils;
18  import net.kwfgrid.gworkflowdl.conversion.EPML2GWorkflowDLConverter;
19  import net.kwfgrid.gworkflowdl.conversion.GWorkflowDLConverter;
20  
21  import java.io.IOException;
22  
23  /***
24   * <code>
25   * maven -Dtestcase=net.kwfgrid.gworkflowdl.WorkflowConversionTest test:single
26   * </code>
27   *
28   * @author Andreas Hoheisel
29   *         (<a href="http://www.andreas-hoheisel.de">www.andreas-hoheisel.de</a>)
30   * @version $Id: WorkflowConversionTest.java 1353 2010-03-04 16:21:48Z andreas.hoheisel@first.fraunhofer.de $
31   */
32  public final class WorkflowConversionTest extends AbstractTestCase {
33  
34      /***
35       * log4j logger
36       */
37      static Logger logger = Logger.getLogger(WorkflowConversionTest.class);
38  
39  
40      /***
41       * Create the test case.
42       *
43       * @param testName name of the test case
44       */
45      public WorkflowConversionTest(String testName) {
46          super(testName);
47          System.setProperty("gworkflowdl.xml.validation","true");
48      }
49  
50      /***
51       * @return the suite of tests being tested
52       */
53      public static Test suite() {
54          return new TestSuite(WorkflowConversionTest.class);
55      }
56  
57      public void testGWorkflowDL20to21() throws IOException, JDOMException, CapacityException, WorkflowFormatException {
58          String fn = "src/test/net/kwfgrid/gworkflowdl/gworkflowdl_test_2-0.gwdl";
59          GWorkflowDLConverter converter = new GWorkflowDLConverter("gworkflowdl_2_0-to-2_1.xsl");
60          String gwdl20 = FileUtils.readFile(getTestFile(fn));
61          System.out.println(gwdl20);
62          String gwdl21 = converter.convert(gwdl20);
63          System.out.println(gwdl21);
64          Workflow workflow = JdomString.string2workflow(gwdl21);
65          Assert.assertEquals("Number or transitions",1,workflow.getTransitionIDs().length);
66          Assert.assertEquals("Number or places",5,workflow.getPlaceIDs().length);
67          Transition transition = workflow.getEnabledTransitions()[0];
68          Assert.assertEquals("Abstraction level", Operation.GREEN, transition.getAbstractionLevel());
69          OperationClass operationClass = (OperationClass) transition.getOperation().get();
70          Assert.assertEquals("operation class", "urn:dgrdl:service:sort", operationClass.getName());
71          Assert.assertEquals("Number of operation candidates", 2, operationClass.getOperationCount());
72          OperationCandidate[] candidates = operationClass.getOperationCandidates();
73          // candidate 0
74          Assert.assertEquals("type", "soap", candidates[0].getType());
75          Assert.assertEquals("operationName", "sort", candidates[0].getOperationName());
76          Assert.assertEquals("resourceName", "http://fhrg.first.fraunhofer.de:8080/linuxtoolbox/services/Sort?wsdl", candidates[0].getResourceName());
77          Assert.assertEquals("quality", 0.01f, 0.8f, candidates[0].getQuality());
78          Assert.assertEquals("selected", true, candidates[0].isSelected());
79          // candidate 1
80          Assert.assertEquals("type", "subworkflow", candidates[1].getType());
81          Assert.assertEquals("operationName", "sort.gwdl", candidates[1].getOperationName());
82          Assert.assertEquals("resourceName", "http://fhrg.first.fraunhofer.de:8080/gwes", candidates[1].getResourceName());
83          Assert.assertEquals("quality", 0.01f, 0.2f, candidates[1].getQuality());
84          Assert.assertEquals("selected", false, candidates[1].isSelected());
85      }
86  
87      public void testGWorkflowDL11to21() throws IOException, JDOMException, CapacityException, WorkflowFormatException {
88          String fn = "src/test/net/kwfgrid/gworkflowdl/gworkflowdl_test_1-1.gwdl";
89          GWorkflowDLConverter converter = new GWorkflowDLConverter("gworkflowdl_1_1-to-2_1.xsl");
90          String gwdl11 = FileUtils.readFile(getTestFile(fn));
91          System.out.println(gwdl11);
92          String gwdl20 = converter.convert(gwdl11);
93          System.out.println(gwdl20);
94          Workflow workflow = JdomString.string2workflow(gwdl20);
95          Assert.assertEquals("Number or transitions",1,workflow.getTransitionIDs().length);
96          Assert.assertEquals("Number or places",5,workflow.getPlaceIDs().length);
97          Transition transition = workflow.getEnabledTransitions()[0];
98          Assert.assertEquals("Abstraction level", Operation.GREEN, transition.getAbstractionLevel());
99          OperationClass operationClass = (OperationClass) transition.getOperation().get();
100         Assert.assertEquals("operation class", "urn:dgrdl:service:sort", operationClass.getName());
101         Assert.assertEquals("Number of operation candidates", 2, operationClass.getOperationCount());
102         OperationCandidate[] candidates = operationClass.getOperationCandidates();
103         // candidate 0
104         Assert.assertEquals("type", "soap", candidates[0].getType());
105         Assert.assertEquals("operationName", "sort", candidates[0].getOperationName());
106         Assert.assertEquals("resourceName", "http://fhrg.first.fraunhofer.de:8080/linuxtoolbox/services/Sort?wsdl", candidates[0].getResourceName());
107         Assert.assertEquals("quality", 0.01f, 0.8f, candidates[0].getQuality());
108         Assert.assertEquals("selected", true, candidates[0].isSelected());
109         // candidate 1
110         Assert.assertEquals("type", "soap", candidates[1].getType());
111         Assert.assertEquals("operationName", "sort", candidates[1].getOperationName());
112         Assert.assertEquals("resourceName", "http://clown.first.fraunhofer.de:8080/linuxtoolbox/services/Sort?wsdl", candidates[1].getResourceName());
113         Assert.assertEquals("quality", 0.01f, 0.2f, candidates[1].getQuality());
114         Assert.assertEquals("selected", false, candidates[1].isSelected());
115     }
116 
117     public void testGWorkflowDL10to21() throws IOException, JDOMException, CapacityException, WorkflowFormatException {
118         String fn = "src/test/net/kwfgrid/gworkflowdl/gworkflowdl_test_1-0.gwdl";
119         GWorkflowDLConverter converter = new GWorkflowDLConverter("gworkflowdl_1_0-to-2_1.xsl");
120         String gwdl10 = FileUtils.readFile(getTestFile(fn));
121         System.out.println(gwdl10);
122         String gwdl20 = converter.convert(gwdl10);
123         System.out.println(gwdl20);
124         Workflow workflow = JdomString.string2workflow(gwdl20);
125         Assert.assertEquals("Number or transitions",1,workflow.getTransitionIDs().length);
126         Assert.assertEquals("Number or places",5,workflow.getPlaceIDs().length);
127         Transition transition = workflow.getEnabledTransitions()[0];
128         Assert.assertEquals("Abstraction level", Operation.GREEN, transition.getAbstractionLevel());
129         OperationClass operationClass = (OperationClass) transition.getOperation().get();
130         Assert.assertEquals("Number of operation candidates", 2, operationClass.getOperationCount());
131         OperationCandidate[] candidates = operationClass.getOperationCandidates();
132         // candidate 0
133         Assert.assertEquals("type", "soap", candidates[0].getType());
134         Assert.assertEquals("operationName", "sort", candidates[0].getOperationName());
135         Assert.assertEquals("resourceName", "http://fhrg.first.fraunhofer.de:8080/linuxtoolbox/services/Sort?wsdl", candidates[0].getResourceName());
136         Assert.assertEquals("quality", 0.01f, 0.8f, candidates[0].getQuality());
137         Assert.assertEquals("selected", true, candidates[0].isSelected());
138         // candidate 1
139         Assert.assertEquals("type", "soap", candidates[1].getType());
140         Assert.assertEquals("operationName", "sort", candidates[1].getOperationName());
141         Assert.assertEquals("resourceName", "http://clown.first.fraunhofer.de:8080/linuxtoolbox/services/Sort?wsdl", candidates[1].getResourceName());
142         Assert.assertEquals("quality", 0.01f, 0.2f, candidates[1].getQuality());
143         Assert.assertEquals("selected", false, candidates[1].isSelected());
144     }
145 
146     public void testGWorkflowDL10MakeloadWorkflow() throws IOException, JDOMException, CapacityException, WorkflowFormatException {
147         String fn = "src/test/net/kwfgrid/gworkflowdl/workflow-makeload_gwdl1-0.xml";
148         GWorkflowDLConverter converter = new GWorkflowDLConverter("gworkflowdl_1_0-to-2_1.xsl");
149         String gwdl10 = FileUtils.readFile(getTestFile(fn));
150         System.out.println(gwdl10);
151         String gwdl20 = converter.convert(gwdl10);
152         System.out.println(gwdl20);
153         Workflow workflow = JdomString.string2workflow(gwdl20);
154         Assert.assertEquals("Number or transitions",1,workflow.getTransitionIDs().length);
155         Assert.assertEquals("Number or places",4,workflow.getPlaceIDs().length);
156         Transition transition = workflow.getEnabledTransitions()[0];
157         Assert.assertEquals("Abstraction level", Operation.YELLOW, transition.getAbstractionLevel());
158         OperationClass operationClass = (OperationClass) transition.getOperation().get();
159         Assert.assertEquals("operation class", "urn:dgrdl:software:makeload100", operationClass.getName());
160         Assert.assertEquals("Number of operation candidates", 0, operationClass.getOperationCount());
161     }
162 
163     public void testEPNML2GWorkflowDL() throws IOException, JDOMException, CapacityException, WorkflowFormatException {
164         String fn = "src/test/net/kwfgrid/gworkflowdl/epnml-1-1.pnml";
165         EPNML2GWorkflowDLConverter converter = new EPNML2GWorkflowDLConverter();
166         String epnml = FileUtils.readFile(getTestFile(fn));
167         System.out.println(epnml);
168         String gwdl = converter.convertFromEPNMLToGWorkflowDL(epnml);
169         System.out.println(gwdl);
170         Workflow workflow = JdomString.string2workflow(gwdl);
171         Assert.assertEquals("Number or transitions",9,workflow.getTransitionIDs().length);
172         Assert.assertEquals("Number or places",11,workflow.getPlaceIDs().length);
173     }
174 
175     public void testEPML2GWorkflowDL() throws IOException, JDOMException, CapacityException, WorkflowFormatException {
176         String fn = "src/test/net/kwfgrid/gworkflowdl/Lager.epml";
177         EPML2GWorkflowDLConverter converter = new EPML2GWorkflowDLConverter();
178         String epnml = FileUtils.readFile(getTestFile(fn));
179         System.out.println(epnml);
180         String gwdl = converter.convertFromEPMLToGWorkflowDL(epnml);
181         System.out.println(gwdl);
182         Workflow workflow = JdomString.string2workflow(gwdl);
183         Assert.assertEquals("Number or transitions",5,workflow.getTransitionIDs().length);
184         Assert.assertEquals("Number or places",6,workflow.getPlaceIDs().length);
185     }
186 
187 }