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