@SuppressWarnings({ "unchecked", "unused" }) @Test public void expectedOrder() throws Exception { Workflow wf = new Workflow(); wf.setName("wf"); InputWorkflowPort a = new InputWorkflowPort(wf, "a"); InputWorkflowPort b = new InputWorkflowPort(wf, "b"); InputWorkflowPort c = new InputWorkflowPort(wf, "c"); OutputWorkflowPort x = new OutputWorkflowPort(wf, "x"); OutputWorkflowPort y = new OutputWorkflowPort(wf, "y"); OutputWorkflowPort z = new OutputWorkflowPort(wf, "z"); DataLink c_x = new DataLink(wf, c, x); DataLink b_x = new DataLink(wf, b, x); DataLink b_z = new DataLink(wf, b, z); DataLink a_z = new DataLink(wf, a, z); DataLink a_x = new DataLink(wf, a, x); ArrayList<DataLink> links = new ArrayList<DataLink>(wf.getDataLinks()); assertEquals(Arrays.asList(a_x, a_z, b_x, b_z, c_x), links); Collections.shuffle(links); Collections.sort(links); assertEquals(Arrays.asList(a_x, a_z, b_x, b_z, c_x), links); }
OutputWorkflowPort z = new OutputWorkflowPort(wf, "z"); DataLink null_null = new DataLink(); null_null.setParent(wf); DataLink null_z = new DataLink(); DataLink a_z = new DataLink(wf, a, z); DataLink a_null = new DataLink(); assertEquals(Arrays.asList(null_null, null_z, a_null, a_z), links); DataLink allNull = new DataLink(); links.add(allNull);
protected void parseDataLink(DataLink original) { URI fromUri = getParserState().getCurrentBase().resolve( original.getReceiveFrom().getResource()); URI toUri = getParserState().getCurrentBase().resolve( original.getSendTo().getResource()); WorkflowBean from = resolveBeanUri(fromUri); WorkflowBean to = resolveBeanUri(toUri); org.apache.taverna.scufl2.api.core.DataLink link = new org.apache.taverna.scufl2.api.core.DataLink(); link.setReceivesFrom((SenderPort) from); link.setSendsTo((ReceiverPort) to); if (original.getMergePosition() != null) link.setMergePosition(original.getMergePosition().getValue()); link.setParent(getParserState().getCurrent(Workflow.class)); mapBean(getParserState().getCurrentBase().resolve(original.getAbout()), link); }
@Test public void testCorrectnessOfMissingReceivesFrom() { DataLink dataLink = new DataLink(); OutputWorkflowPort owp = new OutputWorkflowPort(); dataLink.setSendsTo(owp); CorrectnessValidator cv = new CorrectnessValidator(); ReportCorrectnessValidationListener rcvl = new ReportCorrectnessValidationListener(); cv.checkCorrectness(dataLink, false, rcvl); Set<NullFieldProblem> nullFieldProblems = rcvl.getNullFieldProblems(); assertEquals(0, nullFieldProblems.size()); // only done when completeness check }
@Test public void testCorrectnessOfMissingSendsTo() { DataLink dataLink = new DataLink(); InputWorkflowPort iwp = new InputWorkflowPort(); dataLink.setReceivesFrom(iwp); CorrectnessValidator cv = new CorrectnessValidator(); ReportCorrectnessValidationListener rcvl = new ReportCorrectnessValidationListener(); cv.checkCorrectness(dataLink, false, rcvl); Set<NullFieldProblem> nullFieldProblems = rcvl.getNullFieldProblems(); assertEquals(0, nullFieldProblems.size()); // only done when completeness check }
@Test public void testCompletenessOfMissingSendsTo() { DataLink dataLink = new DataLink(); InputWorkflowPort iwp = new InputWorkflowPort(); dataLink.setReceivesFrom(iwp); CorrectnessValidator cv = new CorrectnessValidator(); ReportCorrectnessValidationListener rcvl = new ReportCorrectnessValidationListener(); cv.checkCorrectness(dataLink, true, rcvl); Set<NullFieldProblem> nullFieldProblems = rcvl.getNullFieldProblems(); assertFalse(nullFieldProblems.isEmpty()); // only done when completeness check boolean fieldProblem = false; for (NullFieldProblem nlp : nullFieldProblems) { if (nlp.getBean().equals(dataLink) && nlp.getFieldName().equals("sendsTo")) { fieldProblem = true; } } assertTrue(fieldProblem); }
@Test public void testCompletenessOfMissingReceivesFrom() { DataLink dataLink = new DataLink(); OutputWorkflowPort owp = new OutputWorkflowPort(); dataLink.setSendsTo(owp); CorrectnessValidator cv = new CorrectnessValidator(); ReportCorrectnessValidationListener rcvl = new ReportCorrectnessValidationListener(); cv.checkCorrectness(dataLink, true, rcvl); Set<NullFieldProblem> nullFieldProblems = rcvl.getNullFieldProblems(); assertFalse(nullFieldProblems.isEmpty()); // only done when completeness check boolean fieldProblem = false; for (NullFieldProblem nlp : nullFieldProblems) { if (nlp.getBean().equals(dataLink) && nlp.getFieldName().equals("receivesFrom")) { fieldProblem = true; } } assertTrue(fieldProblem); }
public Workflow makeMainWorkflow() { workflow = new Workflow(); workflow.setName("HelloWorld"); // NOTE: setWorkflowIdentifier should only be called when loading a // workflow // which already has an ID workflow.setIdentifier(URI .create("http://ns.taverna.org.uk/2010/workflow/00626652-55ae-4a9e-80d4-c8e9ac84e2ca/")); InputWorkflowPort yourName = new InputWorkflowPort(workflow, "yourName"); yourName.setDepth(0); OutputWorkflowPort results = new OutputWorkflowPort(workflow, "results"); // Not needed: // workflow.getInputPorts().add(yourName); // workflow.getOutputPorts().add(results); workflow.getProcessors().add(makeProcessor()); workflow.getProcessors().add(makeProcessor2()); // Make links DataLink directLink = new DataLink(workflow, yourName, results); directLink.setMergePosition(1); DataLink greetingLink = new DataLink(workflow, processorGreeting, results); greetingLink.setMergePosition(0); nameLink = new DataLink(workflow, yourName, processorName); condition = new BlockingControlLink(processor, wait4me); return workflow; }
@Test public void testMergingToOutputWorkflowPort() { WorkflowBundle wb = new WorkflowBundle(); Workflow w = new Workflow(); wb.setMainWorkflow(w); InputWorkflowPort a = new InputWorkflowPort(w, "a"); a.setDepth(0); InputWorkflowPort b = new InputWorkflowPort(w, "b"); b.setDepth(7); OutputWorkflowPort outA = new OutputWorkflowPort(w, "outA"); OutputWorkflowPort outB = new OutputWorkflowPort(w, "outB"); DataLink aLink = new DataLink(w, a, outA); aLink.setMergePosition(0); DataLink bLink = new DataLink(w, b, outA); bLink.setMergePosition(1); DataLink aLink2 = new DataLink(w, a, outB); aLink2.setMergePosition(1); DataLink bLink2 = new DataLink(w, b, outB); bLink2.setMergePosition(0); StructuralValidator sv = new StructuralValidator(); ReportStructuralValidationListener l = new ReportStructuralValidationListener(); sv.checkStructure(wb, l); ValidatorState vs = sv.getValidatorState(); assertEquals(0, l.getIncompleteWorkflows().size()); assertEquals(Integer.valueOf(0), vs.getDataLinkResolvedDepth(aLink)); assertEquals(Integer.valueOf(7), vs.getDataLinkResolvedDepth(bLink)); assertEquals(Integer.valueOf(1), vs.getPortResolvedDepth(outA)); assertEquals(Integer.valueOf(8), vs.getPortResolvedDepth(outB)); }
@Test public void testDataLinkInheritanceFromInputWorkflowPorts() { WorkflowBundle wb = new WorkflowBundle(); Workflow w = new Workflow(); wb.setMainWorkflow(w); InputWorkflowPort a = new InputWorkflowPort(w, "a"); a.setDepth(0); InputWorkflowPort b = new InputWorkflowPort(w, "b"); b.setDepth(7); OutputWorkflowPort outA = new OutputWorkflowPort(w, "outA"); OutputWorkflowPort outB = new OutputWorkflowPort(w, "outB"); DataLink aLink = new DataLink(w, a, outA); DataLink bLink = new DataLink(w, b, outB); StructuralValidator sv = new StructuralValidator(); ReportStructuralValidationListener l = new ReportStructuralValidationListener(); sv.checkStructure(wb, l); ValidatorState vs = sv.getValidatorState(); assertEquals(0, l.getIncompleteWorkflows().size()); assertEquals(Integer.valueOf(0), vs.getDataLinkResolvedDepth(aLink)); assertEquals(Integer.valueOf(7), vs.getDataLinkResolvedDepth(bLink)); assertEquals(Integer.valueOf(0), vs.getPortResolvedDepth(outA)); assertEquals(Integer.valueOf(7), vs.getPortResolvedDepth(outB)); }
@Test public void testCorrectnessOfMergePositionSpecifiedIncorrectly() { Workflow w = new Workflow(); DataLink dataLink = new DataLink(); dataLink.setParent(w);
DataLink dataLink = new DataLink(); dataLink.setParent(w);
DataLink dataLink = new DataLink(); dataLink.setParent(w);
Workflow otherWorkflow = new Workflow(); DataLink dataLink = new DataLink(); dataLink.setParent(w);
Workflow otherWorkflow = new Workflow(); DataLink dataLink = new DataLink(); dataLink.setParent(w);
@Test public void testCorrectnessOfMergePositionSpecifiedCorrectly() { Workflow w = new Workflow(); DataLink dataLink = new DataLink(); dataLink.setParent(w); InputWorkflowPort iwp = new InputWorkflowPort(); iwp.setParent(w); OutputWorkflowPort owp = new OutputWorkflowPort(); owp.setParent(w); dataLink.setReceivesFrom(iwp); dataLink.setSendsTo(owp); Integer mergePosition = Integer.valueOf(3); dataLink.setMergePosition(mergePosition); CorrectnessValidator cv = new CorrectnessValidator(); ReportCorrectnessValidationListener rcvl = new ReportCorrectnessValidationListener(); cv.checkCorrectness(dataLink, false, rcvl); Set<NegativeValueProblem> negativeValueProblems = rcvl.getNegativeValueProblems(); assertEquals(Collections.EMPTY_SET, negativeValueProblems); }
@Test public void testSimpleIteration() { WorkflowBundle wb = new WorkflowBundle(); Workflow w = new Workflow(); wb.setMainWorkflow(w); InputWorkflowPort a = new InputWorkflowPort(w, "a"); a.setDepth(1); Processor p = new Processor(w, "p"); InputProcessorPort ipp = new InputProcessorPort(p, "in"); ipp.setDepth(0); OutputProcessorPort opp = new OutputProcessorPort(p, "out"); opp.setDepth(3); DataLink inLink = new DataLink(w, a, ipp); IterationStrategyStack iss = new IterationStrategyStack(p); CrossProduct cp = new CrossProduct(); iss.add(cp); PortNode portNode = new PortNode(cp, ipp); portNode.setDesiredDepth(0); StructuralValidator sv = new StructuralValidator(); ReportStructuralValidationListener l = new ReportStructuralValidationListener(); sv.checkStructure(wb, l); ValidatorState vs = sv.getValidatorState(); assertEquals(0, l.getIncompleteWorkflows().size()); assertEquals(Integer.valueOf(1), vs.getPortResolvedDepth(a)); assertEquals(Integer.valueOf(1), vs.getDataLinkResolvedDepth(inLink)); assertEquals(Integer.valueOf(1), vs.getPortResolvedDepth(ipp)); assertEquals(Integer.valueOf(4), vs.getPortResolvedDepth(opp)); }
@Test public void testInScopePorts() { Workflow w = new Workflow(); DataLink dataLink = new DataLink(); dataLink.setParent(w); InputWorkflowPort iwp = new InputWorkflowPort(); iwp.setParent(w); OutputWorkflowPort owp = new OutputWorkflowPort(); owp.setParent(w); dataLink.setReceivesFrom(iwp); dataLink.setSendsTo(owp); CorrectnessValidator cv = new CorrectnessValidator(); ReportCorrectnessValidationListener rcvl = new ReportCorrectnessValidationListener(); cv.checkCorrectness(dataLink, true, rcvl); Set<OutOfScopeValueProblem> outOfScopeValueProblems = rcvl.getOutOfScopeValueProblems(); assertEquals(Collections.EMPTY_SET, outOfScopeValueProblems); }
@Test public void testInScopeProcessorPorts() { Workflow w = new Workflow(); DataLink dataLink = new DataLink(); dataLink.setParent(w); Processor p1 = new Processor(); p1.setParent(w); InputProcessorPort ipp = new InputProcessorPort(); ipp.setParent(p1); Processor p2 = new Processor(); p2.setParent(w); OutputProcessorPort opp = new OutputProcessorPort(); opp.setParent(p2); dataLink.setReceivesFrom(opp); dataLink.setSendsTo(ipp); CorrectnessValidator cv = new CorrectnessValidator(); ReportCorrectnessValidationListener rcvl = new ReportCorrectnessValidationListener(); cv.checkCorrectness(dataLink, true, rcvl); Set<OutOfScopeValueProblem> outOfScopeValueProblems = rcvl.getOutOfScopeValueProblems(); assertEquals(Collections.EMPTY_SET, outOfScopeValueProblems); }