From 9385457e9e28c0d61ae79b5c51d06d06fd274fdd Mon Sep 17 00:00:00 2001 From: Luca Frosini Date: Mon, 14 Nov 2016 15:33:35 +0000 Subject: [PATCH] refs #5748: Add "Add To Context API" in Resource Registry Publisher https://support.d4science.org/issues/5748 git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/information-system/resource-registry-publisher@134121 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../proxy/ResourceRegistryPublisherImpl.java | 14 +- .../publisher/MultiContextTest.java | 180 ++++++++++++++++++ .../publisher/ScopedTest.java | 22 ++- 3 files changed, 204 insertions(+), 12 deletions(-) create mode 100644 src/test/java/org/gcube/informationsystem/resourceregistry/publisher/MultiContextTest.java diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/publisher/proxy/ResourceRegistryPublisherImpl.java b/src/main/java/org/gcube/informationsystem/resourceregistry/publisher/proxy/ResourceRegistryPublisherImpl.java index 8f2cbc8..4181059 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/publisher/proxy/ResourceRegistryPublisherImpl.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/publisher/proxy/ResourceRegistryPublisherImpl.java @@ -195,12 +195,10 @@ public class ResourceRegistryPublisherImpl implements ResourceRegistryPublisher protected HttpURLConnection getConnection(URL url, HTTPMETHOD method) throws Exception { - /* - * if(method!=HTTPMETHOD.POST && - * httpInputs.getUrlParameters()!=null){ - */ - url = new URL(url + "?" + httpInputs.getUrlParameters()); - // } + + if(httpInputs.getUrlParameters()!=null){ + url = new URL(url + "?" + httpInputs.getUrlParameters()); + } HttpURLConnection connection = (HttpURLConnection) url .openConnection(); @@ -576,6 +574,8 @@ public class ResourceRegistryPublisherImpl implements ResourceRegistryPublisher StringWriter stringWriter = new StringWriter(); stringWriter.append(PATH_SEPARATOR); + stringWriter.append(EntityPath.ENTITY_PATH_PART); + stringWriter.append(PATH_SEPARATOR); stringWriter.append(EntityPath.ADD_PATH_PART); stringWriter.append(PATH_SEPARATOR); stringWriter.append(EntityPath.RESOURCE_PATH_PART); @@ -615,6 +615,8 @@ public class ResourceRegistryPublisherImpl implements ResourceRegistryPublisher StringWriter stringWriter = new StringWriter(); stringWriter.append(PATH_SEPARATOR); + stringWriter.append(EntityPath.ENTITY_PATH_PART); + stringWriter.append(PATH_SEPARATOR); stringWriter.append(EntityPath.ADD_PATH_PART); stringWriter.append(PATH_SEPARATOR); stringWriter.append(EntityPath.FACET_PATH_PART); diff --git a/src/test/java/org/gcube/informationsystem/resourceregistry/publisher/MultiContextTest.java b/src/test/java/org/gcube/informationsystem/resourceregistry/publisher/MultiContextTest.java new file mode 100644 index 0000000..6e5dea6 --- /dev/null +++ b/src/test/java/org/gcube/informationsystem/resourceregistry/publisher/MultiContextTest.java @@ -0,0 +1,180 @@ +/** + * + */ +package org.gcube.informationsystem.resourceregistry.publisher; + +import java.net.URI; +import java.net.URL; +import java.util.Calendar; +import java.util.UUID; + +import org.gcube.informationsystem.impl.entity.facet.AccessPointFacetImpl; +import org.gcube.informationsystem.impl.entity.facet.CPUFacetImpl; +import org.gcube.informationsystem.impl.entity.facet.EventFacetImpl; +import org.gcube.informationsystem.impl.entity.facet.LicenseFacetImpl; +import org.gcube.informationsystem.impl.entity.facet.MemoryFacetImpl; +import org.gcube.informationsystem.impl.entity.facet.NetworkingFacetImpl; +import org.gcube.informationsystem.impl.entity.facet.ServiceStateFacetImpl; +import org.gcube.informationsystem.impl.entity.facet.SoftwareFacetImpl; +import org.gcube.informationsystem.impl.entity.resource.EServiceImpl; +import org.gcube.informationsystem.impl.entity.resource.HostingNodeImpl; +import org.gcube.informationsystem.impl.relation.IsIdentifiedByImpl; +import org.gcube.informationsystem.impl.relation.consistsof.HasPersistentMemoryImpl; +import org.gcube.informationsystem.impl.relation.consistsof.HasVolatileMemoryImpl; +import org.gcube.informationsystem.impl.relation.isrelatedto.HostsImpl; +import org.gcube.informationsystem.model.entity.Facet; +import org.gcube.informationsystem.model.entity.facet.AccessPointFacet; +import org.gcube.informationsystem.model.entity.facet.CPUFacet; +import org.gcube.informationsystem.model.entity.facet.EventFacet; +import org.gcube.informationsystem.model.entity.facet.LicenseFacet; +import org.gcube.informationsystem.model.entity.facet.MemoryFacet; +import org.gcube.informationsystem.model.entity.facet.MemoryFacet.MemoryUnit; +import org.gcube.informationsystem.model.entity.facet.NetworkingFacet; +import org.gcube.informationsystem.model.entity.facet.ServiceStateFacet; +import org.gcube.informationsystem.model.entity.facet.SoftwareFacet; +import org.gcube.informationsystem.model.entity.resource.EService; +import org.gcube.informationsystem.model.entity.resource.HostingNode; +import org.gcube.informationsystem.model.relation.IsIdentifiedBy; +import org.gcube.informationsystem.model.relation.consistsof.HasPersistentMemory; +import org.gcube.informationsystem.model.relation.consistsof.HasVolatileMemory; +import org.gcube.informationsystem.model.relation.isrelatedto.Hosts; +import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException; +import org.gcube.informationsystem.resourceregistry.client.proxy.ResourceRegistryClient; +import org.gcube.informationsystem.resourceregistry.client.proxy.ResourceRegistryClientFactory; +import org.gcube.informationsystem.resourceregistry.publisher.proxy.ResourceRegistryPublisher; +import org.gcube.informationsystem.resourceregistry.publisher.proxy.ResourceRegistryPublisherFactory; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author Luca Frosini (ISTI - CNR) + * + */ +public class MultiContextTest { + + private static Logger logger = LoggerFactory + .getLogger(MultiContextTest.class); + + protected ResourceRegistryPublisher resourceRegistryPublisher; + protected ResourceRegistryClient resourceRegistryClient; + + @BeforeClass + public static void beforeClass() throws Exception { + ScopedTest.beforeClass(); + } + + public MultiContextTest(){ + resourceRegistryPublisher = ResourceRegistryPublisherFactory.create(); + resourceRegistryClient = ResourceRegistryClientFactory.create(); + } + + @Test + public void testCreateEServiceHostingNode() throws Exception { + EService eService = new EServiceImpl(); + + SoftwareFacet softwareFacet = new SoftwareFacetImpl(); + softwareFacet.setGroup("InformationSystem"); + softwareFacet.setName("resource-registry"); + softwareFacet.setVersion("1.1.0"); + IsIdentifiedBy isIdentifiedBy = new IsIdentifiedByImpl(eService, softwareFacet, null); + eService.addFacet(isIdentifiedBy); + + AccessPointFacet accessPointFacet = new AccessPointFacetImpl(); + accessPointFacet.setEndpoint(new URI("http://localhost")); + accessPointFacet.setEntryName("port1"); + eService.addFacet(accessPointFacet); + + EventFacet eventFacet = new EventFacetImpl(); + eventFacet.setDate(Calendar.getInstance().getTime()); + eventFacet.setValue("Created"); + eService.addFacet(eventFacet); + + ServiceStateFacet serviceStateFacet = new ServiceStateFacetImpl(); + serviceStateFacet.setValue("ready"); + eService.addFacet(serviceStateFacet); + + LicenseFacet licenseFacet = new LicenseFacetImpl(); + licenseFacet.setName("EUPL"); + licenseFacet.setTextURL(new URL("https://joinup.ec.europa.eu/community/eupl/og_page/european-union-public-licence-eupl-v11")); + eService.addFacet(licenseFacet); + + EService createEService = resourceRegistryPublisher.createResource(EService.class, eService); + logger.debug("Created : {}", createEService); + + /* ----- */ + + HostingNode hostingNode = new HostingNodeImpl(); + + NetworkingFacet networkingFacet = new NetworkingFacetImpl(); + networkingFacet.setIPAddress("146.48.87.183"); + networkingFacet.setHostName("pc-frosini.isti.cnr.it"); + networkingFacet.setDomainName("isti.cnr.it"); + networkingFacet.setMask("255.255.248.0"); + networkingFacet.setBroadcastAddress("146.48.87.255"); + + IsIdentifiedBy isIdentifiedByHNNF = new IsIdentifiedByImpl(hostingNode, networkingFacet, null); + hostingNode.addFacet(isIdentifiedByHNNF); + + + CPUFacet cpuFacet = new CPUFacetImpl(); + cpuFacet.setClockSpeed("1 GHz"); + cpuFacet.setModel("Opteron"); + cpuFacet.setVendor("AMD"); + hostingNode.addFacet(cpuFacet); + + + MemoryFacet ram = new MemoryFacetImpl(); + ram.setSize(8); + ram.setUnit(MemoryUnit.GB); + ram.setUsed(2); + + HasVolatileMemory hasVolatileMemory = + new HasVolatileMemoryImpl(hostingNode, ram, null); + hostingNode.addFacet(hasVolatileMemory); + + + MemoryFacet disk = new MemoryFacetImpl(); + disk.setSize(256); + disk.setUnit(MemoryUnit.GB); + disk.setUsed(120); + + HasPersistentMemory hasPersistentMemory = + new HasPersistentMemoryImpl(hostingNode, disk, null); + hostingNode.addFacet(hasPersistentMemory); + + Hosts hosts = new HostsImpl(hostingNode, createEService, null); + hostingNode.attachResource(hosts); + + HostingNode createdHN = resourceRegistryPublisher.createResource(HostingNode.class, hostingNode); + logger.debug("Created : {}", createdHN); + + + logger.debug("Changing token to test add to scope"); + ScopedTest.setContext(ScopedTest.SECOND_TOKEN); + + UUID uuid = createdHN.getHeader().getUUID(); + boolean addedToContext = resourceRegistryPublisher.addResourceToContext(uuid); + Assert.assertTrue(addedToContext); + + UUID eServiceUUID = createEService.getHeader().getUUID(); + try { + resourceRegistryClient.getResource(eServiceUUID); + }catch(ResourceRegistryException e){ + logger.debug("Resource with {} Not Found as Expected", uuid.toString()); + } + + + /* + boolean deleted = resourceRegistryPublisher.deleteResource(createdHN); + Assert.assertTrue(deleted); + + deleted = resourceRegistryPublisher.deleteResource(createEService); + Assert.assertTrue(deleted); + */ + + } + +} diff --git a/src/test/java/org/gcube/informationsystem/resourceregistry/publisher/ScopedTest.java b/src/test/java/org/gcube/informationsystem/resourceregistry/publisher/ScopedTest.java index ba8bdc3..0d4fcee 100644 --- a/src/test/java/org/gcube/informationsystem/resourceregistry/publisher/ScopedTest.java +++ b/src/test/java/org/gcube/informationsystem/resourceregistry/publisher/ScopedTest.java @@ -28,7 +28,11 @@ public class ScopedTest { protected static final String PROPERTIES_FILENAME = "config.properties"; private static final String TOKEN_VARNAME = "TOKEN"; - private static final String TOKEN; + public static final String TOKEN; + + private static final String SECOND_TOKEN_VARNAME = "SECOND_TOKEN"; + public static final String SECOND_TOKEN; + static { Properties properties = new Properties(); @@ -42,19 +46,25 @@ public class ScopedTest { } TOKEN = properties.getProperty(TOKEN_VARNAME); + SECOND_TOKEN = properties.getProperty(SECOND_TOKEN_VARNAME); } - private static String getCurrentScope() throws ObjectNotFound, Exception{ - AuthorizationEntry authorizationEntry = Constants.authorizationService().get(TOKEN); + public static String getCurrentScope(String token) throws ObjectNotFound, Exception{ + AuthorizationEntry authorizationEntry = Constants.authorizationService().get(token); String context = authorizationEntry.getContext(); - logger.info("Context of token {} is {}", TOKEN, context); + logger.info("Context of token {} is {}", token, context); return context; } + + public static void setContext(String token) throws ObjectNotFound, Exception{ + SecurityTokenProvider.instance.set(token); + ScopeProvider.instance.set(getCurrentScope(token)); + } + @BeforeClass public static void beforeClass() throws Exception{ - SecurityTokenProvider.instance.set(TOKEN); - ScopeProvider.instance.set(getCurrentScope()); + setContext(TOKEN); } @AfterClass