JAL-975 JAL-951 test class for viewing layout for JABAWS services
[jalview.git] / test / jalview / ws / gui / Jws2ParamView.java
1 package jalview.ws.gui;
2
3 import static org.junit.Assert.assertTrue;
4 import jalview.gui.WsJobParameters;
5 import jalview.ws.jws2.JabaPreset;
6 import jalview.ws.jws2.Jws2Discoverer;
7 import jalview.ws.jws2.jabaws2.Jws2Instance;
8
9 import java.awt.BorderLayout;
10 import java.awt.event.WindowEvent;
11 import java.awt.event.WindowListener;
12 import java.util.ArrayList;
13 import java.util.Iterator;
14 import java.util.List;
15 import java.util.Vector;
16
17 import javax.swing.JFrame;
18 import javax.swing.JPanel;
19
20 import org.junit.Test;
21
22 import compbio.metadata.Option;
23 import compbio.metadata.Parameter;
24 import compbio.metadata.Preset;
25 import compbio.metadata.PresetManager;
26
27 public class Jws2ParamView
28 {
29   /**
30    * test servers
31    */
32   public static String[] serviceUrls = new String[]
33   { "http://localhost:8080/jabaws" };
34
35   /**
36    * which services to test
37    */
38   public static List<String> serviceTests = new ArrayList<String>();
39
40   /**
41    * which presets to test for services
42    */
43   public static List<String> presetTests = new ArrayList<String>();
44   static
45   {
46     serviceTests.add("AAConWS".toLowerCase());
47   }
48
49   @Test
50   public void testJws2Gui()
51   {
52     jalview.ws.jws2.Jws2Discoverer disc = jalview.ws.jws2.Jws2Discoverer
53             .getDiscoverer();
54     int p = 0;
55     String svcurls="";
56     Vector<String> services = new Vector<String>();
57     for (String url : serviceUrls)
58     {
59       svcurls+=url+"; ";
60       services.add(url);
61     }
62     ;
63     Jws2Discoverer.setServiceUrls(services);
64
65     try
66     {
67       disc.run();
68     } catch (Exception e)
69     {
70       System.err.println("Aborting. Problem discovering services. Tried "+svcurls);
71       e.printStackTrace();
72       return;
73     }
74     assertTrue("Failed to discover any services at ",
75             disc.getServices().size() > 0);
76     Jws2Instance lastserv = null;
77     Iterator<String> presetEnum = presetTests.iterator();
78     for (Jws2Instance service : disc.getServices())
79     {
80       lastserv = service;
81       if (serviceTests.size() == 0
82               || serviceTests.contains(service.serviceType.toLowerCase()))
83       {
84         if (lastserv != null)
85         {
86           List<Preset> prl = null;
87           Preset pr = null;
88           if (presetEnum.hasNext())
89           {
90             PresetManager prman = lastserv.getPresets();
91             if (prman != null)
92             {
93               pr = prman.getPresetByName(presetEnum.next());
94               if (pr == null)
95               {
96                 // just grab the last preset.
97                 prl = prman.getPresets();
98               }
99             }
100           }
101           else
102           {
103             PresetManager prman = lastserv.getPresets();
104             if (prman != null)
105             {
106               prl = prman.getPresets();
107             }
108           }
109           Iterator<Preset> en = (prl == null) ? null : prl.iterator();
110           while (en != null && en.hasNext())
111           {
112             if (en != null)
113             {
114               if (!en.hasNext())
115               {
116                 en = prl.iterator();
117               }
118               pr = en.next();
119             }
120             {
121               System.out.println("Testing opts dupes for "
122                       + lastserv.getUri() + " : "
123                       + lastserv.getActionText() + ":" + pr.getName());
124               List<Option> rg = lastserv.getRunnerConfig().getOptions();
125               for (Option o : rg)
126               {
127                 try
128                 {
129                   Option cpy = jalview.ws.jws2.ParameterUtils.copyOption(o);
130                 } catch (Exception e)
131                 {
132                   System.err.println("Failed to copy " + o.getName());
133                   e.printStackTrace();
134                 } catch (Error e)
135                 {
136                   System.err.println("Failed to copy " + o.getName());
137                   e.printStackTrace();
138                 }
139               }
140             }
141             {
142               System.out.println("Testing param dupes:");
143               List<Parameter> rg = lastserv.getRunnerConfig()
144                       .getParameters();
145               for (Parameter o : rg)
146               {
147                 try
148                 {
149                   Parameter cpy = jalview.ws.jws2.ParameterUtils
150                           .copyParameter(o);
151                 } catch (Exception e)
152                 {
153                   System.err.println("Failed to copy " + o.getName());
154                   e.printStackTrace();
155                 } catch (Error e)
156                 {
157                   System.err.println("Failed to copy " + o.getName());
158                   e.printStackTrace();
159                 }
160               }
161             }
162             {
163               System.out.println("Testing param write:");
164               List<String> writeparam = null, readparam = null;
165               try
166               {
167                 writeparam = jalview.ws.jws2.ParameterUtils
168                         .writeParameterSet(
169                                 pr.getArguments(lastserv.getRunnerConfig()),
170                                 " ");
171                 System.out.println("Testing param read :");
172                 List<Option> pset = jalview.ws.jws2.ParameterUtils
173                         .processParameters(writeparam,
174                                 lastserv.getRunnerConfig(), " ");
175                 readparam = jalview.ws.jws2.ParameterUtils
176                         .writeParameterSet(pset, " ");
177                 Iterator<String> o = pr.getOptions().iterator(), s = writeparam
178                         .iterator(), t = readparam.iterator();
179                 boolean failed = false;
180                 while (s.hasNext() && t.hasNext())
181                 {
182                   String on = o.next(), sn = s.next(), st = t.next();
183                   if (!sn.equals(st))
184                   {
185                     System.out.println("Original was " + on
186                             + " Phase 1 wrote " + sn + "\tPhase 2 wrote "
187                             + st);
188                     failed = true;
189                   }
190                 }
191                 if (failed)
192                 {
193                   System.out.println("Original parameters:\n"
194                           + pr.getOptions());
195                   System.out.println("Wrote parameters in first set:\n"
196                           + writeparam);
197                   System.out.println("Wrote parameters in second set:\n"
198                           + readparam);
199
200                 }
201               } catch (Exception e)
202               {
203                 e.printStackTrace();
204               }
205             }
206             WsJobParameters pgui = new WsJobParameters(lastserv,
207                     new JabaPreset(lastserv, pr));
208             JFrame jf = new JFrame("Parameters for "
209                     + lastserv.getActionText());
210             JPanel cont = new JPanel(new BorderLayout());
211             pgui.validate();
212             cont.setPreferredSize(pgui.getPreferredSize());
213             cont.add(pgui, BorderLayout.CENTER);
214             jf.setLayout(new BorderLayout());
215             jf.add(cont, BorderLayout.CENTER);
216             jf.validate();
217             final Thread thr = Thread.currentThread();
218             jf.addWindowListener(new WindowListener()
219             {
220
221               public void windowActivated(WindowEvent e)
222               {
223                 // TODO Auto-generated method stub
224
225               }
226
227               public void windowClosed(WindowEvent e)
228               {
229               }
230
231               public void windowClosing(WindowEvent e)
232               {
233                 thr.interrupt();
234
235               }
236
237               public void windowDeactivated(WindowEvent e)
238               {
239                 // TODO Auto-generated method stub
240
241               }
242
243               public void windowDeiconified(WindowEvent e)
244               {
245                 // TODO Auto-generated method stub
246
247               }
248
249               public void windowIconified(WindowEvent e)
250               {
251                 // TODO Auto-generated method stub
252
253               }
254
255               public void windowOpened(WindowEvent e)
256               {
257                 // TODO Auto-generated method stub
258
259               }
260
261             });
262             jf.setVisible(true);
263             boolean inter = false;
264             while (!inter)
265             {
266               try
267               {
268                 Thread.sleep(10000);
269               } catch (Exception e)
270               {
271                 inter = true;
272               }
273               ;
274             }
275             jf.dispose();
276           }
277         }
278       }
279     }
280   }
281 }