Fix a bug with wrong namespace
[jabaws.git] / testsrc / compbio / runner / msa / TcoffeeTester.java
index 659103d..f0f07bf 100644 (file)
@@ -1,6 +1,8 @@
 /* Copyright (c) 2009 Peter Troshin\r
+ * Copyright (c) 2013 Alexander Sherstnev\r
  *  \r
- *  JAva Bioinformatics Analysis Web Services (JABAWS) @version: 1.0     \r
+ *  Java Bioinformatics Analysis Web Services (JABAWS)\r
+ *  @version: 2.5     \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
@@ -27,6 +29,7 @@ import java.io.File;
 import java.io.FileInputStream;\r
 import java.io.FileNotFoundException;\r
 import java.io.IOException;\r
+import java.util.Arrays;\r
 \r
 import javax.xml.bind.ValidationException;\r
 \r
@@ -43,6 +46,7 @@ import compbio.engine.client.ConfiguredExecutable;
 import compbio.engine.client.Executable;\r
 import compbio.engine.client.RunConfiguration;\r
 import compbio.engine.cluster.drmaa.JobRunner;\r
+import compbio.engine.local.LocalRunner;\r
 import compbio.metadata.AllTestSuit;\r
 import compbio.metadata.ChunkHolder;\r
 import compbio.metadata.JobExecutionException;\r
@@ -53,35 +57,45 @@ import compbio.metadata.PresetManager;
 import compbio.metadata.ResultNotAvailableException;\r
 import compbio.metadata.RunnerConfig;\r
 import compbio.runner.msa.Tcoffee;\r
+import compbio.runner.predictors.Jpred;\r
 import compbio.util.FileWatcher;\r
+import compbio.util.SysPrefs;\r
 \r
 public class TcoffeeTester {\r
 \r
        private Tcoffee tcoffee;\r
+       public static final String CURRENT_DIRECTORY = SysPrefs.getCurrentDirectory() + File.separator;\r
+       public static String test_output = "tcoffee.out";\r
+       public static String test_input = CURRENT_DIRECTORY + "testsrc" + File.separator + "testdata" + File.separator + "TO1381.fasta";\r
 \r
-       @BeforeMethod(groups = { AllTestSuit.test_group_cluster,\r
-                       AllTestSuit.test_group_runner, AllTestSuit.test_group_non_windows })\r
+       @BeforeMethod(groups = {AllTestSuit.test_group_cluster, AllTestSuit.test_group_runner, AllTestSuit.test_group_non_windows})\r
        public void init() {\r
                tcoffee = new Tcoffee();\r
-               tcoffee.setInput(AllTestSuit.test_input).setOutput("tcoffee.out")\r
-                               .setError("tcoffee.progress");\r
+               tcoffee.setInput(test_input);\r
+               tcoffee.setOutput(test_output);\r
+               tcoffee.setError("tcoffee.progress");\r
+               //System.out.println("Tcoffee has been configured!");\r
        }\r
 \r
-       @Test(groups = { AllTestSuit.test_group_runner,\r
-                       AllTestSuit.test_group_non_windows })\r
-       public void testExecute() {\r
+       @Test(groups = { AllTestSuit.test_group_runner, AllTestSuit.test_group_non_windows })\r
+       public void RunLocally() {\r
                try {\r
-                       ConfiguredExecutable<Tcoffee> ctcoffee = Configurator\r
-                                       .configureExecutable(tcoffee, Executable.ExecProvider.Local);\r
+                       ConfiguredExecutable<Tcoffee> ctcoffee = Configurator.configureExecutable(tcoffee, Executable.ExecProvider.Local);\r
                        // matrix does not appear to work\r
                        // ctcoffee.getParameters().setParam("-matrix","BLOSUM62");\r
+\r
                        SyncExecutor sexecutor = Configurator.getSyncEngine(ctcoffee);\r
                        sexecutor.executeJob();\r
                        ConfiguredExecutable<?> al = sexecutor.waitForResult();\r
                        Alignment align = al.getResults();\r
                        assertNotNull(align);\r
 \r
-                       // System.out.println("Tcoffee stat file: " + tcoffee.getError());\r
+//                     LocalRunner sexecutor = new LocalRunner(ctcoffee);\r
+//                     sexecutor.executeJob();\r
+//                     ConfiguredExecutable<?> al = sexecutor.waitForResult();\r
+//                     Alignment align = al.getResults();\r
+//                     assertNotNull(align);\r
+\r
                } catch (JobSubmissionException e) {\r
                        e.printStackTrace();\r
                        fail(e.getMessage());\r
@@ -94,31 +108,28 @@ public class TcoffeeTester {
                }\r
        }\r
 \r
-       @Test(groups = { AllTestSuit.test_group_runner,\r
-                       AllTestSuit.test_group_non_windows })\r
+       @Test(groups = {AllTestSuit.test_group_runner, AllTestSuit.test_group_non_windows})\r
        public void readStatistics() {\r
                try {\r
                        Tcoffee tcoffee = new Tcoffee().setInput(AllTestSuit.test_input);\r
-                       ConfiguredExecutable<Tcoffee> confTcoffee = Configurator\r
-                                       .configureExecutable(tcoffee, Executable.ExecProvider.Local);\r
+                       ConfiguredExecutable<Tcoffee> confTcoffee = Configurator.configureExecutable(tcoffee, Executable.ExecProvider.Local);\r
 \r
                        AsyncExecutor sexec = Configurator.getAsyncEngine(confTcoffee);\r
                        String jobId = sexec.submitJob(confTcoffee);\r
-                       FilePuller fw = FilePuller.newFilePuller(confTcoffee\r
-                                       .getWorkDirectory()\r
-                                       + File.separator + tcoffee.getError(),\r
-                                       FileWatcher.MIN_CHUNK_SIZE_BYTES);\r
+                       String file = confTcoffee.getWorkDirectory() + File.separator + tcoffee.getError();\r
+                       FilePuller fw = FilePuller.newFilePuller(file, FileWatcher.MIN_CHUNK_SIZE_BYTES);\r
                        int count = 0;\r
                        long position = 0;\r
                        fw.waitForFile(4);\r
-                       while (!(sexec.getJobStatus(jobId) == JobStatus.FINISHED || sexec\r
-                                       .getJobStatus(jobId) == JobStatus.FAILED || sexec\r
-                                       .getJobStatus(jobId) == JobStatus.UNDEFINED)\r
-                                       || fw.hasMoreData()) {\r
-                               ChunkHolder ch = fw.pull(position);\r
-                               String chunk = ch.getChunk();\r
-                               position = ch.getNextPosition();\r
-                               System.out.print(chunk);\r
+                       while (!(sexec.getJobStatus(jobId) == JobStatus.FINISHED || \r
+                                        sexec.getJobStatus(jobId) == JobStatus.FAILED || \r
+                                        sexec.getJobStatus(jobId) == JobStatus.UNDEFINED) || fw.hasMoreData()) {\r
+                               if (fw.hasMoreData()) {\r
+                                       ChunkHolder ch = fw.pull(position);\r
+                                       String chunk = ch.getChunk();\r
+                                       position = ch.getNextPosition();\r
+                                       System.out.print(chunk);\r
+                               }\r
                                count++;\r
                        }\r
                        assertTrue(count > 1);\r
@@ -136,36 +147,9 @@ public class TcoffeeTester {
                }\r
        }\r
 \r
-       @Test(groups = { AllTestSuit.test_group_cluster,\r
-                       AllTestSuit.test_group_runner, AllTestSuit.test_group_non_windows })\r
-       public void testClusterExecute() {\r
-               try {\r
-                       ConfiguredExecutable<Tcoffee> cmafft = Configurator\r
-                                       .configureExecutable(tcoffee,\r
-                                                       Executable.ExecProvider.Cluster);\r
-                       JobRunner sexecutor = (JobRunner) Configurator.getSyncEngine(\r
-                                       cmafft, Executable.ExecProvider.Cluster);\r
-                       sexecutor.executeJob();\r
-                       ConfiguredExecutable<?> al = sexecutor.waitForResult();\r
-                       Alignment align = al.getResults();\r
-                       assertNotNull(align);\r
-               } catch (JobSubmissionException e) {\r
-                       e.printStackTrace();\r
-                       fail(e.getMessage());\r
-               } catch (JobExecutionException e) {\r
-                       e.printStackTrace();\r
-                       fail(e.getMessage());\r
-               } catch (ResultNotAvailableException e) {\r
-                       e.printStackTrace();\r
-                       fail(e.getMessage());\r
-               }\r
-       }\r
-\r
-       @Test(groups = { AllTestSuit.test_group_runner,\r
-                       AllTestSuit.test_group_non_windows })\r
-       public void testNcore() {\r
+       @Test(groups = { AllTestSuit.test_group_runner, AllTestSuit.test_group_non_windows })\r
+       public void SetNcore() {\r
                Tcoffee tc = new Tcoffee();\r
-               // System.out.println("TCPRM:" + tc.getParameters(null));\r
                assertEquals(tc.getParameters(null).size(), 3);\r
                tc.setNCore(2);\r
                assertEquals(2, tc.getNCore());\r
@@ -175,19 +159,18 @@ public class TcoffeeTester {
                assertEquals(tc.getParameters(null).size(), 3);\r
        }\r
 \r
-       @Test(groups = { AllTestSuit.test_group_cluster,\r
-                       AllTestSuit.test_group_runner, AllTestSuit.test_group_non_windows })\r
-       public void testPersistance() {\r
+       @Test(groups = { AllTestSuit.test_group_cluster, AllTestSuit.test_group_runner, AllTestSuit.test_group_non_windows })\r
+       public void Persistance() {\r
                try {\r
                        Tcoffee tcoffee = new Tcoffee();\r
-                       tcoffee.setError("errrr.txt").setInput(AllTestSuit.test_input)\r
-                                       .setOutput("outtt.txt");\r
+                       tcoffee.setError("errrr.txt");\r
+                       tcoffee.setInput(AllTestSuit.test_input);\r
+                       tcoffee.setOutput("outtt.txt");\r
                        assertEquals(tcoffee.getInput(), AllTestSuit.test_input);\r
                        assertEquals(tcoffee.getError(), "errrr.txt");\r
                        assertEquals(tcoffee.getOutput(), "outtt.txt");\r
-                       ConfiguredExecutable<Tcoffee> ctcofee = Configurator\r
-                                       .configureExecutable(tcoffee, Executable.ExecProvider.Local);\r
 \r
+                       ConfiguredExecutable<Tcoffee> ctcofee = Configurator.configureExecutable(tcoffee, Executable.ExecProvider.Local);\r
                        SyncExecutor sexec = Configurator.getSyncEngine(ctcofee);\r
                        sexec.executeJob();\r
                        ConfiguredExecutable<?> al = sexec.waitForResult();\r
@@ -196,26 +179,21 @@ public class TcoffeeTester {
                        assertTrue(ctcofee.saveRunConfiguration());\r
 \r
                        // See if loaded configuration is the same as saved\r
-                       RunConfiguration loadedRun = RunConfiguration\r
-                                       .load(new FileInputStream(new File(ctcofee\r
-                                                       .getWorkDirectory(), RunConfiguration.rconfigFile)));\r
-                       assertEquals(((ConfExecutable<Tcoffee>) ctcofee)\r
-                                       .getRunConfiguration(), loadedRun);\r
+                       RunConfiguration loadedRun = RunConfiguration.load(new FileInputStream(new File(ctcofee.getWorkDirectory(), RunConfiguration.rconfigFile)));\r
+                       assertEquals(((ConfExecutable<Tcoffee>) ctcofee).getRunConfiguration(), loadedRun);\r
+\r
                        // Load run configuration as ConfExecutable\r
                        ConfiguredExecutable<Tcoffee> resurrectedCTcoffee = (ConfiguredExecutable<Tcoffee>) ctcofee\r
-                                       .loadRunConfiguration(new FileInputStream(new File(ctcofee\r
-                                                       .getWorkDirectory(), RunConfiguration.rconfigFile)));\r
+                                       .loadRunConfiguration(new FileInputStream(new File(ctcofee.getWorkDirectory(), RunConfiguration.rconfigFile)));\r
                        assertNotNull(resurrectedCTcoffee);\r
+\r
                        // See in details whether executables are the same\r
                        assertEquals(resurrectedCTcoffee.getExecutable(), tcoffee);\r
 \r
                        // Finally rerun the job in the new task directory\r
-                       ConfiguredExecutable<Tcoffee> restcoffee = Configurator\r
-                                       .configureExecutable(resurrectedCTcoffee.getExecutable(),\r
-                                                       Executable.ExecProvider.Local);\r
+                       ConfiguredExecutable<Tcoffee> restcoffee = Configurator.configureExecutable(resurrectedCTcoffee.getExecutable(), Executable.ExecProvider.Local);\r
 \r
-                       sexec = Configurator.getSyncEngine(restcoffee,\r
-                                       Executable.ExecProvider.Local);\r
+                       sexec = Configurator.getSyncEngine(restcoffee,Executable.ExecProvider.Local);\r
                        sexec.executeJob();\r
                        al = sexec.waitForResult();\r
                        assertNotNull(al);\r
@@ -239,21 +217,18 @@ public class TcoffeeTester {
        }\r
 \r
        @Test(groups = { AllTestSuit.test_group_runner })\r
-       public void testConfigurationLoading() {\r
+       public void ConfigurationLoading() {\r
                try {\r
-                       RunnerConfig<Tcoffee> tcoffeeConfig = ConfExecutable\r
-                                       .getRunnerOptions(Tcoffee.class);\r
+                       RunnerConfig<Tcoffee> tcoffeeConfig = ConfExecutable.getRunnerOptions(Tcoffee.class);\r
                        assertNotNull(tcoffeeConfig);\r
                        assertTrue(tcoffeeConfig.getArguments().size() > 0);\r
 \r
-                       PresetManager<Tcoffee> tcoffeePresets = ConfExecutable\r
-                                       .getRunnerPresets(Tcoffee.class);\r
+                       PresetManager<Tcoffee> tcoffeePresets = ConfExecutable.getRunnerPresets(Tcoffee.class);\r
                        assertNotNull(tcoffeePresets);\r
                        assertTrue(tcoffeePresets.getPresets().size() > 0);\r
                        tcoffeePresets.validate(tcoffeeConfig);\r
 \r
-                       LimitsManager<Tcoffee> tcoffeeLimits = ConfExecutable\r
-                                       .getRunnerLimits(Tcoffee.class);\r
+                       LimitsManager<Tcoffee> tcoffeeLimits = ConfExecutable.getRunnerLimits(Tcoffee.class);\r
                        assertNotNull(tcoffeeLimits);\r
                        assertTrue(tcoffeeLimits.getLimits().size() > 0);\r
                        tcoffeeLimits.validate(tcoffeePresets);\r
@@ -267,6 +242,27 @@ public class TcoffeeTester {
                        e.printStackTrace();\r
                        fail(e.getLocalizedMessage());\r
                }\r
+       }\r
 \r
+       // disabled\r
+       @Test(enabled=false,groups = { AllTestSuit.test_group_cluster, AllTestSuit.test_group_runner, AllTestSuit.test_group_non_windows })\r
+       public void RunOnCluster() {\r
+               try {\r
+                       ConfiguredExecutable<Tcoffee> cmafft = Configurator.configureExecutable(tcoffee, Executable.ExecProvider.Cluster);\r
+                       JobRunner sexecutor = (JobRunner) Configurator.getSyncEngine(cmafft, Executable.ExecProvider.Cluster);\r
+                       sexecutor.executeJob();\r
+                       ConfiguredExecutable<?> al = sexecutor.waitForResult();\r
+                       Alignment align = al.getResults();\r
+                       assertNotNull(align);\r
+               } catch (JobSubmissionException e) {\r
+                       e.printStackTrace();\r
+                       fail(e.getMessage());\r
+               } catch (JobExecutionException e) {\r
+                       e.printStackTrace();\r
+                       fail(e.getMessage());\r
+               } catch (ResultNotAvailableException e) {\r
+                       e.printStackTrace();\r
+                       fail(e.getMessage());\r
+               }\r
        }\r
 }\r