05f7cd02e3e2cf2ad265c6b8385bb5f7ecbad510
[jalview.git] / test / jalview / ws / rest / ShmmrRSBSService.java
1 /**
2  * 
3  */
4 package jalview.ws.rest;
5
6 import static org.junit.Assert.*;
7
8 import java.io.BufferedReader;
9 import java.io.IOException;
10 import java.util.ArrayList;
11 import java.util.Hashtable;
12 import java.util.List;
13 import java.util.Map;
14
15 import jalview.datamodel.AlignmentI;
16 import jalview.datamodel.AlignmentView;
17 import jalview.gui.AlignFrame;
18 import jalview.io.FileParse;
19 import jalview.ws.rest.InputType;
20 import jalview.ws.rest.params.SeqGroupIndexVector;
21
22 import org.junit.AfterClass;
23 import org.junit.BeforeClass;
24 import org.junit.Test;
25
26 /**
27  * @author jimp
28  * 
29  */
30 public class ShmmrRSBSService
31 {
32
33   @Test
34   public void testSeparatorListToArrayForRestServiceDescriptions()
35   {
36     assertTrue(
37             "separatorListToArray is faulty.",
38             RestServiceDescription.separatorListToArray(
39                     "foo=',',min='foo',max='1,2,3',fa=','", ",").length == 4);
40     assertTrue("separatorListToArray is faulty.",
41             RestServiceDescription.separatorListToArray(
42                     "minsize='2', sep=','", ",").length != 2); // probably should come as 2
43   }
44
45   @Test
46   public void testShmmrService()
47   {
48
49     assertTrue(
50             "Test Rsd Exchange using using default Shmmr service failed.",
51             testRsdExchange("Test using default Shmmr service",
52                     RestClient.makeShmmrRestClient().service));
53   }
54   @Test
55   public void testShmmrServiceDataprep() throws Exception
56   {
57     RestClient _rc = RestClient.makeShmmrRestClient();
58     assertNotNull(_rc);
59     AlignFrame alf = new jalview.io.FileLoader(false).LoadFileWaitTillLoaded("examples/testdata/smad.fa", jalview.io.FormatAdapter.FILE);
60     assertNotNull("Couldn't find test data.",alf);
61     alf.loadJalviewDataFile("examples/testdata/smad_groups.jva",
62             jalview.io.FormatAdapter.FILE, null, null);
63     assertTrue("Couldn't load the test data's annotation file (should be 5 groups but found "+alf.getViewport().getAlignment().getGroups().size()+").", alf.getViewport().getAlignment().getGroups().size()==5);
64     
65     RestClient rc = new RestClient(_rc.service, alf, true);
66     
67     
68     
69     assertNotNull("Couldn't creat RestClient job.",rc);
70     jalview.bin.Cache.initLogger();
71     RestJob rjb = new RestJob(0, new RestJobThread(rc),rc.av.getAlignment(),null);
72     rjb.setAlignmentForInputs(rc.service.getInputParams().values(), rc.av.getAlignment());
73     for (Map.Entry<String,InputType> e:rc.service.getInputParams().entrySet()) {
74       System.out.println("For Input '"+e.getKey()+":\n"+e.getValue().formatForInput(rjb).getContentLength());
75     }
76   }
77
78   private static boolean testRsdExchange(String desc, String servicestring)
79   {
80     try
81     {
82       RestServiceDescription newService = new RestServiceDescription(
83               servicestring);
84       if (!newService.isValid())
85       {
86         throw new Error("Failed to create service from '" + servicestring
87                 + "'.\n" + newService.getInvalidMessage());
88       }
89       return testRsdExchange(desc, newService);
90     } catch (Throwable x)
91     {
92       System.err.println("Failed for service (" + desc + "): "
93               + servicestring);
94       x.printStackTrace();
95       return false;
96     }
97   }
98
99   private static boolean testRsdExchange(String desc,
100           RestServiceDescription service)
101   {
102     try
103     {
104       String fromservicetostring = service.toString();
105       RestServiceDescription newService = new RestServiceDescription(
106               fromservicetostring);
107       if (!newService.isValid())
108       {
109         throw new Error("Failed to create service from '"
110                 + fromservicetostring + "'.\n"
111                 + newService.getInvalidMessage());
112       }
113
114       if (!service.equals(newService))
115       {
116         System.err.println("Failed for service (" + desc + ").");
117         System.err.println("Original service and parsed service differ.");
118         System.err.println("Original: " + fromservicetostring);
119         System.err.println("Parsed  : " + newService.toString());
120         return false;
121       }
122     } catch (Throwable x)
123     {
124       System.err.println("Failed for service (" + desc + "): "
125               + service.toString());
126       x.printStackTrace();
127       return false;
128     }
129     return true;
130   }
131
132 }