Some lost files
[proteocache.git] / testsrc / compbio / engine / local / EngineResourcesLeakTester.java
1 /* Copyright (c) 2009 Peter Troshin\r
2  *  \r
3  *  JAva Bioinformatics Analysis Web Services (JABAWS) @version: 1.0     \r
4  * \r
5  *  This library is free software; you can redistribute it and/or modify it under the terms of the\r
6  *  Apache License version 2 as published by the Apache Software Foundation\r
7  * \r
8  *  This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without\r
9  *  even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Apache \r
10  *  License for more details.\r
11  * \r
12  *  A copy of the license is in apache_license.txt. It is also available here:\r
13  * @see: http://www.apache.org/licenses/LICENSE-2.0.txt\r
14  * \r
15  * Any republication or derived work distributed in source code form\r
16  * must include this copyright and license notice.\r
17  */\r
18 package compbio.engine.local;\r
19 \r
20 import static org.testng.Assert.assertEquals;\r
21 import static org.testng.Assert.assertNotNull;\r
22 import static org.testng.Assert.assertTrue;\r
23 import static org.testng.Assert.fail;\r
24 \r
25 import java.util.ArrayList;\r
26 import java.util.HashMap;\r
27 import java.util.List;\r
28 import java.util.Map;\r
29 \r
30 import org.testng.annotations.Test;\r
31 \r
32 import compbio.engine.AsyncExecutor;\r
33 import compbio.engine.Configurator;\r
34 import compbio.engine.SubmissionManager;\r
35 import compbio.engine.client.ConfiguredExecutable;\r
36 import compbio.engine.client.Executable;\r
37 import compbio.metadata.AllTestSuit;\r
38 import compbio.metadata.JobStatus;\r
39 import compbio.metadata.JobSubmissionException;\r
40 import compbio.metadata.ResultNotAvailableException;\r
41 import compbio.runner.msa.ClustalW;\r
42 import compbio.runner.msa.Muscle;\r
43 \r
44 public class EngineResourcesLeakTester {\r
45 \r
46         static int numberOfExecutions = 50;\r
47 \r
48         @Test(groups = { AllTestSuit.test_group_long })\r
49         public void loadEngineRetrieveResultsManyTimes() {\r
50 \r
51                 List<String> idlist = new ArrayList<String>();\r
52                 ClustalW clu = new ClustalW();\r
53                 clu.setInput(AllTestSuit.test_input_real);\r
54                 try {\r
55                         for (int i = 0; i < numberOfExecutions; i++) {\r
56                                 ConfiguredExecutable<ClustalW> cclustal = Configurator\r
57                                                 .configureExecutable(clu, Executable.ExecProvider.Local);\r
58                                 AsyncExecutor engine = Configurator.getAsyncEngine(cclustal);\r
59                                 String jobId = engine.submitJob(cclustal);\r
60                                 assertNotNull(jobId);\r
61                                 Thread.sleep(50);\r
62                                 assertNotNull(SubmissionManager.getTask(jobId));\r
63                                 assertTrue(idlist.add(jobId));\r
64                         }\r
65                 } catch (JobSubmissionException e) {\r
66                         e.printStackTrace();\r
67                         fail(e.getLocalizedMessage());\r
68                 } catch (InterruptedException e) {\r
69                         e.printStackTrace();\r
70                         fail(e.getLocalizedMessage());\r
71                 }\r
72 \r
73                 assertEquals(idlist.size(), numberOfExecutions);\r
74                 // assertEquals(SubmissionManager.submittedTasks.size(),\r
75                 // numberOfExecutions * 2);\r
76 \r
77                 try {\r
78                         while (true) {\r
79                                 int doneCounter = 0;\r
80                                 for (String taskId : idlist) {\r
81                                         AsyncExecutor engine = Configurator.getAsyncEngine(taskId);\r
82                                         JobStatus status = engine.getJobStatus(taskId);\r
83                                         System.out.println("Status for job: " + taskId + " "\r
84                                                         + status);\r
85 \r
86                                         if (status == JobStatus.FINISHED) {\r
87                                                 assertNotNull(taskId);\r
88                                                 System.out.println(taskId);\r
89                                                 // System.out.println(SubmissionManager.submittedTasks);\r
90                                                 // assertNotNull(SubmissionManager.getTask(taskId));\r
91                                                 Thread.sleep(200); // let buffers to be written\r
92                                                 ConfiguredExecutable<ClustalW> confclust = (ConfiguredExecutable<ClustalW>) engine\r
93                                                                 .getResults(taskId);\r
94                                                 assertNotNull(confclust);\r
95                                                 assertNotNull(confclust.getResults());\r
96                                                 doneCounter++;\r
97                                         }\r
98                                 }\r
99                                 if (doneCounter == numberOfExecutions) {\r
100                                         break;\r
101                                 }\r
102                         }\r
103                 } catch (ResultNotAvailableException e) {\r
104                         e.printStackTrace();\r
105                         fail(e.getMessage());\r
106                 } catch (InterruptedException e) {\r
107                         e.printStackTrace();\r
108                         fail(e.getMessage());\r
109                 }\r
110         }\r
111 \r
112         @Test(groups = { AllTestSuit.test_group_long  })\r
113         public void loadEngineRetrieveResultsOnce() {\r
114 \r
115                 Map<String, Boolean> idlist = new HashMap<String, Boolean>();\r
116                 Muscle muscle = new Muscle();\r
117                 muscle.setInput(AllTestSuit.test_input_real);\r
118                 muscle.setOutput("muscle.out");\r
119                 try {\r
120                         for (int i = 0; i < numberOfExecutions; i++) {\r
121                                 ConfiguredExecutable<Muscle> cmuscle = Configurator\r
122                                                 .configureExecutable(muscle,\r
123                                                                 Executable.ExecProvider.Local);\r
124                                 AsyncExecutor engine = Configurator.getAsyncEngine(cmuscle);\r
125                                 String jobId = engine.submitJob(cmuscle);\r
126                                 assertNotNull(jobId);\r
127                                 Thread.sleep(50);\r
128                                 assertNotNull(SubmissionManager.getTask(jobId));\r
129                                 assertTrue(idlist.put(jobId, false) == null);\r
130                         }\r
131                 } catch (JobSubmissionException e) {\r
132                         e.printStackTrace();\r
133                         fail(e.getLocalizedMessage());\r
134                 } catch (InterruptedException e) {\r
135                         e.printStackTrace();\r
136                         fail(e.getLocalizedMessage());\r
137                 }\r
138 \r
139                 assertEquals(idlist.size(), numberOfExecutions);\r
140                 // assertEquals(SubmissionManager.submittedTasks.size(), 20);\r
141 \r
142                 try {\r
143                         int doneCounter = 0;\r
144                         while (true) {\r
145                                 if (doneCounter == numberOfExecutions) {\r
146                                         break;\r
147                                 }\r
148                                 for (String taskId : idlist.keySet()) {\r
149                                         Thread.sleep(50); // slow checking down\r
150                                         AsyncExecutor engine = Configurator.getAsyncEngine(taskId);\r
151                                         JobStatus status = engine.getJobStatus(taskId);\r
152                                         System.out.println("Status for job: " + taskId + " "\r
153                                                         + status);\r
154 \r
155                                         if (status == JobStatus.FINISHED) {\r
156                                                 assertNotNull(taskId);\r
157                                                 if (idlist.get(taskId)) {\r
158                                                         continue;\r
159                                                 }\r
160                                                 System.out.println(taskId);\r
161                                                 // System.out.println(SubmissionManager.submittedTasks);\r
162                                                 // assertNotNull(SubmissionManager.getTask(taskId));\r
163                                                 Thread.sleep(100);// let the buffers to write things\r
164                                                 ConfiguredExecutable<ClustalW> confclust = (ConfiguredExecutable<ClustalW>) engine\r
165                                                                 .getResults(taskId);\r
166                                                 assertNotNull(confclust);\r
167                                                 assertNotNull(confclust.getResults());\r
168                                                 idlist.put(taskId, true);\r
169                                                 doneCounter++;\r
170                                         }\r
171                                 }\r
172                         }\r
173                 } catch (ResultNotAvailableException e) {\r
174                         e.printStackTrace();\r
175                         fail(e.getMessage());\r
176                 } catch (InterruptedException e) {\r
177                         e.printStackTrace();\r
178                         fail(e.getMessage());\r
179                 }\r
180         }\r
181 }\r