--- /dev/null
+package jalview.ws.jabaws;
+
+import static org.junit.Assert.*;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.function.Consumer;
+
+import jalview.ws.jws2.jabaws2.Jws2Instance;
+import jalview.ws.jws2.jabaws2.Jws2InstanceFactory;
+
+import org.junit.Test;
+
+import compbio.data.msa.Category;
+import compbio.data.msa.JABAService;
+import compbio.data.msa.MsaWS;
+import compbio.data.msa.RegistryWS;
+import compbio.data.sequence.FastaSequence;
+import compbio.metadata.JobStatus;
+import compbio.ws.client.Jws2Client;
+import compbio.ws.client.Services;
+
+public class MinJabawsClientTests {
+
+ @SuppressWarnings("rawtypes")
+ @Test
+ public void msaTest() throws Exception {
+ String url;
+ RegistryWS registry = Jws2Client
+ .connectToRegistry(url = "http://www.compbio.dundee.ac.uk/jabaws");
+ if (registry != null) {
+
+ MsaWS msaservice = null;
+ for (Services service : registry.getSupportedServices()) {
+ if (service.equals(Services.ClustalOWS)) {
+ msaservice = (MsaWS) Jws2Client.connect(url, service);
+ if (msaservice != null) {
+ break;
+ }
+ }
+ }
+ if (msaservice == null) {
+ fail("couldn't find a clustalO service on the public registry");
+ }
+ FastaSequence fsq = new FastaSequence("seqA",
+ "SESESESESESESESSESESSESESESESESESESESESEEEEEESSESESESESSSSESESESESESESE");
+ List<FastaSequence> iseqs = new ArrayList<FastaSequence>();
+ for (int i = 0; i < 9; i++) {
+ iseqs.add(new FastaSequence(fsq.getId() + i, fsq.getSequence()
+ + fsq.getSequence().substring(i + 3, i + 3 + i)));
+ }
+
+ String jobid = msaservice.align(iseqs);
+ if (jobid != null) {
+ JobStatus js = null;
+ do {
+ try {
+ Thread.sleep(500);
+ } catch (InterruptedException q) {
+ }
+ ;
+ js = msaservice.getJobStatus(jobid);
+ } while (!js.equals(JobStatus.FAILED)
+ && !js.equals(JobStatus.CANCELLED)
+ && !js.equals(JobStatus.FINISHED));
+ assertEquals("Trial alignment failed. State was " + js.name(),
+ js, JobStatus.FINISHED);
+ assertEquals(
+ "Mismatch in number of input and result sequences - assume alignment service wasn't interacted with correctly",
+ msaservice.getResult(jobid).getSequences().size(),
+ iseqs.size());
+ msaservice.getResult(jobid).getSequences()
+ .forEach(new Consumer<FastaSequence>() {
+ @Override
+ public void accept(FastaSequence t) {
+ System.out.println(">"+t.getId());
+ System.out.println(t.getFormattedFasta());
+ }
+ });
+ }
+
+ }
+ }
+}