709f2c5f08e49f04f1df774899f14364d70aa7d2
[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
29 import java.util.Map;
30
31 import org.testng.annotations.BeforeClass;
32 import org.testng.annotations.Test;
33
34 /**
35  * @author jimp
36  * 
37  */
38 public class ShmmrRSBSService
39 {
40
41   @BeforeClass(alwaysRun = true)
42   public void setUpJvOptionPane()
43   {
44     JvOptionPane.setInteractiveMode(false);
45     JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
46   }
47
48   @Test(groups = { "Functional" })
49   public void testShmmrService()
50   {
51
52     assertTrue(
53             "Test Rsd Exchange using using default Shmmr service failed.",
54             testRsdExchange("Test using default Shmmr service",
55                     RestClient.makeShmmrRestClient().service));
56   }
57
58   @Test(groups = { "Functional" })
59   public void testShmmrServiceDataprep() throws Exception
60   {
61     RestClient _rc = RestClient.makeShmmrRestClient();
62     assertNotNull(_rc);
63     AlignFrame alf = new jalview.io.FileLoader(false)
64             .LoadFileWaitTillLoaded("examples/testdata/smad.fa",
65                     jalview.io.DataSourceType.FILE);
66     assertNotNull("Couldn't find test data.", alf);
67     alf.loadJalviewDataFile("examples/testdata/smad_groups.jva",
68             jalview.io.DataSourceType.FILE, null, null);
69     assertTrue(
70             "Couldn't load the test data's annotation file (should be 5 groups but found "
71                     + alf.getViewport().getAlignment().getGroups().size()
72                     + ").", alf.getViewport().getAlignment().getGroups()
73                     .size() == 5);
74
75     RestClient rc = new RestClient(_rc.service, alf, true);
76
77     assertNotNull("Couldn't creat RestClient job.", rc);
78     jalview.bin.Cache.initLogger();
79     RestJob rjb = new RestJob(0, new RestJobThread(rc),
80             rc.av.getAlignment(), null);
81     rjb.setAlignmentForInputs(rc.service.getInputParams().values(),
82             rc.av.getAlignment());
83     for (Map.Entry<String, InputType> e : rc.service.getInputParams()
84             .entrySet())
85     {
86       System.out.println("For Input '" + e.getKey() + ":\n"
87               + e.getValue().formatForInput(rjb).getContentLength());
88     }
89   }
90
91   private static boolean testRsdExchange(String desc, String servicestring)
92   {
93     try
94     {
95       RestServiceDescription newService = new RestServiceDescription(
96               servicestring);
97       if (!newService.isValid())
98       {
99         throw new Error("Failed to create service from '" + servicestring
100                 + "'.\n" + newService.getInvalidMessage());
101       }
102       return testRsdExchange(desc, newService);
103     } catch (Throwable x)
104     {
105       System.err.println("Failed for service (" + desc + "): "
106               + servicestring);
107       x.printStackTrace();
108       return false;
109     }
110   }
111
112   private static boolean testRsdExchange(String desc,
113           RestServiceDescription service)
114   {
115     try
116     {
117       String fromservicetostring = service.toString();
118       RestServiceDescription newService = new RestServiceDescription(
119               fromservicetostring);
120       if (!newService.isValid())
121       {
122         throw new Error("Failed to create service from '"
123                 + fromservicetostring + "'.\n"
124                 + newService.getInvalidMessage());
125       }
126
127       if (!service.equals(newService))
128       {
129         System.err.println("Failed for service (" + desc + ").");
130         System.err.println("Original service and parsed service differ.");
131         System.err.println("Original: " + fromservicetostring);
132         System.err.println("Parsed  : " + newService.toString());
133         return false;
134       }
135     } catch (Throwable x)
136     {
137       System.err.println("Failed for service (" + desc + "): "
138               + service.toString());
139       x.printStackTrace();
140       return false;
141     }
142     return true;
143   }
144
145 }