Merge branch 'Jalview-JS/develop' into merge_js_develop
[jalview.git] / test / jalview / ws / rest / ShmmrRSBSService.java
1 /*
2  * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3  * Copyright (C) $$Year-Rel$$ The Jalview Authors
4  * 
5  * This file is part of Jalview.
6  * 
7  * Jalview is free software: you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License 
9  * as published by the Free Software Foundation, either version 3
10  * of the License, or (at your option) any later version.
11  *  
12  * Jalview is distributed in the hope that it will be useful, but 
13  * WITHOUT ANY WARRANTY; without even the implied warranty 
14  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
15  * PURPOSE.  See the GNU General Public License for more details.
16  * 
17  * You should have received a copy of the GNU General Public License
18  * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
19  * The Jalview Authors are detailed in the 'AUTHORS' file.
20  */
21 package jalview.ws.rest;
22
23 import static org.testng.AssertJUnit.assertNotNull;
24 import static org.testng.AssertJUnit.assertTrue;
25
26 import jalview.gui.AlignFrame;
27 import jalview.gui.JvOptionPane;
28 import jalview.ws.rest.clientdefs.ShmrRestClient;
29
30 import java.util.Map;
31
32 import org.testng.annotations.BeforeClass;
33 import org.testng.annotations.Test;
34
35 /**
36  * @author jimp
37  * 
38  */
39 public class ShmmrRSBSService
40 {
41
42   @BeforeClass(alwaysRun = true)
43   public void setUpJvOptionPane()
44   {
45     JvOptionPane.setInteractiveMode(false);
46     JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
47   }
48
49   @Test(groups = { "Functional" })
50   public void testShmmrService()
51   {
52
53     assertTrue(
54             "Test Rsd Exchange using using default Shmmr service failed.",
55             testRsdExchange("Test using default Shmmr service",
56                     ShmrRestClient.makeShmmrRestClient().service));
57   }
58
59   @Test(groups = { "Functional" })
60   public void testShmmrServiceDataprep() throws Exception
61   {
62     RestClient _rc = ShmrRestClient.makeShmmrRestClient();
63     assertNotNull(_rc);
64     AlignFrame alf = new jalview.io.FileLoader(false)
65             .LoadFileWaitTillLoaded("examples/testdata/smad.fa",
66                     jalview.io.DataSourceType.FILE);
67     assertNotNull("Couldn't find test data.", alf);
68     alf.loadJalviewDataFile("examples/testdata/smad_groups.jva",
69             jalview.io.DataSourceType.FILE, null, null);
70     assertTrue(
71             "Couldn't load the test data's annotation file (should be 5 groups but found "
72                     + alf.getViewport().getAlignment().getGroups().size()
73                     + ").", alf.getViewport().getAlignment().getGroups()
74                     .size() == 5);
75
76     RestClient rc = new RestClient(_rc.service, alf, true);
77
78     assertNotNull("Couldn't creat RestClient job.", rc);
79     jalview.bin.Cache.initLogger();
80     RestJob rjb = new RestJob(0, new RestJobThread(rc),
81             rc.av.getAlignment(), null);
82     rjb.setAlignmentForInputs(rc.service.getInputParams().values(),
83             rc.av.getAlignment());
84     for (Map.Entry<String, InputType> e : rc.service.getInputParams()
85             .entrySet())
86     {
87       System.out.println("For Input '" + e.getKey() + ":\n"
88               + e.getValue().formatForInput(rjb).getContentLength());
89     }
90   }
91
92   private static boolean testRsdExchange(String desc, String servicestring)
93   {
94     try
95     {
96       RestServiceDescription newService = new RestServiceDescription(
97               servicestring);
98       if (!newService.isValid())
99       {
100         throw new Error("Failed to create service from '" + servicestring
101                 + "'.\n" + newService.getInvalidMessage());
102       }
103       return testRsdExchange(desc, newService);
104     } catch (Throwable x)
105     {
106       System.err.println("Failed for service (" + desc + "): "
107               + servicestring);
108       x.printStackTrace();
109       return false;
110     }
111   }
112
113   private static boolean testRsdExchange(String desc,
114           RestServiceDescription service)
115   {
116     try
117     {
118       String fromservicetostring = service.toString();
119       RestServiceDescription newService = new RestServiceDescription(
120               fromservicetostring);
121       if (!newService.isValid())
122       {
123         throw new Error("Failed to create service from '"
124                 + fromservicetostring + "'.\n"
125                 + newService.getInvalidMessage());
126       }
127
128       if (!service.equals(newService))
129       {
130         System.err.println("Failed for service (" + desc + ").");
131         if (fromservicetostring.equals(newService.toString()))
132         {
133           System.err.println(
134                   "Description strings are equivalent: fault during RestServiceDescription.equals()");
135           return false;
136         }
137         System.err.println("Original service and parsed service differ.");
138         System.err.println("Original: " + fromservicetostring);
139         System.err.println("Parsed  : " + newService.toString());
140         return false;
141       }
142     } catch (Throwable x)
143     {
144       System.err.println("Failed for service (" + desc + "): "
145               + service.toString());
146       x.printStackTrace();
147       return false;
148     }
149     return true;
150   }
151
152 }