+++ /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.engine.cluster.drmaa;\r
-\r
-import static org.testng.AssertJUnit.assertEquals;\r
-import static org.testng.AssertJUnit.assertFalse;\r
-import static org.testng.AssertJUnit.assertNotNull;\r
-import static org.testng.AssertJUnit.assertTrue;\r
-import static org.testng.AssertJUnit.fail;\r
-\r
-import java.text.ParseException;\r
-\r
-import org.ggf.drmaa.DrmaaException;\r
-import org.ggf.drmaa.JobInfo;\r
-import org.testng.annotations.Test;\r
-\r
-import compbio.data.sequence.Alignment;\r
-import compbio.engine.Configurator;\r
-import compbio.engine.client.ConfiguredExecutable;\r
-import compbio.engine.client.Executable;\r
-import compbio.engine.client.EngineUtil;\r
-import compbio.metadata.AllTestSuit;\r
-import compbio.metadata.JobExecutionException;\r
-import compbio.metadata.JobStatus;\r
-import compbio.metadata.JobSubmissionException;\r
-import compbio.metadata.ResultNotAvailableException;\r
-import compbio.runner.msa.ClustalW;\r
-import compbio.util.SysPrefs;\r
-\r
-public class DrmaaClusterEngineTester {\r
-\r
- public static String test_input = AllTestSuit.TEST_DATA_PATH_ABSOLUTE\r
- + "TO1381.fasta";\r
- public static String cluster_test_outfile = "TO1381.clustal.cluster.out";\r
-\r
- /**\r
- * This test uses ClustalW executable as runnable to testing, thus depends\r
- * on its correct functioning\r
- */\r
- @Test(groups = { AllTestSuit.test_group_cluster,\r
- AllTestSuit.test_group_engine })\r
- public void testSubmit() {\r
- ClustalW clustal = new ClustalW();\r
- assertFalse("Cluster execution can only be in unix environment",\r
- SysPrefs.isWindows);\r
- clustal.setInput(test_input).setOutput(cluster_test_outfile);\r
-\r
- try {\r
- ConfiguredExecutable<ClustalW> confClust = Configurator\r
- .configureExecutable(clustal,\r
- Executable.ExecProvider.Cluster);\r
- assertNotNull(confClust.getWorkDirectory());\r
-\r
- ClusterRunner runner = ClusterRunner.getInstance(confClust);\r
- assertEquals("Input was not set!", test_input, clustal.getInput());\r
- assertNotNull("Runner is NULL", runner);\r
- runner.executeJob();\r
- // assertNotNull("JobId is null", jobId1);\r
- JobStatus status = runner.getJobStatus();\r
- assertTrue("Status of the process is wrong!",\r
- status == JobStatus.PENDING || status == JobStatus.RUNNING);\r
- JobInfo info = runner.getJobInfo();\r
-\r
- assertFalse(EngineUtil.isMarked(confClust.getWorkDirectory(),\r
- JobStatus.CANCELLED));\r
- assertFalse(EngineUtil.isMarked(confClust.getWorkDirectory(),\r
- JobStatus.STARTED));\r
- assertFalse(EngineUtil.isMarked(confClust.getWorkDirectory(),\r
- JobStatus.COLLECTED));\r
- assertTrue(EngineUtil.isMarked(confClust.getWorkDirectory(),\r
- JobStatus.FINISHED));\r
- assertTrue(EngineUtil.isMarked(confClust.getWorkDirectory(),\r
- JobStatus.SUBMITTED));\r
-\r
- ConfiguredExecutable<?> confExec = runner.waitForResult();\r
- // At this point results are marked as collected\r
- assertTrue(EngineUtil.isMarked(confClust.getWorkDirectory(),\r
- JobStatus.COLLECTED));\r
-\r
- assertNotNull("JobInfo is null", info);\r
- StatisticManager sm = new StatisticManager(info);\r
- assertNotNull("Statistics manager is null", sm);\r
-\r
- try {\r
-\r
- String exits = sm.getExitStatus();\r
- assertNotNull("Exit status is null", exits);\r
- // cut 4 trailing zeros from the number\r
- int exitsInt = ClusterEngineUtil.CLUSTER_STAT_IN_SEC.parse(exits)\r
- .intValue();\r
- assertEquals("Exit status is not 0", 0, exitsInt);\r
- System.out.println(sm.getAllStats());\r
-\r
- } catch (ParseException e) {\r
- e.printStackTrace();\r
- fail("Parse Exception: " + e.getMessage());\r
- }\r
- assertTrue("Process exited:", sm.hasExited());\r
- assertFalse("Process aborted:", sm.wasAborted());\r
- assertFalse("Process hasdump:", sm.hasDump());\r
- assertFalse("Process signaled:", sm.hasSignaled());\r
-\r
- Alignment al = confExec.getResults();\r
- assertNotNull(al);\r
- assertFalse("Could not remove some files whilst cleaning up ",\r
- runner.cleanup());\r
-\r
- } catch (JobSubmissionException e) {\r
- e.printStackTrace();\r
- fail("DrmaaException caught:" + e.getMessage());\r
- } catch (JobExecutionException e) {\r
- e.printStackTrace();\r
- fail("DrmaaException caught:" + e.getMessage());\r
- } catch (DrmaaException e) {\r
- e.printStackTrace();\r
- fail("DrmaaException caught:" + e.getMessage());\r
- } catch (ResultNotAvailableException e) {\r
- fail("DrmaaException caught:" + e.getMessage());\r
- }\r
- }\r
-\r
- @Test(groups = { AllTestSuit.test_group_cluster,\r
- AllTestSuit.test_group_engine })\r
- public void testCancel() {\r
- ClustalW clustal = new ClustalW();\r
- assertFalse("Cluster execution can only be in unix environment",\r
- SysPrefs.isWindows);\r
- clustal.setInput(test_input).setOutput(cluster_test_outfile);\r
-\r
- try {\r
-\r
- ConfiguredExecutable<ClustalW> confClust = Configurator\r
- .configureExecutable(clustal,\r
- Executable.ExecProvider.Cluster);\r
- assertNotNull(confClust.getWorkDirectory());\r
-\r
- ClusterRunner runner = ClusterRunner.getInstance(confClust);\r
- assertNotNull("Runner is NULL", runner);\r
-\r
- runner.executeJob();\r
- // assertNotNull("JobId is null", jobId1);\r
- Thread.sleep(500);\r
- JobStatus status = runner.getJobStatus();\r
- assertTrue("Status of the process is wrong!",\r
- status == JobStatus.PENDING || status == JobStatus.RUNNING);\r
- runner.cancelJob();\r
- Thread.sleep(200); // give fs time to write a file\r
- JobInfo info = runner.getJobInfo();\r
- assertTrue(EngineUtil.isMarked(confClust.getWorkDirectory(),\r
- JobStatus.CANCELLED));\r
- assertFalse(EngineUtil.isMarked(confClust.getWorkDirectory(),\r
- JobStatus.STARTED));\r
- assertFalse(EngineUtil.isMarked(confClust.getWorkDirectory(),\r
- JobStatus.COLLECTED));\r
- assertTrue(EngineUtil.isMarked(confClust.getWorkDirectory(),\r
- JobStatus.FINISHED));\r
- assertTrue(EngineUtil.isMarked(confClust.getWorkDirectory(),\r
- JobStatus.SUBMITTED));\r
-\r
- } catch (JobSubmissionException e) {\r
- e.printStackTrace();\r
- fail("DrmaaException caught:" + e.getMessage());\r
- } catch (JobExecutionException e) {\r
- e.printStackTrace();\r
- fail("DrmaaException caught:" + e.getMessage());\r
- } catch (InterruptedException e) {\r
- e.printStackTrace();\r
- fail("Interupted exception caught:" + e.getMessage());\r
- }\r
- }\r
-\r
-}\r