-package compbio.runner.structure;
-
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertTrue;
-import static org.testng.Assert.fail;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import javax.xml.bind.JAXBException;
-import javax.xml.bind.ValidationException;
-
-import org.apache.log4j.Level;
-import org.apache.log4j.Logger;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-import compbio.data.sequence.ScoreManager;
-import compbio.engine.Configurator;
-import compbio.engine.client.ConfiguredExecutable;
-import compbio.engine.client.Executable.ExecProvider;
-import compbio.engine.conf.RunnerConfigMarshaller;
-import compbio.engine.local.ExecutableWrapper;
-import compbio.engine.local.LocalRunner;
-import compbio.metadata.AllTestSuit;
-import compbio.metadata.JobExecutionException;
-import compbio.metadata.JobSubmissionException;
-import compbio.metadata.Option;
-import compbio.metadata.Parameter;
-import compbio.metadata.Preset;
-import compbio.metadata.PresetManager;
-import compbio.metadata.ResultNotAvailableException;
-import compbio.metadata.RunnerConfig;
-import compbio.runner.OptionCombinator;
-import compbio.runner.structure.RNAalifold;
-import compbio.util.FileUtil;
-
-
-public class RNAalifoldParametersTester {
-
-
- // should be: AllTestSuit.TEST_DATA_PATH + "RNAalifoldParameters.xml"
- static final String rnaalifoldConfigFile =
- AllTestSuit.TEST_DATA_PATH + "RNAalifoldParameters.xml";
- public static String test_outfile = "rnaalifold.out.txt";
-
- private static Logger log = Logger
- .getLogger(AllTestSuit.RUNNER_TEST_LOGGER);
-
- static {
- log.setLevel(Level.INFO);
- }
-
- RunnerConfig<RNAalifold> rnaalifoldConfig = null;
- OptionCombinator rnaalifoldOpc = null;
-
- @BeforeMethod(groups = { AllTestSuit.test_group_runner })
- @SuppressWarnings("unchecked")
- public void setup() {
- try {
- RunnerConfigMarshaller<RNAalifold> rnaalifoldmarsh =
- new RunnerConfigMarshaller<RNAalifold>(RunnerConfig.class);
- rnaalifoldConfig = rnaalifoldmarsh.read(new FileInputStream(new File(
- rnaalifoldConfigFile)), RunnerConfig.class);
- // set Name value separator
- rnaalifoldConfig.setPrmSeparator(" ");
- rnaalifoldOpc = new OptionCombinator(rnaalifoldConfig);
-
-
-
- } catch (JAXBException e) {
- e.printStackTrace();
- fail(e.getLocalizedMessage());
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- fail(e.getLocalizedMessage());
- }
- }
-
- @Test
- public void testConfiguration() {
- try {
- this.rnaalifoldConfig.validate();
- } catch (ValidationException e) {
- e.printStackTrace();
- fail(e.getLocalizedMessage());
- } catch (IllegalStateException e) {
- e.printStackTrace();
- fail(e.getLocalizedMessage());
- }
- }
-
- @Test(groups = { AllTestSuit.test_group_runner })
- public void testDefaultParameters() {
- RNAalifold rnaalifold = new RNAalifold();
- rnaalifold.setInput(AllTestSuit.test_input_aln).setOutput(test_outfile);
-
- try {
- // For local execution use relavive
- ConfiguredExecutable<RNAalifold> confRNAalifold = Configurator
- .configureExecutable(rnaalifold);
- LocalRunner lr = new LocalRunner(confRNAalifold);
- lr.executeJob();
- confRNAalifold = (ConfiguredExecutable<RNAalifold>) lr.waitForResult();
- assertNotNull(confRNAalifold.getResults());
- } catch (JobSubmissionException e) {
- e.printStackTrace();
- fail(e.getLocalizedMessage());
- } catch (JobExecutionException e) {
- e.printStackTrace();
- fail(e.getLocalizedMessage());
- } catch (ResultNotAvailableException e) {
- e.printStackTrace();
- fail(e.getLocalizedMessage());
- }
- }
-
-
-
- @Test
- public void testOptions() {
- // populate list of incompatable pairs by their names. todo
- List<List<String>> failPairs = new ArrayList<List<String>>();
-
-
- // test the parameters without -g option
- test(removeParam(rnaalifoldOpc.getAllOptions(), "G-Quadruplex"));
- // now test without -c option
- test(removeParam(rnaalifoldOpc.getAllOptions(), "Circular"));
- }
-
-
- // Prints all the incompatible option pairs
- // (-c, -g) and (-p, -p0)
-
- @Test
- public void testOptionPairs() throws ResultNotAvailableException {
- List<Option<?>> pair = new ArrayList<Option<?>>();
- List<Option<?>> options = rnaalifoldOpc.getAllOptions();
- List<List<String>> failedOptionPairs = new ArrayList<List<String>>();
-
- boolean failed = true;
- for (int i = 0; i<options.size(); i++) {
- for (int j = i; j<options.size(); j++) {
- if (i != j) {
- pair.clear();
- pair.add(options.get(i)); pair.add(options.get(j));
- List<String> args = rnaalifoldOpc.argumentsToCommandString(pair);
- try {
- failed = singleRun(args);
- } catch (ResultNotAvailableException e) {
- System.out.println("Results not available: " + e.getMessage());
- failed = true;
- } catch (JobSubmissionException e) {
- e.printStackTrace();
- fail(e.getLocalizedMessage());
- } catch (JobExecutionException e) {
- e.printStackTrace();
- fail(e.getLocalizedMessage());
- } catch (IOException e) {
- e.printStackTrace();
- fail(e.getLocalizedMessage());
- }
- if (failed == true) {
- failedOptionPairs.add(args);
- }
- }
- }
- }
- System.out.println("failedOptionPairs: " + failedOptionPairs);
-
- }
-
- // tests for incompatible Pairs of Parameters
- // there are none however the --betascale parameter requires -p
-
- @Test
- public void testParameterPairs() throws ResultNotAvailableException {
- List<Parameter<?>> pair = new ArrayList<Parameter<?>>();
- List<Parameter<?>> Parameters = rnaalifoldOpc.getAllParameters();
- List<List<String>> failedParameterPairs = new ArrayList<List<String>>();
-
-
- boolean failed = true;
- for (int i = 0; i<Parameters.size(); i++) {
- for (int j = i; j<Parameters.size(); j++) {
- if (i != j) {
- pair.clear();
- pair.add(Parameters.get(i)); pair.add(Parameters.get(j));
- List<String> args = rnaalifoldOpc.argumentsToCommandString(pair);
- args.add("-p"); // --betascale requires -p
- try {
- failed = singleRun(args);
- } catch (ResultNotAvailableException e) {
- System.out.println("Results not available: " + e.getMessage());
- failed = true;
- } catch (JobSubmissionException e) {
- e.printStackTrace();
- fail(e.getLocalizedMessage());
- } catch (JobExecutionException e) {
- e.printStackTrace();
- fail(e.getLocalizedMessage());
- } catch (IOException e) {
- e.printStackTrace();
- fail(e.getLocalizedMessage());
- }
- if (failed == true) {
- failedParameterPairs.add(args);
- }
- }
- }
- }
- System.out.println("failedParameterPairs: " + failedParameterPairs);
-
- }
-
-
- // removes an argument from the list by name
- public <U extends Option<?>> List<U> removeParam(List<U> optionList, String name) {
- List<U> newL = new ArrayList<U>();
- for (int i = 0; i < optionList.size(); i++) {
- System.out.println(name.equals(optionList.get(i).getName()));
- if (!name.equals(optionList.get(i).getName())) {
-
- newL.add(optionList.get(i));
- }
-
- }
- return newL;
- }
-
- public <U extends Option<?>> List<U> removeParams(List<U> optionList, List<String> names) {
- for (int i = 0; i < names.size(); i++) {
- optionList = removeParam(optionList, names.get(i));
- }
- return optionList;
- }
-
-
- @Test(groups = { AllTestSuit.test_group_runner })
- public void testParameters() {
- List<Parameter<?>> params = rnaalifoldOpc.getAllParameters();
- System.out.println("param list: " + params);
- Collections.shuffle(params);
- // test with -p for betascale option
- List<String> precursor = new ArrayList<String>();
- precursor.add("-p");
-
- test(params, precursor);
- }
-
- // incompatible pairs of arguments are
- /*
- * the -c and -g options
- * the -d2 option and the -d option
- * the -p and -p0 option
- */
-
- @Test(groups = { AllTestSuit.test_group_runner })
- public void testArguments() {
- List<Option<?>> options = rnaalifoldOpc.getAllOptions();
- options.addAll(rnaalifoldOpc.getAllParameters());
- Collections.shuffle(options);
- test(options);
- }
-
- // This test supercedes the testParameterPair() and testOptionPair()
- // tests by testing all pairs of arguments
-
-
- @Test
- public void testAllPairs() throws ResultNotAvailableException {
- List<Option<?>> pair = new ArrayList<Option<?>>();
- List<Option<?>> options = rnaalifoldOpc.getAllOptions();
-
- // take out -p options so it can be added to all commands later
- // options = removeParam(options, "Partition Function");
-
- options.addAll(rnaalifoldOpc.getAllParameters());
- List<List<String>> failedOptionPairs = new ArrayList<List<String>>();
-
- boolean failed = true;
- for (int i = 0; i<options.size(); i++) {
- for (int j = i; j<options.size(); j++) {
- if (i != j) {
- pair.clear();
- pair.add(options.get(i)); pair.add(options.get(j));
- List<String> args = rnaalifoldOpc.argumentsToCommandString(pair);
- // add -p
- // args.add("-p");
- try {
- failed = singleRun(args);
- } catch (ResultNotAvailableException e) {
- System.out.println("Results not available: " + e.getMessage());
- failed = true;
- } catch (JobSubmissionException e) {
- e.printStackTrace();
- fail(e.getLocalizedMessage());
- } catch (JobExecutionException e) {
- e.printStackTrace();
- fail(e.getLocalizedMessage());
- } catch (IOException e) {
- e.printStackTrace();
- fail(e.getLocalizedMessage());
- }
- if (failed == true) {
- failedOptionPairs.add(args);
- }
- }
- }
- }
- System.out.println("failedOptionPairs: " + failedOptionPairs);
- }
-
- /*
- * This test method stolen from the other parameter testing classes
- * the only purpose of the Collections.shuffle(params) and the for loop
- * is to test giving the executable the parameters in different orders
- * which leads to a lot of (unnecessary?) tests with an argument list
- * as long as this one.
- *
- */
-
-
- void test(List<? extends Option<?>> params) {
- for (int i = 0; i < params.size(); i++) {
- List<String> args = rnaalifoldOpc.argumentsToCommandString(params);
- singleTest(args);
- Collections.shuffle(params);
- }
- log.info("NUMBER OF COMBINATION TESTED: " + params.size());
- }
-
- // because some parameters presuppose the -p option
-
- void test(List<? extends Option<?>> params, List<String> precursor) {
-
- for (int i = 0; i < params.size(); i++) {
- List<String> args = rnaalifoldOpc.argumentsToCommandString(params);
- args.addAll(precursor);
- singleTest(args);
- Collections.shuffle(params);
- }
- log.info("NUMBER OF COMBINATION TESTED: " + params.size());
- }
- @Test
- void singleParamTest() {
- //List<Parameter<?>> params = rnaalifoldOpc.getAllParameters();
- //System.out.println("special: params: " + params);
-
- //List<String> args = rnaalifoldOpc.argumentsToCommandString(params);
- List<String> args = new ArrayList<String>();
- //args.add("-T 37"); args.add("-S 1.07"); args.add("--stochBT_en 10");
- // replace "=" with " " to fail test
- args.add("--MEA=1");
- args.add("-p");
- singleTest(args);
-
- }
-
- void singleTest(List<String> params) {
- try {
- log.info("Using arguments: " + params);
- RNAalifold rnaalifold = new RNAalifold();
- rnaalifold.setInput(AllTestSuit.test_input_aln).setOutput(test_outfile);
-
- ConfiguredExecutable<RNAalifold> confRNAalifold = Configurator
- .configureExecutable(rnaalifold, ExecProvider.Local);
- // Add options to the executable
- confRNAalifold.addParameters(params);
- LocalRunner lr = new LocalRunner(confRNAalifold);
- lr.executeJob();
- confRNAalifold = (ConfiguredExecutable<RNAalifold>) lr.waitForResult();
- assertNotNull(confRNAalifold.getResults(), "results is null");
-
- System.out.println("Results: \n"
- + ((ScoreManager) confRNAalifold.getResults()).asRNAStruct().toString());
-
- File errors = new File(confRNAalifold.getWorkDirectory(),
- ExecutableWrapper.PROC_ERR_FILE);
- if (errors.length() != 0) {
- log.error("PROBLEMS:\n " + FileUtil.readFileToString(errors));
- }
- assertTrue(errors.length() == 0, "Run with arguments : " + params
- + " FAILED!");
- Collections.shuffle(params);
- } catch (JobSubmissionException e) {
- e.printStackTrace();
- fail(e.getLocalizedMessage());
- } catch (JobExecutionException e) {
- e.printStackTrace();
- fail(e.getLocalizedMessage());
- } catch (IOException e) {
- e.printStackTrace();
- fail(e.getLocalizedMessage());
- } catch (ResultNotAvailableException e) {
- e.printStackTrace();
- fail(e.getLocalizedMessage());
- }
- }
-
- /* A version of singleTest that continues running instead of calling
- * fail() when it encounters a problem
- *
- * Used to identify incompatible options and parameters
- * returns -1 on failure
- *
- * Bad Progamming practice?
- */
-
-
- boolean singleRun(List<String> params) throws JobSubmissionException,
- JobExecutionException, IOException, ResultNotAvailableException {
- boolean fail = true;
- log.info("Using arguments: " + params);
- RNAalifold rnaalifold = new RNAalifold();
- rnaalifold.setInput(AllTestSuit.test_input_aln).setOutput(test_outfile);
-
- ConfiguredExecutable<RNAalifold> confRNAalifold = Configurator
- .configureExecutable(rnaalifold, ExecProvider.Local);
- // Add options to the executable
- confRNAalifold.addParameters(params);
- LocalRunner lr = new LocalRunner(confRNAalifold);
- lr.executeJob();
- confRNAalifold = (ConfiguredExecutable<RNAalifold>) lr.waitForResult();
-
- System.out.println("Results: \n"
- + ((ScoreManager) confRNAalifold.getResults()).asRNAStruct().toString());
- if (confRNAalifold.getResults() != null) fail = false;
- File errors = new File(confRNAalifold.getWorkDirectory(),
- ExecutableWrapper.PROC_ERR_FILE);
- if (errors.length() != 0) {
- log.error("PROBLEMS:\n " + FileUtil.readFileToString(errors));
- }
- assertTrue(errors.length() == 0, "Run with arguments : " + params
- + " FAILED!");
- Collections.shuffle(params);
- return fail;
- }
-}
+package compbio.runner.structure;\r
+\r
+import static org.testng.Assert.assertFalse;\r
+import static org.testng.Assert.assertNotNull;\r
+import static org.testng.Assert.assertTrue;\r
+import static org.testng.Assert.fail;\r
+\r
+import java.io.File;\r
+import java.io.FileInputStream;\r
+import java.io.FileNotFoundException;\r
+import java.io.IOException;\r
+import java.util.ArrayList;\r
+import java.util.Collections;\r
+import java.util.List;\r
+import java.util.Map;\r
+\r
+import javax.xml.bind.JAXBException;\r
+import javax.xml.bind.ValidationException;\r
+\r
+import org.apache.log4j.Level;\r
+import org.apache.log4j.Logger;\r
+import org.testng.annotations.BeforeMethod;\r
+import org.testng.annotations.Test;\r
+\r
+import compbio.data.sequence.RNAStructScoreManager;\r
+import compbio.data.sequence.ScoreManager;\r
+import compbio.engine.Configurator;\r
+import compbio.engine.client.ConfiguredExecutable;\r
+import compbio.engine.client.Executable.ExecProvider;\r
+import compbio.engine.conf.RunnerConfigMarshaller;\r
+import compbio.engine.local.ExecutableWrapper;\r
+import compbio.engine.local.LocalRunner;\r
+import compbio.metadata.AllTestSuit;\r
+import compbio.metadata.JobExecutionException;\r
+import compbio.metadata.JobSubmissionException;\r
+import compbio.metadata.Option;\r
+import compbio.metadata.Parameter;\r
+import compbio.metadata.Preset;\r
+import compbio.metadata.PresetManager;\r
+import compbio.metadata.ResultNotAvailableException;\r
+import compbio.metadata.RunnerConfig;\r
+import compbio.runner.OptionCombinator;\r
+import compbio.runner.structure.RNAalifold;\r
+import compbio.util.FileUtil;\r
+\r
+\r
+public class RNAalifoldParametersTester {\r
+\r
+ \r
+ // should be: AllTestSuit.TEST_DATA_PATH + "RNAalifoldParameters.xml"\r
+ static final String rnaalifoldConfigFile = \r
+ AllTestSuit.TEST_DATA_PATH + "RNAalifoldParameters.xml";\r
+ public static String test_outfile = "rnaalifold.out.txt";\r
+\r
+ private static Logger log = Logger\r
+ .getLogger(AllTestSuit.RUNNER_TEST_LOGGER);\r
+ \r
+ static {\r
+ log.setLevel(Level.INFO);\r
+ }\r
+ \r
+ RunnerConfig<RNAalifold> rnaalifoldConfig = null;\r
+ OptionCombinator rnaalifoldOpc = null;\r
+ \r
+ @BeforeMethod(groups = { AllTestSuit.test_group_runner })\r
+ @SuppressWarnings("unchecked")\r
+ public void setup() {\r
+ try {\r
+ RunnerConfigMarshaller<RNAalifold> rnaalifoldmarsh = \r
+ new RunnerConfigMarshaller<RNAalifold>(RunnerConfig.class);\r
+ rnaalifoldConfig = rnaalifoldmarsh.read(new FileInputStream(new File(\r
+ rnaalifoldConfigFile)), RunnerConfig.class);\r
+ // set Name value separator\r
+ rnaalifoldConfig.setPrmSeparator(" ");\r
+ rnaalifoldOpc = new OptionCombinator(rnaalifoldConfig);\r
+ \r
+ \r
+ \r
+ } catch (JAXBException e) {\r
+ e.printStackTrace();\r
+ fail(e.getLocalizedMessage());\r
+ } catch (FileNotFoundException e) {\r
+ e.printStackTrace();\r
+ fail(e.getLocalizedMessage());\r
+ }\r
+ }\r
+ \r
+ @Test\r
+ public void testConfiguration() {\r
+ try {\r
+ this.rnaalifoldConfig.validate();\r
+ } catch (ValidationException e) {\r
+ e.printStackTrace();\r
+ fail(e.getLocalizedMessage());\r
+ } catch (IllegalStateException e) {\r
+ e.printStackTrace();\r
+ fail(e.getLocalizedMessage());\r
+ }\r
+ }\r
+\r
+ @Test(groups = { AllTestSuit.test_group_runner })\r
+ public void testDefaultParameters() {\r
+ RNAalifold rnaalifold = new RNAalifold();\r
+ rnaalifold.setInput(AllTestSuit.test_input_aln).setOutput(test_outfile);\r
+\r
+ try {\r
+ // For local execution use relavive\r
+ ConfiguredExecutable<RNAalifold> confRNAalifold = Configurator\r
+ .configureExecutable(rnaalifold);\r
+ LocalRunner lr = new LocalRunner(confRNAalifold);\r
+ lr.executeJob();\r
+ confRNAalifold = (ConfiguredExecutable<RNAalifold>) lr.waitForResult();\r
+ assertNotNull(confRNAalifold.getResults());\r
+ } catch (JobSubmissionException e) {\r
+ e.printStackTrace();\r
+ fail(e.getLocalizedMessage());\r
+ } catch (JobExecutionException e) {\r
+ e.printStackTrace();\r
+ fail(e.getLocalizedMessage());\r
+ } catch (ResultNotAvailableException e) {\r
+ e.printStackTrace();\r
+ fail(e.getLocalizedMessage());\r
+ }\r
+ }\r
+ \r
+ \r
+ \r
+ @Test\r
+ public void testOptions() {\r
+ // populate list of incompatable pairs by their names. todo\r
+ List<List<String>> failPairs = new ArrayList<List<String>>();\r
+\r
+ \r
+ // test the parameters without -g option\r
+ test(removeParam(rnaalifoldOpc.getAllOptions(), "G-Quadruplex"));\r
+ // now test without -c option\r
+ test(removeParam(rnaalifoldOpc.getAllOptions(), "Circular"));\r
+ }\r
+ \r
+\r
+ // Prints all the incompatible option pairs \r
+ // (-c, -g) and (-p, -p0)\r
+ \r
+ @Test\r
+ public void testOptionPairs() throws ResultNotAvailableException {\r
+ List<Option<?>> pair = new ArrayList<Option<?>>();\r
+ List<Option<?>> options = rnaalifoldOpc.getAllOptions();\r
+ List<List<String>> failedOptionPairs = new ArrayList<List<String>>();\r
+ \r
+ boolean failed = true;\r
+ for (int i = 0; i<options.size(); i++) {\r
+ for (int j = i; j<options.size(); j++) {\r
+ if (i != j) {\r
+ pair.clear();\r
+ pair.add(options.get(i)); pair.add(options.get(j));\r
+ List<String> args = rnaalifoldOpc.argumentsToCommandString(pair);\r
+ try { \r
+ failed = singleRun(args);\r
+ } catch (ResultNotAvailableException e) {\r
+ System.out.println("Results not available: " + e.getMessage());\r
+ failed = true;\r
+ } catch (JobSubmissionException e) {\r
+ e.printStackTrace();\r
+ fail(e.getLocalizedMessage());\r
+ } catch (JobExecutionException e) {\r
+ e.printStackTrace();\r
+ fail(e.getLocalizedMessage());\r
+ } catch (IOException e) {\r
+ e.printStackTrace();\r
+ fail(e.getLocalizedMessage());\r
+ }\r
+ if (failed == true) {\r
+ failedOptionPairs.add(args);\r
+ }\r
+ }\r
+ }\r
+ }\r
+ System.out.println("failedOptionPairs: " + failedOptionPairs);\r
+ \r
+ }\r
+ \r
+ // tests for incompatible Pairs of Parameters \r
+ // there are none however the --betascale parameter requires -p\r
+ \r
+ @Test\r
+ public void testParameterPairs() throws ResultNotAvailableException {\r
+ List<Parameter<?>> pair = new ArrayList<Parameter<?>>();\r
+ List<Parameter<?>> Parameters = rnaalifoldOpc.getAllParameters();\r
+ List<List<String>> failedParameterPairs = new ArrayList<List<String>>();\r
+ \r
+ \r
+ boolean failed = true;\r
+ for (int i = 0; i<Parameters.size(); i++) {\r
+ for (int j = i; j<Parameters.size(); j++) {\r
+ if (i != j) {\r
+ pair.clear();\r
+ pair.add(Parameters.get(i)); pair.add(Parameters.get(j));\r
+ List<String> args = rnaalifoldOpc.argumentsToCommandString(pair);\r
+ args.add("-p"); // --betascale requires -p\r
+ try { \r
+ failed = singleRun(args);\r
+ } catch (ResultNotAvailableException e) {\r
+ System.out.println("Results not available: " + e.getMessage());\r
+ failed = true;\r
+ } catch (JobSubmissionException e) {\r
+ e.printStackTrace();\r
+ fail(e.getLocalizedMessage());\r
+ } catch (JobExecutionException e) {\r
+ e.printStackTrace();\r
+ fail(e.getLocalizedMessage());\r
+ } catch (IOException e) {\r
+ e.printStackTrace();\r
+ fail(e.getLocalizedMessage());\r
+ }\r
+ if (failed == true) {\r
+ failedParameterPairs.add(args);\r
+ }\r
+ }\r
+ }\r
+ }\r
+ System.out.println("failedParameterPairs: " + failedParameterPairs);\r
+ \r
+ }\r
+ \r
+ \r
+ // removes an argument from the list by name\r
+ public <U extends Option<?>> List<U> removeParam(List<U> optionList, String name) {\r
+ List<U> newL = new ArrayList<U>();\r
+ for (int i = 0; i < optionList.size(); i++) {\r
+ System.out.println(name.equals(optionList.get(i).getName()));\r
+ if (!name.equals(optionList.get(i).getName())) {\r
+ \r
+ newL.add(optionList.get(i));\r
+ }\r
+ \r
+ }\r
+ return newL;\r
+ }\r
+ \r
+ public <U extends Option<?>> List<U> removeParams(List<U> optionList, List<String> names) {\r
+ for (int i = 0; i < names.size(); i++) {\r
+ optionList = removeParam(optionList, names.get(i));\r
+ }\r
+ return optionList;\r
+ }\r
+ \r
+ \r
+ @Test(groups = { AllTestSuit.test_group_runner })\r
+ public void testParameters() {\r
+ List<Parameter<?>> params = rnaalifoldOpc.getAllParameters();\r
+ System.out.println("param list: " + params);\r
+ Collections.shuffle(params);\r
+ // test with -p for betascale option\r
+ List<String> precursor = new ArrayList<String>();\r
+ precursor.add("-p");\r
+ \r
+ test(params, precursor);\r
+ }\r
+ \r
+ // incompatible pairs of arguments are\r
+ /*\r
+ * the -c and -g options\r
+ * the -d2 option and the -d option\r
+ * the -p and -p0 option\r
+ */\r
+\r
+ @Test(groups = { AllTestSuit.test_group_runner })\r
+ public void testArguments() {\r
+ List<Option<?>> options = rnaalifoldOpc.getAllOptions();\r
+ options.addAll(rnaalifoldOpc.getAllParameters());\r
+ Collections.shuffle(options);\r
+ test(options);\r
+ }\r
+ \r
+ // This test supercedes the testParameterPair() and testOptionPair()\r
+ // tests by testing all pairs of arguments\r
+ \r
+ \r
+ @Test\r
+ public void testAllPairs() throws ResultNotAvailableException {\r
+ List<Option<?>> pair = new ArrayList<Option<?>>();\r
+ List<Option<?>> options = rnaalifoldOpc.getAllOptions();\r
+ \r
+ // take out -p options so it can be added to all commands later\r
+ // options = removeParam(options, "Partition Function");\r
+ \r
+ options.addAll(rnaalifoldOpc.getAllParameters());\r
+ List<List<String>> failedOptionPairs = new ArrayList<List<String>>();\r
+ \r
+ boolean failed = true;\r
+ for (int i = 0; i<options.size(); i++) {\r
+ for (int j = i; j<options.size(); j++) {\r
+ if (i != j) {\r
+ pair.clear();\r
+ pair.add(options.get(i)); pair.add(options.get(j));\r
+ List<String> args = rnaalifoldOpc.argumentsToCommandString(pair);\r
+ // add -p\r
+ // args.add("-p");\r
+ try { \r
+ failed = singleRun(args);\r
+ } catch (ResultNotAvailableException e) {\r
+ System.out.println("Results not available: " + e.getMessage());\r
+ failed = true;\r
+ } catch (JobSubmissionException e) {\r
+ e.printStackTrace();\r
+ fail(e.getLocalizedMessage());\r
+ } catch (JobExecutionException e) {\r
+ e.printStackTrace();\r
+ fail(e.getLocalizedMessage());\r
+ } catch (IOException e) {\r
+ e.printStackTrace();\r
+ fail(e.getLocalizedMessage());\r
+ }\r
+ if (failed == true) {\r
+ failedOptionPairs.add(args);\r
+ }\r
+ }\r
+ }\r
+ }\r
+ System.out.println("failedOptionPairs: " + failedOptionPairs);\r
+ }\r
+ \r
+ /*\r
+ * This test method stolen from the other parameter testing classes\r
+ * the only purpose of the Collections.shuffle(params) and the for loop\r
+ * is to test giving the executable the parameters in different orders\r
+ * which leads to a lot of (unnecessary?) tests with an argument list\r
+ * as long as this one.\r
+ * \r
+ */\r
+ \r
+ \r
+ void test(List<? extends Option<?>> params) {\r
+ for (int i = 0; i < params.size(); i++) {\r
+ List<String> args = rnaalifoldOpc.argumentsToCommandString(params);\r
+ singleTest(args);\r
+ Collections.shuffle(params);\r
+ }\r
+ log.info("NUMBER OF COMBINATION TESTED: " + params.size());\r
+ }\r
+ \r
+ // because some parameters presuppose the -p option\r
+ \r
+ void test(List<? extends Option<?>> params, List<String> precursor) {\r
+\r
+ for (int i = 0; i < params.size(); i++) {\r
+ List<String> args = rnaalifoldOpc.argumentsToCommandString(params);\r
+ args.addAll(precursor);\r
+ singleTest(args);\r
+ Collections.shuffle(params);\r
+ }\r
+ log.info("NUMBER OF COMBINATION TESTED: " + params.size());\r
+ }\r
+ @Test\r
+ void singleParamTest() {\r
+ //List<Parameter<?>> params = rnaalifoldOpc.getAllParameters();\r
+ //System.out.println("special: params: " + params);\r
+ \r
+ //List<String> args = rnaalifoldOpc.argumentsToCommandString(params);\r
+ List<String> args = new ArrayList<String>();\r
+ //args.add("-T 37"); args.add("-S 1.07"); args.add("--stochBT_en 10");\r
+ // replace "=" with " " to fail test\r
+ args.add("--MEA=1");\r
+ args.add("-p");\r
+ singleTest(args);\r
+ \r
+ }\r
+ \r
+ void singleTest(List<String> params) {\r
+ try {\r
+ log.info("Using arguments: " + params);\r
+ RNAalifold rnaalifold = new RNAalifold();\r
+ rnaalifold.setInput(AllTestSuit.test_input_aln).setOutput(test_outfile);\r
+ \r
+ ConfiguredExecutable<RNAalifold> confRNAalifold = Configurator\r
+ .configureExecutable(rnaalifold, ExecProvider.Local);\r
+ // Add options to the executable\r
+ confRNAalifold.addParameters(params);\r
+ LocalRunner lr = new LocalRunner(confRNAalifold);\r
+ lr.executeJob();\r
+ confRNAalifold = (ConfiguredExecutable<RNAalifold>) lr.waitForResult();\r
+ assertNotNull(confRNAalifold.getResults(), "results is null");\r
+ \r
+ System.out.println("Results: \n" \r
+ + ((RNAStructScoreManager) confRNAalifold.getResults()).toString());\r
+ \r
+ File errors = new File(confRNAalifold.getWorkDirectory(),\r
+ ExecutableWrapper.PROC_ERR_FILE);\r
+ if (errors.length() != 0) {\r
+ log.error("PROBLEMS:\n " + FileUtil.readFileToString(errors));\r
+ }\r
+ assertTrue(errors.length() == 0, "Run with arguments : " + params\r
+ + " FAILED!");\r
+ Collections.shuffle(params);\r
+ } catch (JobSubmissionException e) {\r
+ e.printStackTrace();\r
+ fail(e.getLocalizedMessage());\r
+ } catch (JobExecutionException e) {\r
+ e.printStackTrace();\r
+ fail(e.getLocalizedMessage());\r
+ } catch (IOException e) {\r
+ e.printStackTrace();\r
+ fail(e.getLocalizedMessage());\r
+ } catch (ResultNotAvailableException e) {\r
+ e.printStackTrace();\r
+ fail(e.getLocalizedMessage());\r
+ }\r
+ }\r
+ \r
+ /* A version of singleTest that continues running instead of calling\r
+ * fail() when it encounters a problem\r
+ * \r
+ * Used to identify incompatible options and parameters\r
+ * returns -1 on failure\r
+ * \r
+ * Bad Progamming practice? \r
+ */\r
+ \r
+ \r
+ boolean singleRun(List<String> params) throws JobSubmissionException,\r
+ JobExecutionException, IOException, ResultNotAvailableException {\r
+ boolean fail = true;\r
+ log.info("Using arguments: " + params);\r
+ RNAalifold rnaalifold = new RNAalifold();\r
+ rnaalifold.setInput(AllTestSuit.test_input_aln).setOutput(test_outfile);\r
+\r
+ ConfiguredExecutable<RNAalifold> confRNAalifold = Configurator\r
+ .configureExecutable(rnaalifold, ExecProvider.Local);\r
+ // Add options to the executable\r
+ confRNAalifold.addParameters(params);\r
+ LocalRunner lr = new LocalRunner(confRNAalifold);\r
+ lr.executeJob();\r
+ confRNAalifold = (ConfiguredExecutable<RNAalifold>) lr.waitForResult();\r
+ \r
+ System.out.println("Results: \n" \r
+ + ((RNAStructScoreManager) confRNAalifold.getResults()).toString());\r
+ if (confRNAalifold.getResults() != null) fail = false;\r
+ File errors = new File(confRNAalifold.getWorkDirectory(),\r
+ ExecutableWrapper.PROC_ERR_FILE);\r
+ if (errors.length() != 0) {\r
+ log.error("PROBLEMS:\n " + FileUtil.readFileToString(errors));\r
+ }\r
+ assertTrue(errors.length() == 0, "Run with arguments : " + params\r
+ + " FAILED!");\r
+ Collections.shuffle(params);\r
+ return fail;\r
+ }\r
+}\r