diff options
Diffstat (limited to 'src/test/java')
5 files changed, 679 insertions, 0 deletions
diff --git a/src/test/java/org/openecomp/vid/asdc/Base64Encoder.java b/src/test/java/org/openecomp/vid/asdc/Base64Encoder.java new file mode 100644 index 0000000..4c945d2 --- /dev/null +++ b/src/test/java/org/openecomp/vid/asdc/Base64Encoder.java @@ -0,0 +1,42 @@ +/*- + * ============LICENSE_START======================================================= + * VID ASDC Client + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.vid.asdc; + +import java.util.Base64; + +/** + * The Class Base64Encoder. + */ +public class Base64Encoder { + + /** + * The main method. + * + * @param args the arguments + */ + public static void main(String[] args) { + if (args.length != 2) throw new RuntimeException("Usage: Base64Encoder <user> <pass>"); + + final String user = args[0]; + final String pass = args[1]; + System.out.println(Base64.getEncoder().encodeToString((user + ":" + pass).getBytes())); + } +} diff --git a/src/test/java/org/openecomp/vid/asdc/BaseClientTest.java b/src/test/java/org/openecomp/vid/asdc/BaseClientTest.java new file mode 100644 index 0000000..f564544 --- /dev/null +++ b/src/test/java/org/openecomp/vid/asdc/BaseClientTest.java @@ -0,0 +1,323 @@ +/*- + * ============LICENSE_START======================================================= + * VID ASDC Client + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.vid.asdc; + +import java.util.Collection; +import java.util.Collections; +import java.util.Map; +import java.util.UUID; + +import javax.ws.rs.NotFoundException; + +import org.hamcrest.core.IsEqual; +import org.junit.Assert; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ErrorCollector; + +import org.openecomp.vid.asdc.beans.Artifact; +import org.openecomp.vid.asdc.beans.Resource; +import org.openecomp.vid.asdc.beans.Service; +import org.openecomp.vid.asdc.beans.Service.DistributionStatus; +import org.openecomp.vid.asdc.beans.tosca.Group; +import org.openecomp.vid.asdc.beans.tosca.Input; +import org.openecomp.vid.asdc.beans.tosca.NodeTemplate; +import org.openecomp.vid.asdc.beans.tosca.ToscaCsar; +import org.openecomp.vid.asdc.beans.tosca.ToscaModel; + +/** + * The Class BaseClientTest. + */ +public class BaseClientTest { + + /** The collector. */ + @Rule + public ErrorCollector collector = new ErrorCollector(); + + /** + * Run resource tests. + * + * @param client the client + * @throws AsdcCatalogException the asdc catalog exception + */ + protected void runResourceTests(AsdcClient client) throws AsdcCatalogException { + final Collection<Resource> resources = client.getResources(); + + collector.checkThat("getResources() returned nothing", resources.isEmpty(), IsEqual.equalTo(false)); + + final Resource resource = resources.iterator().next(); + + testResource(resource); + + final Resource thisResource = client.getResource(UUID.fromString(resource.getUuid())); + + collector.checkThat(thisResource, IsEqual.equalTo(resource)); + + for (Resource aResource : resources) { + if (aResource.getArtifacts() != null && !aResource.getArtifacts().isEmpty()) { + + final Artifact artifact = aResource.getArtifacts().iterator().next(); + + testArtifact(artifact); + + final UUID resourceUuid = UUID.fromString(aResource.getUuid()); + final UUID artifactUuid = UUID.fromString(artifact.getArtifactUUID()); + final Artifact thisArtifact = client.getResourceArtifact(resourceUuid, artifactUuid); + + collector.checkThat(artifact, IsEqual.equalTo(thisArtifact)); + } + } + + try { + final Collection<Resource> badResources = client.getResources(Collections.singletonMap("category", new String[] {"Bad Resources"})); + + for (Resource badResource : badResources) { + collector.checkThat(badResource.getCategory(), IsEqual.equalTo("Bad Resources")); + } + } catch (NotFoundException e) { + //No resources of this category were found + } + + try { + final Collection<Resource> reallyBadResources = client.getResources(Collections.singletonMap("subCategory", new String[] {"Really Bad Resources"})); + + for (Resource reallyBadResource : reallyBadResources) { + collector.checkThat(reallyBadResource.getSubCategory(), IsEqual.equalTo("Really Bad Resources")); + } + } catch (NotFoundException e) { + //No resources of this subcategory were found + } + + final ToscaCsar toscaCsar = client.getResourceToscaModel(UUID.fromString(resource.getUuid())); + + testToscaCsar(toscaCsar); + } + + /** + * Run service tests. + * + * @param client the client + * @throws AsdcCatalogException the asdc catalog exception + */ + protected void runServiceTests(AsdcClient client) throws AsdcCatalogException { + final Collection<Service> services = client.getServices(); + + collector.checkThat("getServices() returned nothing", services.isEmpty(), IsEqual.equalTo(false)); + + final Service service = services.iterator().next(); + + testService(service); + + final Service thisService = client.getService(UUID.fromString(service.getUuid())); + + collector.checkThat(thisService, IsEqual.equalTo(service)); + + for (Service aService : services) { + if (aService.getArtifacts() != null && ! aService.getArtifacts().isEmpty()) { + final Artifact artifact = aService.getArtifacts().iterator().next(); + + testArtifact(artifact); + + final UUID serviceUuid = UUID.fromString(aService.getUuid()); + final UUID artifactUuid = UUID.fromString(artifact.getArtifactUUID()); + final Artifact thisArtifact = client.getServiceArtifact(serviceUuid, artifactUuid); + + collector.checkThat(artifact, IsEqual.equalTo(thisArtifact)); + break; + } + } + + try { + final Collection<Service> distributedServices = client.getServices(Collections.singletonMap("distributionStatus", new String[] {"DISTRIBUTED"})); + + for (Service distributedService : distributedServices) { + collector.checkThat(distributedService.getDistributionStatus(), IsEqual.equalTo(DistributionStatus.DISTRIBUTED)); + } + } catch (NotFoundException e) { + //No services of this distributionStatus were found + } + + try { + final Collection<Service> badServices = client.getServices(Collections.singletonMap("category", new String[] {"Bad Services"})); + + for (Service badService : badServices) { + collector.checkThat(badService.getCategory(), IsEqual.equalTo("Bad Services")); + } + } catch (NotFoundException e) { + //No services of this category were found + } + + final ToscaCsar toscaCsar = client.getServiceToscaModel(UUID.fromString(service.getUuid())); + + testToscaCsar(toscaCsar); + } + + /** + * Test service. + * + * @param service the service + */ + private void testService(Service service) { + service.getArtifacts(); + service.getCategory(); + service.getDistributionStatus(); + service.getInvariantUUID(); + service.getLastUpdaterUserId(); + service.getLastUpdaterFullName(); + service.getLifecycleState(); + service.getName(); + service.getResources(); + service.getToscaModelURL(); + service.getUuid(); + service.getVersion(); + } + + /** + * Test resource. + * + * @param resource the resource + */ + private void testResource(Resource resource) { + resource.getArtifacts(); + resource.getCategory(); + resource.getInvariantUUID(); + resource.getLastUpdaterUserId(); + resource.getLastUpdaterFullName(); + resource.getLifecycleState(); + resource.getName(); + resource.getResources(); + resource.getResourceType(); + resource.getSubCategory(); + resource.getToscaModel(); + resource.getToscaModelURL(); + resource.getToscaResourceName(); + resource.getUuid(); + resource.getVersion(); + } + + /** + * Test artifact. + * + * @param artifact the artifact + */ + private void testArtifact(Artifact artifact) { + artifact.getArtifactChecksum(); + artifact.getArtifactDescription(); + artifact.getArtifactName(); + artifact.getArtifactTimeout(); + artifact.getArtifactType(); + artifact.getArtifactURL(); + artifact.getArtifactUUID(); + artifact.getArtifactVersion(); + artifact.getGeneratedFromUUID(); + } + + /** + * Test tosca csar. + * + * @param toscaCsar the tosca csar + */ + private void testToscaCsar(ToscaCsar toscaCsar) { + testToscaModel(toscaCsar.getParent()); + + for (ToscaModel childModel : toscaCsar.getChildren()) { + testToscaModel(childModel); + } + } + + /** + * Test tosca model. + * + * @param toscaModel the tosca model + */ + private void testToscaModel(ToscaModel toscaModel) { + + toscaModel.getDescription(); + toscaModel.getMetadata().getCategory(); + toscaModel.getMetadata().getDescription(); + toscaModel.getMetadata().getInvariantUUID(); + toscaModel.getMetadata().getName(); + toscaModel.getMetadata().getType(); + toscaModel.getMetadata().gettemplate_name(); + toscaModel.getMetadata().getUUID(); + toscaModel.getMetadata().getVersion(); + toscaModel.getMetadata().isServiceEcompNaming(); + toscaModel.getMetadata().isServiceHoming(); + + if (!toscaModel.gettopology_template().getInputs().isEmpty()) { + final Input input = toscaModel.gettopology_template().getInputs().values().iterator().next(); + input.getDefault(); + input.getDescription(); + input.getType(); + input.toString(); + } + + if (!toscaModel.gettopology_template().getnode_templates().isEmpty()) { + final NodeTemplate nodeTemplate = toscaModel.gettopology_template().getnode_templates().values().iterator().next(); + nodeTemplate.getMetadata(); + nodeTemplate.getProperties(); + nodeTemplate.getRequirements(); + nodeTemplate.getType(); + } + + if (!toscaModel.gettopology_template().getGroups().isEmpty()) { + final Group group = toscaModel.gettopology_template().getGroups().values().iterator().next(); + group.getMembers(); + group.getMetadata(); + group.getType(); + } + + if (!toscaModel.getImports().isEmpty()) { + for (Map<String, Map<String, String>> imports : toscaModel.getImports()) { + imports.values().iterator().next().get("file"); + } + } + + toscaModel.gettopology_template().getsubstitution_mappings().getnode_type(); + + if (!toscaModel.gettopology_template().getsubstitution_mappings().getCapabilities().isEmpty()) { + toscaModel.gettopology_template().getsubstitution_mappings().getCapabilities(); + } + + toscaModel.gettosca_definitions_version(); + } + + /** + * Test try catch asdc catalog exception. + */ + @Test + public void testTryCatchAsdcCatalogException() { + try { + throw new AsdcCatalogException("testing"); + } catch (AsdcCatalogException e) { + Assert.assertEquals("testing", e.getMessage()); + } + + final Exception cause = new Exception(); + + try { + throw new AsdcCatalogException("testing", cause); + } catch (AsdcCatalogException e) { + Assert.assertEquals("testing", e.getMessage()); + Assert.assertEquals(cause, e.getCause()); + } + } +} diff --git a/src/test/java/org/openecomp/vid/asdc/FindServices.java b/src/test/java/org/openecomp/vid/asdc/FindServices.java new file mode 100644 index 0000000..2eb325a --- /dev/null +++ b/src/test/java/org/openecomp/vid/asdc/FindServices.java @@ -0,0 +1,127 @@ +package org.openecomp.vid.asdc; + +import java.io.IOException; +import java.io.InputStream; +import java.net.URI; +import java.net.URISyntaxException; +import java.util.Collection; +import java.util.Collections; +import java.util.Map.Entry; +import java.util.Properties; +import java.util.UUID; + +import javax.ws.rs.client.Client; +import javax.ws.rs.client.ClientBuilder; + +import org.openecomp.vid.asdc.AsdcCatalogException; +import org.openecomp.vid.asdc.AsdcClient; +import org.openecomp.vid.asdc.beans.Service; +import org.openecomp.vid.asdc.beans.tosca.Group; +import org.openecomp.vid.asdc.beans.tosca.NodeTemplate; +import org.openecomp.vid.asdc.beans.tosca.ToscaCsar; +import org.openecomp.vid.asdc.beans.tosca.ToscaModel; +import org.openecomp.vid.asdc.rest.RestfulAsdcClient; + +/** + * The Class FindServices. + */ +public class FindServices { + + /** + * The main method. + * + * @param args the arguments + * @throws IOException Signals that an I/O exception has occurred. + * @throws URISyntaxException the URI syntax exception + * @throws AsdcCatalogException the asdc catalog exception + */ + public static void main(String[] args) throws IOException, URISyntaxException, AsdcCatalogException { + + final InputStream propertiesFile = FindServices.class.getClassLoader().getResourceAsStream("asdc.properties"); + + final Properties properties = new Properties(); + properties.load(propertiesFile); + + final String protocol = properties.getProperty("protocol", "http"); + + final Client restClient = ClientBuilder.newClient(); + final URI uri = new URI(protocol + "://" + properties.getProperty("host", "localhost") + ":" + properties.getProperty("port", "80") + "/"); + final String auth = properties.getProperty("auth"); + + final AsdcClient client = new RestfulAsdcClient.Builder(restClient, uri).auth(auth).build(); + + try { + final Collection<Service> services = client.getServices(Collections.singletonMap("distributionStatus", new String[] {"DISTRIBUTED"})); + + for (Service service : services) { + + final ToscaCsar toscaCsar; + + try { + toscaCsar = client.getServiceToscaModel(UUID.fromString(service.getUuid())); + } catch (NullPointerException e) { + //System.out.println(service.getUuid() + " has a bad tosca metadata entry"); + continue; + } catch (Throwable t) { + System.out.println(t.getMessage()); + continue; + } + + System.out.println(service.getUuid() + ", " + service.getName()); + + if (checkToscaModelForVnf(toscaCsar.getParent())) { + for (ToscaModel vnfModel : toscaCsar.getChildren()) { + if (checkToscaModelForVfModule(vnfModel)) { + System.out.println("******" + service); + } + } + } + } + } catch (AsdcCatalogException e) { + throw e; + } + } + + /** + * Check tosca model for vf module. + * + * @param model the model + * @return true, if successful + */ + private static boolean checkToscaModelForVfModule(ToscaModel model) { + + for (Entry<String, Group> component : model.gettopology_template().getGroups().entrySet()) { + final Group group = component.getValue(); + final String type = group.getType(); + + if (type.startsWith("com.att.d2.groups.VfModule")) { + final String rawValue = group.getProperties().get("volume_group"); + if (Boolean.valueOf(rawValue)) { + return true; + } + } + } + + return false; + } + + /** + * Check tosca model for vnf. + * + * @param model the model + * @return true, if successful + */ + private static boolean checkToscaModelForVnf(ToscaModel model) { + + for (Entry<String, NodeTemplate> component: model.gettopology_template().getnode_templates().entrySet()) { + final NodeTemplate nodeTemplate = component.getValue(); + final String type = nodeTemplate.getType(); + + if (type.startsWith("com.att.d2.resource.vf")) { + return true; + } + } + + return false; + } +} diff --git a/src/test/java/org/openecomp/vid/asdc/InMemoryClientTest.java b/src/test/java/org/openecomp/vid/asdc/InMemoryClientTest.java new file mode 100644 index 0000000..c083934 --- /dev/null +++ b/src/test/java/org/openecomp/vid/asdc/InMemoryClientTest.java @@ -0,0 +1,80 @@ +/*- + * ============LICENSE_START======================================================= + * VID ASDC Client + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.vid.asdc; + +import java.io.IOException; +import java.io.InputStream; +import java.net.URISyntaxException; + +import org.codehaus.jackson.map.ObjectMapper; +import org.json.JSONObject; +import org.json.JSONTokener; +import org.junit.Before; +import org.junit.Test; + +import org.openecomp.vid.asdc.memory.InMemoryAsdcClient; + +/** + * The Class InMemoryClientTest. + */ +public class InMemoryClientTest extends BaseClientTest { + + /** The catalog. */ + private JSONObject catalog; + + /** + * Sets the up. + * + * @throws URISyntaxException the URI syntax exception + * @throws IOException Signals that an I/O exception has occurred. + */ + @Before + public void setUp() throws URISyntaxException, IOException { + final InputStream asdcCatalogFile = getClass().getClassLoader().getResourceAsStream("catalog.json"); + + final JSONTokener tokener = new JSONTokener(asdcCatalogFile); + + catalog = new JSONObject(tokener); + } + + /** + * Test resources. + * + * @throws AsdcCatalogException the asdc catalog exception + */ + @Test + public void testResources() throws AsdcCatalogException { + + runResourceTests(new InMemoryAsdcClient.Builder().catalog(catalog).mapper(new ObjectMapper()).build()); + } + + /** + * Test services. + * + * @throws AsdcCatalogException the asdc catalog exception + * @throws URISyntaxException the URI syntax exception + */ + @Test + public void testServices() throws AsdcCatalogException, URISyntaxException { + + runServiceTests(new InMemoryAsdcClient.Builder().catalog(catalog).build()); + } +} diff --git a/src/test/java/org/openecomp/vid/asdc/RestfulClientTest.java b/src/test/java/org/openecomp/vid/asdc/RestfulClientTest.java new file mode 100644 index 0000000..b51dd4e --- /dev/null +++ b/src/test/java/org/openecomp/vid/asdc/RestfulClientTest.java @@ -0,0 +1,107 @@ +/*- + * ============LICENSE_START======================================================= + * VID ASDC Client + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.vid.asdc; + +import java.io.IOException; +import java.io.InputStream; +import java.net.URI; +import java.net.URISyntaxException; +import java.util.Properties; + +import javax.net.ssl.HostnameVerifier; +import javax.net.ssl.SSLSession; +import javax.ws.rs.client.Client; +import javax.ws.rs.client.ClientBuilder; + +import org.junit.Before; +import org.junit.Ignore; +import org.junit.Test; +import org.openecomp.vid.asdc.rest.RestfulAsdcClient; + +/** + * The Class RestfulClientTest. + */ +@Ignore +public class RestfulClientTest extends BaseClientTest { + + /** The rest client. */ + private Client restClient; + + /** The uri. */ + private URI uri; + + /** The properties. */ + private Properties properties; + + /** The auth. */ + private String auth; + + /** + * Sets the up. + * + * @throws URISyntaxException the URI syntax exception + * @throws IOException Signals that an I/O exception has occurred. + */ + @Before + public void setUp() throws URISyntaxException, IOException { + final InputStream propertiesFile = getClass().getClassLoader().getResourceAsStream("asdc.properties"); + + properties = new Properties(); + properties.load(propertiesFile); + + final String protocol = properties.getProperty("protocol", "http"); + + restClient = ClientBuilder.newBuilder() + .hostnameVerifier(new HostnameVerifier() { + + @Override + public boolean verify(String arg0, SSLSession arg1) { + return true; + } + }) + .build(); + uri = new URI(protocol + "://" + properties.getProperty("host", "localhost") + ":" + properties.getProperty("port", "80") + "/"); + auth = properties.getProperty("auth"); + } + + /** + * Test resources. + * + * @throws AsdcCatalogException the asdc catalog exception + */ + @Test + public void testResources() throws AsdcCatalogException { + + runResourceTests(new RestfulAsdcClient.Builder(restClient, uri).auth(auth).build()); + } + + /** + * Test services. + * + * @throws AsdcCatalogException the asdc catalog exception + * @throws URISyntaxException the URI syntax exception + */ + @Test + public void testServices() throws AsdcCatalogException, URISyntaxException { + + runServiceTests(new RestfulAsdcClient.Builder(restClient, uri).auth(auth).build()); + } +} |