From 4c67d1d1f149d83c9c242812f1456fc4915b92c1 Mon Sep 17 00:00:00 2001 From: Joerg Lenhard Date: Fri, 14 Aug 2015 14:13:29 +0200 Subject: [PATCH] Enable setting of custom test folders for BPEL testing --- .gitignore | 1 + src/main/groovy/betsy/bpel/BPELBetsy.java | 10 ++++- src/main/groovy/betsy/bpel/BPELMain.java | 3 ++ .../betsy/bpel/cli/BPELCliParameter.java | 1 + .../groovy/betsy/bpel/cli/BPELCliParser.java | 10 +++++ .../betsy/bpel/cli/TestFolderParser.java | 23 ++++++++++++ .../betsy/bpel/model/BPELTestSuite.java | 37 +++++++++++++++++++ .../groovy/betsy/common/util/LogUtil.java | 19 +++++++++- 8 files changed, 101 insertions(+), 3 deletions(-) create mode 100644 src/main/groovy/betsy/bpel/cli/TestFolderParser.java diff --git a/.gitignore b/.gitignore index e7fc63cb..dfe55cb8 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ deploy.xml .idea tmp/ /test/ +/test* out/ build/ build-bvms/ diff --git a/src/main/groovy/betsy/bpel/BPELBetsy.java b/src/main/groovy/betsy/bpel/BPELBetsy.java index db02694b..2abd880b 100644 --- a/src/main/groovy/betsy/bpel/BPELBetsy.java +++ b/src/main/groovy/betsy/bpel/BPELBetsy.java @@ -4,6 +4,7 @@ import betsy.bpel.model.BPELProcess; import betsy.bpel.model.BPELTestSuite; import betsy.bpel.validation.BPELValidator; +import betsy.common.util.LogUtil; import java.util.ArrayList; import java.util.Collections; @@ -13,13 +14,16 @@ public class BPELBetsy { private List engines = new ArrayList<>(); private List processes = new ArrayList<>(); private BPELComposite composite = new BPELComposite(); + private String testFolderName; public void execute() { validate(); Collections.sort(processes); - BPELTestSuite testSuite = BPELTestSuite.createTests(engines, processes); + BPELTestSuite testSuite = BPELTestSuite.createTests(engines, processes, testFolderName); + + LogUtil.setTestSuite(testSuite); composite.setTestSuite(testSuite); composite.execute(); @@ -45,6 +49,10 @@ public void setProcesses(List processes) { this.processes = processes; } + public void setTestFolder(String folderName){ + testFolderName = folderName; + } + public BPELComposite getComposite() { return composite; } diff --git a/src/main/groovy/betsy/bpel/BPELMain.java b/src/main/groovy/betsy/bpel/BPELMain.java index f062178d..9f034a6c 100644 --- a/src/main/groovy/betsy/bpel/BPELMain.java +++ b/src/main/groovy/betsy/bpel/BPELMain.java @@ -15,6 +15,7 @@ import betsy.bpel.ws.TestPartnerServicePublisherExternal; import betsy.common.HasName; import betsy.common.config.Configuration; +import betsy.common.util.LogUtil; import corebpel.CoreBPEL; import org.apache.log4j.Logger; import org.apache.log4j.xml.DOMConfigurator; @@ -64,6 +65,8 @@ public static void main(String[] args) { betsy.setProcesses(params.getProcesses()); betsy.setEngines(params.getEngines()); + betsy.setTestFolder(params.getTestFolderName()); + // execute try { diff --git a/src/main/groovy/betsy/bpel/cli/BPELCliParameter.java b/src/main/groovy/betsy/bpel/cli/BPELCliParameter.java index fa1e37f7..2abdda60 100644 --- a/src/main/groovy/betsy/bpel/cli/BPELCliParameter.java +++ b/src/main/groovy/betsy/bpel/cli/BPELCliParameter.java @@ -9,6 +9,7 @@ public interface BPELCliParameter { List getEngines(); List getProcesses(); + String getTestFolderName(); boolean openResultsInBrowser(); boolean checkDeployment(); diff --git a/src/main/groovy/betsy/bpel/cli/BPELCliParser.java b/src/main/groovy/betsy/bpel/cli/BPELCliParser.java index ed762242..a022e00d 100644 --- a/src/main/groovy/betsy/bpel/cli/BPELCliParser.java +++ b/src/main/groovy/betsy/bpel/cli/BPELCliParser.java @@ -23,6 +23,11 @@ public List getProcesses() { return Collections.emptyList(); } + @Override + public String getTestFolderName() { + return "test"; + } + @Override public boolean openResultsInBrowser() { return false; @@ -114,6 +119,11 @@ public List getProcesses() { return new ProcessParser(cmd.getArgs()).parse(); } + @Override + public String getTestFolderName() { + return new TestFolderParser(cmd.getArgs()).parse(); + } + @Override public boolean openResultsInBrowser() { return cmd.hasOption(OPEN_RESULTS_IN_BROWSER); diff --git a/src/main/groovy/betsy/bpel/cli/TestFolderParser.java b/src/main/groovy/betsy/bpel/cli/TestFolderParser.java new file mode 100644 index 00000000..8a179534 --- /dev/null +++ b/src/main/groovy/betsy/bpel/cli/TestFolderParser.java @@ -0,0 +1,23 @@ +package betsy.bpel.cli; + +/** + * Created by joerg on 14.08.2015. + */ +public class TestFolderParser { + + private final String[] args; + + private final String defaultFolderName = "test"; + + public TestFolderParser(String[] args){ + this.args = args; + } + + public String parse() { + if(args.length <= 2) { + return defaultFolderName; + } else { + return args[2]; + } + } +} diff --git a/src/main/groovy/betsy/bpel/model/BPELTestSuite.java b/src/main/groovy/betsy/bpel/model/BPELTestSuite.java index 99446e6c..24f7b065 100644 --- a/src/main/groovy/betsy/bpel/model/BPELTestSuite.java +++ b/src/main/groovy/betsy/bpel/model/BPELTestSuite.java @@ -46,6 +46,43 @@ public static BPELTestSuite createTests(List engines, List engines, List processes, String testFolderName) { + BPELTestSuite test = new BPELTestSuite(); + test.setPath(Paths.get(testFolderName)); + + for (AbstractBPELEngine engine : engines) { + + List 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 engines) { int result = 0; diff --git a/src/main/groovy/betsy/common/util/LogUtil.java b/src/main/groovy/betsy/common/util/LogUtil.java index fcc19787..798b7deb 100644 --- a/src/main/groovy/betsy/common/util/LogUtil.java +++ b/src/main/groovy/betsy/common/util/LogUtil.java @@ -9,6 +9,13 @@ import java.nio.file.Paths; public class LogUtil { + + private static TestSuite suite; + + public static void setTestSuite(TestSuite testSuite){ + suite = testSuite; + } + public static void log(final String name, Logger logger, Runnable closure) { String previous = LogContext.getContext(); try { @@ -26,8 +33,8 @@ public static void log(final String name, Logger logger, Runnable closure) { stopwatch.stop(); logger.info("... finished in " + stopwatch.getFormattedDiff() + " | (" + stopwatch.getDiff() + "ms)"); try{ - // TODO should use the TestSuite#getDurationsCsvFilePath method instead of hardcoding it to test here - new DurationCsv(Paths.get("test").resolve(TestSuite.getCsvDurationFile())).saveTaskDuration(name, stopwatch.getDiff()); + // uses a non-default path if available + new DurationCsv(getCsvDurationFilePath()).saveTaskDuration(name, stopwatch.getDiff()); } catch (Exception e) { logger.error("could not save task duration", e); } @@ -39,6 +46,14 @@ public static void log(final String name, Logger logger, Runnable closure) { } + private static Path getCsvDurationFilePath() { + if(suite == null){ + return Paths.get("test").resolve(TestSuite.getCsvDurationFile()); + } else { + return suite.getCsvDurationFilePath(); + } + } + public static void log(Path path, Logger logger, Runnable closure) { log(path.toString(), logger, closure); }