From edaf3858072ec22ad8989f3319974a7685d40eda Mon Sep 17 00:00:00 2001 From: Fabio Sinibaldi Date: Wed, 25 May 2016 16:48:24 +0000 Subject: [PATCH] git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/data-transfer/data-transfer-library@128841 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../data/transfer/library/client/Client.java | 7 ++- .../transferers/TransfererBuilder.java | 45 +++++++++++++------ .../transfer/library/TestClientCalls.java | 12 ++--- .../data/transfer/library/TransfererTest.java | 29 ++++++++++-- 4 files changed, 68 insertions(+), 25 deletions(-) diff --git a/src/main/java/org/gcube/data/transfer/library/client/Client.java b/src/main/java/org/gcube/data/transfer/library/client/Client.java index 97553bd..8e02019 100644 --- a/src/main/java/org/gcube/data/transfer/library/client/Client.java +++ b/src/main/java/org/gcube/data/transfer/library/client/Client.java @@ -26,26 +26,29 @@ public class Client { config.register(JAXBElement.class); } - private String hostname; +// private String hostname; private WebTarget rootTarget; public Client(String hostname){ log.debug("Creating client for "+hostname); - this.hostname=hostname; + this.hostname=hostname+""; rootTarget= ClientBuilder.newClient(config).target(hostname).path("/data-transfer-service/").path(ServiceConstants.APPLICATION_PATH); } public TransferCapabilities getCapabilties(){ + log.debug("Getting capabilities to {} ",hostname); return rootTarget.path(ServiceConstants.CAPABILTIES_SERVLET_NAME).request(MediaType.APPLICATION_XML_TYPE).get(TransferCapabilities.class); } public TransferTicket submit(TransferRequest request){ + log.debug("Sending request {} to {}",request,hostname); return rootTarget.path(ServiceConstants.REQUESTS_SERVLET_NAME).request(MediaType.APPLICATION_XML_TYPE).post(Entity.entity(request,MediaType.APPLICATION_XML),TransferTicket.class); } public TransferTicket getTransferStatus(String transferId){ + log.debug("Requesting transfer status [id = {}, hostname={}]",transferId,hostname); return rootTarget.path(ServiceConstants.STATUS_SERVLET_NAME).path(transferId).request(MediaType.APPLICATION_XML).get(TransferTicket.class); } } diff --git a/src/main/java/org/gcube/data/transfer/library/transferers/TransfererBuilder.java b/src/main/java/org/gcube/data/transfer/library/transferers/TransfererBuilder.java index e388338..77076d9 100644 --- a/src/main/java/org/gcube/data/transfer/library/transferers/TransfererBuilder.java +++ b/src/main/java/org/gcube/data/transfer/library/transferers/TransfererBuilder.java @@ -1,36 +1,55 @@ package org.gcube.data.transfer.library.transferers; +import java.net.MalformedURLException; +import java.net.URL; + import lombok.extern.slf4j.Slf4j; import org.gcube.data.transfer.library.caches.CapabilitiesCache; import org.gcube.data.transfer.library.faults.HostingNodeNotFoundException; import org.gcube.data.transfer.library.faults.ServiceNotFoundException; import org.gcube.data.transfer.library.faults.UnreachableNodeException; -import org.gcube.data.transfer.library.utils.Utils; -import org.gcube.data.transfer.model.ServiceConstants; import org.gcube.data.transfer.model.TransferCapabilities; @Slf4j public class TransfererBuilder { private static final int timeout=10*1000; - - - - public static Transferer getTransfererByHost(String host) throws UnreachableNodeException, ServiceNotFoundException{ - log.debug("Get transferer by Host "+host); - if(!Utils.pingURL(host, timeout)) throw new UnreachableNodeException("No response from host in "+timeout); - if(!Utils.pingURL(host+"REST-API/"+ServiceConstants.APPLICATION_PATH, timeout)) throw new ServiceNotFoundException("No DT Service found @ "+host+"REST-API/"+ServiceConstants.APPLICATION_PATH); - log.debug("Host is ok, getting targetCapabilities"); - TransferCapabilities cap=CapabilitiesCache.getInstance().getObject(host); - return new HTTPTransferer(cap); + + + //e.g. http://pc-fabio.isti.cnr.it:8080/data-transfer-service/gcube/service + + public static Transferer getTransfererByHost(String endpoint) throws UnreachableNodeException, ServiceNotFoundException{ + log.debug("Get transferer by Host "+endpoint); + try{ + URL url=new URL(endpoint); + + String hostname=url.getProtocol()+"://"+url.getHost()+":"+url.getPort(); + //TODO Implement checks + + // if(!Utils.pingURL(host, timeout)) throw new UnreachableNodeException("No response from host in "+timeout); + // String finalHost=host; + // if(!finalHost.endsWith(ServiceConstants.APPLICATION_PATH)){ + // // adjust host + // finalHost=finalHost+(host.endsWith("/")?"":"/")+"data-transfer-service"+ServiceConstants.APPLICATION_PATH; + // } + // + // + // if(!Utils.pingURL(finalHost, timeout)) throw new ServiceNotFoundException("No DT Service found @ "+finalHost); + // log.debug("Host is ok, getting targetCapabilities"); + TransferCapabilities cap=CapabilitiesCache.getInstance().getObject(hostname); + return new HTTPTransferer(cap); + }catch(MalformedURLException e){ + throw new ServiceNotFoundException(e); + } } public static Transferer getTransfererByhostingNodeId(String hostId) throws HostingNodeNotFoundException, UnreachableNodeException, ServiceNotFoundException{ String hostname=retrieveHostnameByNodeId(hostId); return getTransfererByHost(hostname); } - + private static String retrieveHostnameByNodeId(String nodeId)throws HostingNodeNotFoundException{ + //TODO implement endpoint retrieval return null; } } diff --git a/src/test/java/org/gcube/data/transfer/library/TestClientCalls.java b/src/test/java/org/gcube/data/transfer/library/TestClientCalls.java index 35e9b3b..dd98308 100644 --- a/src/test/java/org/gcube/data/transfer/library/TestClientCalls.java +++ b/src/test/java/org/gcube/data/transfer/library/TestClientCalls.java @@ -15,19 +15,19 @@ import org.gcube.data.transfer.model.TransferTicket.Status; import org.gcube.data.transfer.model.options.HttpDownloadOptions; import org.gcube.data.transfer.model.settings.HttpDownloadSettings; import org.glassfish.jersey.client.ClientConfig; -import org.junit.Before; +import org.junit.BeforeClass; import org.junit.Test; public class TestClientCalls { - String hostname="http://pc-fabio.isti.cnr.it:8080"; - String scope="/gcube/devNext"; - Client client; + static String hostname="http://pc-fabio.isti.cnr.it:8080"; + static String scope="/gcube/devNext"; + static Client client; - @Before - public void init(){ + @BeforeClass + public static void init(){ ScopeProvider.instance.set(scope); client=new Client(hostname); } diff --git a/src/test/java/org/gcube/data/transfer/library/TransfererTest.java b/src/test/java/org/gcube/data/transfer/library/TransfererTest.java index 42b4628..0b4f792 100644 --- a/src/test/java/org/gcube/data/transfer/library/TransfererTest.java +++ b/src/test/java/org/gcube/data/transfer/library/TransfererTest.java @@ -1,20 +1,24 @@ package org.gcube.data.transfer.library; +import java.io.File; +import java.io.FileNotFoundException; import java.net.MalformedURLException; import org.gcube.common.scope.api.ScopeProvider; +import org.gcube.contentmanagement.blobstorage.transport.backend.RemoteBackendException; import org.gcube.data.transfer.library.faults.FailedTransferException; import org.gcube.data.transfer.library.faults.InitializationException; import org.gcube.data.transfer.library.faults.InvalidSourceException; import org.gcube.data.transfer.library.faults.ServiceNotFoundException; import org.gcube.data.transfer.library.faults.SourceNotSetException; import org.gcube.data.transfer.library.faults.UnreachableNodeException; +import org.gcube.data.transfer.library.utils.StorageUtils; import org.junit.BeforeClass; import org.junit.Test; public class TransfererTest { - static String hostname="http://pc-fabio.isti.cnr.it:8080"; + static String hostname="http://pc-fabio.isti.cnr.it:8080/data-transfer-service/gcube/service"; static String scope="/gcube/devNext"; static DataTransferClient client; @@ -34,14 +38,31 @@ public class TransfererTest { @Test public void httpUrl() throws MalformedURLException, InvalidSourceException, SourceNotSetException, FailedTransferException, InitializationException{ - String link="https://www.dropbox.com/s/giqsbgmlkk9zklc/COMA%20-%20Last%20Aim.mp3?dl=0"; + String link="http://goo.gl/oLP7zG"; System.out.println(client.httpSource(link)); } @Test - public void storage() throws InvalidSourceException, SourceNotSetException, FailedTransferException, InitializationException{ + public void storage() throws InvalidSourceException, SourceNotSetException, FailedTransferException, InitializationException, RemoteBackendException, FileNotFoundException{ String toUpload="/home/fabio/Downloads/Incantesimi3_5.doc"; - System.out.println(client.storageId(toUpload)); + System.out.println(client.storageId(StorageUtils.putOntoStorage(new File(toUpload)))); + } + + @Test + public void wrongStorage() throws InvalidSourceException, SourceNotSetException, FailedTransferException, InitializationException{ + System.out.println(client.storageId("13245780t")); + } + + @Test + public void wrongLocal() throws InvalidSourceException, SourceNotSetException, FailedTransferException, InitializationException{ + String localFile="/home/fabio/Downloads/123045689.mp3"; + System.out.println(client.localFile(localFile)); + } + + @Test + public void wrongUrl() throws MalformedURLException, InvalidSourceException, SourceNotSetException, FailedTransferException, InitializationException{ + String link="https://www.dropbox.com/s/789023450"; + System.out.println(client.httpSource(link)); } }