package betsy.bpel.model;
import java.nio.file.Paths;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import betsy.bpel.engines.AbstractBPELEngine;
import betsy.common.model.AbstractTestSuite;
public class BPELTestSuite extends AbstractTestSuite<AbstractBPELEngine, BPELProcess> {
/**
* Factory method for a list of engines and processes.
*
* @param engines a list of engines to be included in the test suite
* @param processes a list of processes to be included in the test suite
* @return a test suite where each engine tests all passed processes
*/
public static BPELTestSuite createTests(List<AbstractBPELEngine> engines, List<BPELProcess> processes) {
BPELTestSuite test = new BPELTestSuite();
test.setPath(Paths.get("test"));
for (AbstractBPELEngine engine : engines) {
List<BPELProcess> clonedProcesses = processes.stream().map(BPELProcess::createCopyWithoutEngine).collect(Collectors.toList());
// link them
for (BPELProcess process : clonedProcesses) {
process.setEngine(engine);
engine.getProcesses().add(process);
}
// set parentFolder
engine.setParentFolder(test.getPath());
}
test.setEngines(engines);
test.setProcessesCount(getProcessesCount(engines));
Collections.shuffle(engines);
for (AbstractBPELEngine engine : engines) {
Collections.shuffle(engine.getProcesses());
}
return test;
}
/**
* Factory method for a list of engines and processes.
*
* @param engines a list of engines to be included in the test suite
* @param processes a list of processes to be included in the test suite
* @param testFolderName a custom name for the test folder
* @return a test suite where each engine tests all passed processes
*/
public static BPELTestSuite createTests(List<AbstractBPELEngine> engines, List<BPELProcess> processes, String testFolderName) {
BPELTestSuite test = new BPELTestSuite();
test.setPath(Paths.get(testFolderName));
for (AbstractBPELEngine engine : engines) {
List<BPELProcess> clonedProcesses = processes.stream().map(BPELProcess::createCopyWithoutEngine).collect(Collectors.toList());
// link them
for (BPELProcess process : clonedProcesses) {
process.setEngine(engine);
engine.getProcesses().add(process);
}
// set parentFolder
engine.setParentFolder(test.getPath());
}
test.setEngines(engines);
test.setProcessesCount(getProcessesCount(engines));
Collections.shuffle(engines);
for (AbstractBPELEngine engine : engines) {
Collections.shuffle(engine.getProcesses());
}
return test;
}
public static int getProcessesCount(List<AbstractBPELEngine> engines) {
int result = 0;
for (AbstractBPELEngine engine : engines) {
result += engine.getProcesses().size();
}
return result;
}
}