package alien4cloud.paas.wf;
import java.util.List;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import alien4cloud.paas.wf.util.WorkflowGraphUtils;
import alien4cloud.paas.wf.util.WorkflowUtils;
// TODO: asserts
@Slf4j
public class GraphPathsTest {
/**
* a -- b
*/
@Test
public void test1() {
Workflow wf = new Workflow();
wf.setStandard(true);
wf.setName(Workflow.INSTALL_WF);
AbstractStep a = wf.addStep(new SimpleStep("a"));
AbstractStep b = wf.addStep(new SimpleStep("b"));
WorkflowUtils.linkSteps(a, b);
List<Path> paths = WorkflowGraphUtils.getWorkflowGraphPaths(wf);
log.info(paths.toString());
}
/**
* -- a --
* -- b --
*/
@Test
public void test2() {
Workflow wf = new Workflow();
wf.setStandard(true);
wf.setName(Workflow.INSTALL_WF);
AbstractStep a = wf.addStep(new SimpleStep("a"));
AbstractStep b = wf.addStep(new SimpleStep("b"));
List<Path> paths = WorkflowGraphUtils.getWorkflowGraphPaths(wf);
log.info(paths.toString());
}
/**
* <pre>
* c
* /
* -- a
* \
* b
* </pre>
*/
@Test
public void test23() {
Workflow wf = new Workflow();
wf.setStandard(true);
wf.setName(Workflow.INSTALL_WF);
AbstractStep a = wf.addStep(new SimpleStep("a"));
AbstractStep b = wf.addStep(new SimpleStep("b"));
AbstractStep c = wf.addStep(new SimpleStep("c"));
WorkflowUtils.linkSteps(a, b);
WorkflowUtils.linkSteps(a, c);
List<Path> paths = WorkflowGraphUtils.getWorkflowGraphPaths(wf);
log.info(paths.toString());
}
/**
* <pre>
* -- b -- -- e
* / \ /
* a d
* \ / \
* -- c -- -- f
* </pre>
*/
@Test
public void testComplexe() {
Workflow wf = new Workflow();
wf.setStandard(true);
wf.setName(Workflow.INSTALL_WF);
AbstractStep a = wf.addStep(new SimpleStep("a"));
AbstractStep b = wf.addStep(new SimpleStep("b"));
AbstractStep c = wf.addStep(new SimpleStep("c"));
AbstractStep d = wf.addStep(new SimpleStep("d"));
AbstractStep e = wf.addStep(new SimpleStep("e"));
AbstractStep f = wf.addStep(new SimpleStep("f"));
WorkflowUtils.linkSteps(a, b);
WorkflowUtils.linkSteps(a, c);
WorkflowUtils.linkSteps(b, d);
WorkflowUtils.linkSteps(c, d);
WorkflowUtils.linkSteps(d, e);
WorkflowUtils.linkSteps(d, f);
List<Path> paths = WorkflowGraphUtils.getWorkflowGraphPaths(wf);
log.info(paths.toString());
}
/**
* <pre>
* -- a --
* / \
* \ /
* -- b --
* </pre>
*/
@Test
public void testOrphan() {
Workflow wf = new Workflow();
wf.setStandard(true);
wf.setName(Workflow.INSTALL_WF);
AbstractStep a = wf.addStep(new SimpleStep("a"));
AbstractStep b = wf.addStep(new SimpleStep("b"));
WorkflowUtils.linkSteps(a, b);
WorkflowUtils.linkSteps(b, a);
List<Path> paths = WorkflowGraphUtils.getWorkflowGraphPaths(wf);
log.info(paths.toString());
}
}