JWS-61 test demonstrating compound option value problem with JABAWS client
[jabaws.git] / testsrc / compbio / ws / client / TestAAConWS.java
1 package compbio.ws.client;\r
2 \r
3 import static org.testng.Assert.assertEquals;\r
4 import static org.testng.Assert.assertNotNull;\r
5 import static org.testng.Assert.fail;\r
6 import static org.testng.Assert.assertTrue;\r
7 import java.io.File;\r
8 import java.io.FileInputStream;\r
9 import java.io.FileNotFoundException;\r
10 import java.io.IOException;\r
11 import java.net.ConnectException;\r
12 import java.util.List;\r
13 \r
14 import javax.xml.ws.WebServiceException;\r
15 \r
16 import org.testng.annotations.BeforeTest;\r
17 import org.testng.annotations.Test;\r
18 \r
19 import compbio.data.msa.JABAService;\r
20 import compbio.data.msa.SequenceAnnotation;\r
21 import compbio.data.sequence.ConservationMethod;\r
22 import compbio.data.sequence.FastaSequence;\r
23 import compbio.data.sequence.ScoreManager;\r
24 import compbio.data.sequence.SequenceUtil;\r
25 import compbio.metadata.AllTestSuit;\r
26 import compbio.metadata.JobSubmissionException;\r
27 import compbio.metadata.LimitExceededException;\r
28 import compbio.metadata.Option;\r
29 import compbio.metadata.Preset;\r
30 import compbio.metadata.PresetManager;\r
31 import compbio.metadata.ResultNotAvailableException;\r
32 import compbio.metadata.RunnerConfig;\r
33 import compbio.metadata.UnsupportedRuntimeException;\r
34 import compbio.metadata.WrongParameterException;\r
35 import compbio.runner.conservation.AACon;\r
36 import compbio.util.SysPrefs;\r
37 \r
38 public class TestAAConWS {\r
39 \r
40         SequenceAnnotation<AACon> msaws;\r
41 \r
42         @BeforeTest(groups = {AllTestSuit.test_group_webservices})\r
43         void initConnection() {\r
44                 /*\r
45                  * URL url = null; try { url = new\r
46                  * URL("http://localhost:8080/jabaws/AAConWS?wsdl"); } catch\r
47                  * (MalformedURLException e) { e.printStackTrace();\r
48                  * fail(e.getLocalizedMessage()); } String namespace =\r
49                  * "http://msa.data.compbio/01/12/2010/"; QName qname = new\r
50                  * QName(namespace, "AAConWS"); Service serv = Service.create(url,\r
51                  * qname); msaws = serv.getPort(new QName(namespace, "AAConWSPort"),\r
52                  * Annotation.class);\r
53                  */try {\r
54                         JABAService client = Jws2Client.connect(\r
55                                         "http://localhost:8080/jabaws", Services.AAConWS);\r
56                         msaws = (SequenceAnnotation<AACon>) client;\r
57                 } catch (ConnectException e) {\r
58                         e.printStackTrace();\r
59                         fail(e.getMessage());\r
60                 } catch (WebServiceException e) {\r
61                         e.printStackTrace();\r
62                         fail(e.getMessage());\r
63                 }\r
64         }\r
65 \r
66         @Test(groups = {AllTestSuit.test_group_webservices})\r
67         public void testAnalize() throws FileNotFoundException, IOException {\r
68 \r
69                 /*\r
70                  * MsaWS msaws = serv.getPort(new QName(\r
71                  * "http://msa.data.compbio/01/01/2010/", "ClustalWSPort"),\r
72                  * MsaWS.class);\r
73                  */\r
74                 // Annotation<AACon> msaws = serv.getPort(new QName(namespace,\r
75                 // "ClustalWSPort"), Annotation.class);\r
76 \r
77                 // List<FastaSequence> fsl = SequenceUtil.readFasta(new FileInputStream(\r
78                 // AAConTester.test_alignment_input));\r
79 \r
80                 String CURRENT_DIRECTORY = SysPrefs.getCurrentDirectory()\r
81                                 + File.separator;\r
82 \r
83                 List<FastaSequence> fsl = SequenceUtil.readFasta(new FileInputStream(\r
84                                 CURRENT_DIRECTORY + "testsrc" + File.separator + "testdata"\r
85                                                 + File.separator + "TO1381.fasta.aln"));\r
86 \r
87                 try {\r
88                         System.out.println("Pres: " + msaws.getPresets().getPresets());\r
89                         String jobId = msaws.analize(fsl);\r
90                         System.out.println("J: " + jobId);\r
91                         ScoreManager result = msaws.getAnnotation(jobId);\r
92                         assertNotNull(result);\r
93                         assertEquals(result.asSet().size(), 1);\r
94 \r
95                         assertEquals(result.asSet().iterator().next().getMethod(),\r
96                                         ConservationMethod.SHENKIN.toString());\r
97                         List<Float> scores = result.asSet().iterator().next().getScores();\r
98                         assertNotNull(scores);\r
99                         assertEquals(scores.size(), 568);\r
100 \r
101                         // Using presets\r
102                         PresetManager<AACon> presets = msaws.getPresets();\r
103                         jobId = msaws.presetAnalize(fsl,\r
104                                         presets.getPresetByName("Quick conservation"));\r
105                         result = msaws.getAnnotation(jobId);\r
106                         assertNotNull(result);\r
107                         assertEquals(result.asSet().size(), 13);\r
108 \r
109                         jobId = msaws.presetAnalize(fsl,\r
110                                         presets.getPresetByName("Slow conservation"));\r
111                         result = msaws.getAnnotation(jobId);\r
112                         assertNotNull(result);\r
113                         assertEquals(result.asSet().size(), 5);\r
114 \r
115                         jobId = msaws.presetAnalize(fsl,\r
116                                         presets.getPresetByName("Complete conservation"));\r
117                         result = msaws.getAnnotation(jobId);\r
118                         assertNotNull(result);\r
119                         assertEquals(result.asSet().size(), 18);\r
120 \r
121                 } catch (UnsupportedRuntimeException e) {\r
122                         e.printStackTrace();\r
123                         fail(e.getMessage());\r
124                 } catch (LimitExceededException e) {\r
125                         e.printStackTrace();\r
126                         fail(e.getMessage());\r
127                 } catch (JobSubmissionException e) {\r
128                         e.printStackTrace();\r
129                         fail(e.getMessage());\r
130                 } catch (ResultNotAvailableException e) {\r
131                         e.printStackTrace();\r
132                         fail(e.getMessage());\r
133                 } catch (WrongParameterException e) {\r
134                         e.printStackTrace();\r
135                         fail(e.getMessage());\r
136                 }\r
137 \r
138         }\r
139         @Test(groups = {AllTestSuit.test_group_webservices})\r
140         public void testRecoverArgsForPreset() throws Exception {\r
141                 PresetManager<AACon> presets = msaws.getPresets();\r
142                 for (Preset<AACon> preset:presets.getPresets())\r
143                 {\r
144                         List<Option<AACon>> args = preset.getArguments(msaws.getRunnerOptions());\r
145                         List opts = preset.getOptions();\r
146                         assertTrue(args.size()>=opts.size(),"Couldn't recover all Option items for preset "+preset.getName());\r
147                 }\r
148         }\r
149         @Test(groups = {AllTestSuit.test_group_webservices})\r
150         public void testPresetAnalize() throws FileNotFoundException, IOException {\r
151 \r
152                 String CURRENT_DIRECTORY = SysPrefs.getCurrentDirectory()\r
153                                 + File.separator;\r
154 \r
155                 List<FastaSequence> fsl = SequenceUtil.readFasta(new FileInputStream(\r
156                                 CURRENT_DIRECTORY + "testsrc" + File.separator + "testdata"\r
157                                                 + File.separator + "TO1381.fasta.aln"));\r
158 \r
159                 try {\r
160                         System.out.println("Pres: " + msaws.getPresets().getPresets());\r
161 \r
162                         // Using presets\r
163                         PresetManager<AACon> presets = msaws.getPresets();\r
164                         String jobId = msaws.presetAnalize(fsl,\r
165                                         presets.getPresetByName("Quick conservation"));\r
166                         ScoreManager result = msaws.getAnnotation(jobId);\r
167                         assertNotNull(result);\r
168                         assertEquals(result.asSet().size(), 13);\r
169 \r
170                         jobId = msaws.presetAnalize(fsl,\r
171                                         presets.getPresetByName("Slow conservation"));\r
172                         result = msaws.getAnnotation(jobId);\r
173                         assertNotNull(result);\r
174                         assertEquals(result.asSet().size(), 5);\r
175 \r
176                         jobId = msaws.presetAnalize(fsl,\r
177                                         presets.getPresetByName("Complete conservation"));\r
178                         result = msaws.getAnnotation(jobId);\r
179                         assertNotNull(result);\r
180                         assertEquals(result.asSet().size(), 18);\r
181 \r
182                 } catch (UnsupportedRuntimeException e) {\r
183                         e.printStackTrace();\r
184                         fail(e.getMessage());\r
185                 } catch (LimitExceededException e) {\r
186                         e.printStackTrace();\r
187                         fail(e.getMessage());\r
188                 } catch (JobSubmissionException e) {\r
189                         e.printStackTrace();\r
190                         fail(e.getMessage());\r
191                 } catch (ResultNotAvailableException e) {\r
192                         e.printStackTrace();\r
193                         fail(e.getMessage());\r
194                 } catch (WrongParameterException e) {\r
195                         e.printStackTrace();\r
196                         fail(e.getMessage());\r
197                 }\r
198 \r
199         }\r
200 \r
201         @Test(groups = {AllTestSuit.test_group_webservices})\r
202         public void testCustomAnalize() throws FileNotFoundException, IOException {\r
203 \r
204                 String CURRENT_DIRECTORY = SysPrefs.getCurrentDirectory()\r
205                                 + File.separator;\r
206 \r
207                 List<FastaSequence> fsl = SequenceUtil.readFasta(new FileInputStream(\r
208                                 CURRENT_DIRECTORY + "testsrc" + File.separator + "testdata"\r
209                                                 + File.separator + "TO1381.fasta.aln"));\r
210 \r
211                 // Using options\r
212                 RunnerConfig<AACon> options = msaws.getRunnerOptions();\r
213                 // System.out.println(options.getArguments());\r
214 \r
215                 try {\r
216                         options.getArgument("Calculation method").setDefaultValue("SMERFS");\r
217                         // options.getArgument("SMERFS Column Scoring Method")\r
218                         // .setDefaultValue("MAX_SCORE");\r
219                         // options.getArgument("SMERFS Gap Threshhold").setDefaultValue("1");\r
220                         String jobId = msaws.customAnalize(fsl, options.getArguments());\r
221                         ScoreManager result = msaws.getAnnotation(jobId);\r
222                         assertNotNull(result);\r
223                         assertEquals(result.asSet().size(), 1);\r
224                         assertEquals(result.asSet().iterator().next().getScores().get(0),\r
225                                         0.698f);\r
226 \r
227                         options.getArgument("Calculation method").setDefaultValue("SMERFS");\r
228                         options.removeArgument("Normalize");\r
229                         System.out.println(options);\r
230                         jobId = msaws.customAnalize(fsl, options.getArguments());\r
231                         result = msaws.getAnnotation(jobId);\r
232                         assertNotNull(result);\r
233                         assertEquals(result.asSet().size(), 1);\r
234                         assertEquals(result.asSet().iterator().next().getScores().get(0),\r
235                                         0.401f);\r
236 \r
237                 } catch (WrongParameterException e) {\r
238                         e.printStackTrace();\r
239                         fail(e.getMessage());\r
240                 } catch (UnsupportedRuntimeException e) {\r
241                         e.printStackTrace();\r
242                         fail(e.getMessage());\r
243                 } catch (LimitExceededException e) {\r
244                         e.printStackTrace();\r
245                         fail(e.getMessage());\r
246                 } catch (JobSubmissionException e) {\r
247                         e.printStackTrace();\r
248                         fail(e.getMessage());\r
249                 } catch (ResultNotAvailableException e) {\r
250                         e.printStackTrace();\r
251                         fail(e.getMessage());\r
252                 }\r
253         }\r
254 }\r