JAL-1338 note added #fridaycommits not actually connected with JAL-1138
[jalview.git] / test / jalview / ws / jabaws / MinJabawsClientTests.java
1 package jalview.ws.jabaws;
2
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.fail;
5
6 import java.util.ArrayList;
7 import java.util.List;
8 import java.util.function.Consumer;
9
10 import org.junit.Test;
11
12 import compbio.data.msa.MsaWS;
13 import compbio.data.msa.RegistryWS;
14 import compbio.data.sequence.FastaSequence;
15 import compbio.metadata.JobStatus;
16 import compbio.ws.client.Jws2Client;
17 import compbio.ws.client.Services;
18
19 public class MinJabawsClientTests {
20
21         /**
22          * simple test for the benefit of JAL-1338
23          * @throws Exception
24          */
25         @SuppressWarnings("rawtypes")
26         @Test
27         public void msaTest() throws Exception {
28                 String url;
29                 RegistryWS registry = Jws2Client
30                                 .connectToRegistry(url = "http://www.compbio.dundee.ac.uk/jabaws");
31                 if (registry != null) {
32
33                         MsaWS msaservice = null;
34                         for (Services service : registry.getSupportedServices()) {
35                                 if (service.equals(Services.ClustalOWS)) {
36                                         msaservice = (MsaWS) Jws2Client.connect(url, service);
37                                         if (msaservice != null) {
38                                                 break;
39                                         }
40                                 }
41                         }
42                         if (msaservice == null) {
43                                 fail("couldn't find a clustalO service on the public registry");
44                         }
45                         FastaSequence fsq = new FastaSequence("seqA",
46                                         "SESESESESESESESSESESSESESESESESESESESESEEEEEESSESESESESSSSESESESESESESE");
47                         List<FastaSequence> iseqs = new ArrayList<FastaSequence>();
48                         for (int i = 0; i < 9; i++) {
49                                 iseqs.add(new FastaSequence(fsq.getId() + i, fsq.getSequence()
50                                                 + fsq.getSequence().substring(i + 3, i + 3 + i)));
51                         }
52
53                         String jobid = msaservice.align(iseqs);
54                         if (jobid != null) {
55                                 JobStatus js = null;
56                                 do {
57                                         try {
58                                                 Thread.sleep(500);
59                                         } catch (InterruptedException q) {
60                                         }
61                                         ;
62                                         js = msaservice.getJobStatus(jobid);
63                                 } while (!js.equals(JobStatus.FAILED)
64                                                 && !js.equals(JobStatus.CANCELLED)
65                                                 && !js.equals(JobStatus.FINISHED));
66                                 assertEquals("Trial alignment failed. State was " + js.name(),
67                                                 js, JobStatus.FINISHED);
68                                 assertEquals(
69                                                 "Mismatch in number of input and result sequences - assume alignment service wasn't interacted with correctly",
70                                                 msaservice.getResult(jobid).getSequences().size(),
71                                                 iseqs.size());
72                                 msaservice.getResult(jobid).getSequences()
73                                                 .forEach(new Consumer<FastaSequence>() {
74                                                         @Override
75                                                         public void accept(FastaSequence t) {
76                                                                 System.out.println(">"+t.getId());
77                                                                 System.out.println(t.getFormattedFasta());
78                                                         }
79                                                 });
80                         }
81
82                 }
83         }
84 }