+++ /dev/null
-/* Copyright (c) 2009 Peter Troshin\r
- * \r
- * JAva Bioinformatics Analysis Web Services (JABAWS) @version: 1.0 \r
- * \r
- * This library is free software; you can redistribute it and/or modify it under the terms of the\r
- * Apache License version 2 as published by the Apache Software Foundation\r
- * \r
- * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without\r
- * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Apache \r
- * License for more details.\r
- * \r
- * A copy of the license is in apache_license.txt. It is also available here:\r
- * @see: http://www.apache.org/licenses/LICENSE-2.0.txt\r
- * \r
- * Any republication or derived work distributed in source code form\r
- * must include this copyright and license notice.\r
- */\r
-\r
-package compbio.runner.msa;\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.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.msa.Muscle;\r
-import compbio.util.FileUtil;\r
-import compbio.util.Util;\r
-\r
-public class MuscleParametersTester {\r
-\r
- static final String muscleConfigFile = AllTestSuit.TEST_DATA_PATH\r
- + "MuscleParameters.xml";\r
- public static String test_outfile = "TO1381.muscle.out";\r
- public static String cluster_test_outfile = "TO1381.muscle.cluster.out";\r
- public static final String input = AllTestSuit.TEST_DATA_PATH\r
- + "MusclePresets.xml";\r
-\r
- private static Logger log = Logger\r
- .getLogger(AllTestSuit.RUNNER_TEST_LOGGER);\r
- static {\r
- log.setLevel(Level.INFO);\r
- }\r
-\r
- RunnerConfig<Muscle> muscleConfig = null;\r
- OptionCombinator muscleOpc = null;\r
- PresetManager<Muscle> presets = null;\r
-\r
- @BeforeMethod(groups = { AllTestSuit.test_group_runner })\r
- public void setup() {\r
- try {\r
- RunnerConfigMarshaller<Muscle> clustalmarsh = new RunnerConfigMarshaller<Muscle>(\r
- RunnerConfig.class);\r
- muscleConfig = clustalmarsh.read(new FileInputStream(new File(\r
- muscleConfigFile)), RunnerConfig.class);\r
- muscleOpc = new OptionCombinator(muscleConfig);\r
-\r
- // Load presets\r
- RunnerConfigMarshaller<Muscle> rconfigPresets = new RunnerConfigMarshaller<Muscle>(\r
- PresetManager.class);\r
- File infile = new File(input);\r
- assertTrue(infile.exists());\r
- presets = rconfigPresets.read(new FileInputStream(infile),\r
- PresetManager.class);\r
- assertNotNull(presets);\r
- assertFalse(presets.getPresets().isEmpty());\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
-\r
- @Test(groups = { AllTestSuit.test_group_runner })\r
- public void testDefaultParameters() {\r
- Muscle muscle = new Muscle();\r
- muscle.setInput(AllTestSuit.test_input).setOutput(test_outfile);\r
-\r
- try {\r
- // For local execution use relavive\r
- ConfiguredExecutable<Muscle> confMuscle = Configurator\r
- .configureExecutable(muscle);\r
- LocalRunner lr = new LocalRunner(confMuscle);\r
- lr.executeJob();\r
- ConfiguredExecutable<?> al = lr.waitForResult();\r
- assertNotNull(al.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
- @Test\r
- public void testConfiguration() {\r
- try {\r
- muscleConfig.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 testOptions() {\r
- test(muscleOpc.getAllOptions());\r
- }\r
-\r
- @Test(groups = { AllTestSuit.test_group_runner })\r
- public void testParameters() {\r
- List<Parameter<?>> params = muscleOpc.getAllParameters();\r
- Collections.shuffle(params);\r
- test(params);\r
- }\r
-\r
- @Test(groups = { AllTestSuit.test_group_runner })\r
- public void testArguments() {\r
- List<Option<?>> options = new ArrayList<Option<?>>(muscleConfig\r
- .getOptions());\r
- options.addAll(muscleOpc.getAllParameters());\r
- Collections.shuffle(options);\r
- test(options);\r
- }\r
-\r
- @Test(groups = { AllTestSuit.test_group_runner })\r
- public void testConstrainedParametersMinValues() {\r
- Map<Parameter<?>, String> params = muscleOpc\r
- .getAllConstrainedParametersWithBorderValues(true);\r
- test(params);\r
- }\r
-\r
- @Test(groups = { AllTestSuit.test_group_runner })\r
- public void testConstrainedParametersMaxValues() {\r
- Map<Parameter<?>, String> params = muscleOpc\r
- .getAllConstrainedParametersWithBorderValues(false);\r
- test(params);\r
- }\r
-\r
- @Test(groups = { AllTestSuit.test_group_runner })\r
- public void testConstrainedParametersRandomValues() {\r
- for (int i = 0; i < 20; i++) {\r
- Map<Parameter<?>, String> params = muscleOpc\r
- .getAllConstrainedParametersWithRandomValues();\r
- List<Parameter<?>> paramList = new ArrayList<Parameter<?>>(params\r
- .keySet());\r
- Collections.shuffle(paramList);\r
- List<Parameter<?>> subList = paramList.subList(0, Util\r
- .getRandomNumber(1, paramList.size()));\r
- List<String> args = muscleOpc.parametersToCommandString(subList,\r
- params);\r
- singleTest(args);\r
- }\r
- }\r
-\r
- @Test(groups = { AllTestSuit.test_group_runner })\r
- public void testPresets() {\r
- for (Preset<Muscle> p : presets.getPresets()) {\r
- singleTest(p.getOptions());\r
- }\r
- }\r
-\r
- void test(Map<Parameter<?>, String> paramValue) {\r
- List<Parameter<?>> paramList = new ArrayList<Parameter<?>>(paramValue\r
- .keySet());\r
- for (int i = 0; i < paramValue.size(); i++) {\r
- List<String> args = muscleOpc.parametersToCommandString(paramList,\r
- paramValue);\r
- singleTest(args);\r
- Collections.shuffle(paramList);\r
- }\r
- log.info("NUMBER OF COBINATION TESTED: " + paramValue.size());\r
- }\r
-\r
- void test(List<? extends Option<?>> params) {\r
- for (int i = 0; i < params.size(); i++) {\r
- List<String> args = muscleOpc.argumentsToCommandString(params);\r
- singleTest(args);\r
- Collections.shuffle(params);\r
- }\r
- log.info("NUMBER OF COBINATION TESTED: " + params.size());\r
- }\r
-\r
- void singleTest(List<String> params) {\r
- try {\r
- log.info("Using arguments: " + params);\r
- Muscle muscle = new Muscle();\r
- muscle.setInput(AllTestSuit.test_input).setOutput(test_outfile);\r
-\r
- // For local execution use relative\r
- ConfiguredExecutable<Muscle> confMuscle = Configurator\r
- .configureExecutable(muscle, ExecProvider.Local);\r
- System.out.println("Using params:" + params);\r
- // Add options to the executable\r
- confMuscle.addParameters(params);\r
-\r
- LocalRunner lr = new LocalRunner(confMuscle);\r
- lr.executeJob();\r
- ConfiguredExecutable<?> al = lr.waitForResult();\r
- assertNotNull(al.getResults());\r
- File errors = new File(confMuscle.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
-\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
-}\r