From: Seshu-Kumar-M Date: Fri, 6 Oct 2017 12:31:35 +0000 (+0800) Subject: UT for the BPMN flow X-Git-Tag: v1.1.0~181 X-Git-Url: https://gerrit.onap.org/r/gitweb?a=commitdiff_plain;h=cce429aeb66f99bf86cc0da596b1c051c082be5c;p=so.git UT for the BPMN flow IssueId: SO-191 Change-Id: I167a7e96f4fd3a857a6c3e679dda132fc8a7f720 Signed-off-by: Seshu-Kumar-M --- diff --git a/asdc-controller/pom.xml b/asdc-controller/pom.xml index fa4538c19c..e8dfe9f107 100644 --- a/asdc-controller/pom.xml +++ b/asdc-controller/pom.xml @@ -1,149 +1,155 @@ - - 4.0.0 - - org.openecomp.so - so - 1.1.0-SNAPSHOT - - - org.openecomp.so - asdc-controller - asdc-controller - ASDC CLient and Controller - war - - - ${project.artifactId}-${project.version} - - - maven-war-plugin - 2.4 - - WebContent - false - true - - - - - - - - org.codehaus.jackson - jackson-mapper-asl - 1.9.13 - - - org.mockito - mockito-all - 1.10.19 - test - - - org.openecomp.so - mso-catalog-db - ${project.version} - - - - org.jboss.spec.javax.ejb - jboss-ejb-api_3.2_spec - 1.0.0.Final - provided - - - org.jboss.ejb3 - jboss-ejb3-ext-api - 2.2.0.Final - provided - - - - javax.servlet - javax.servlet-api - 3.1.0 - test - - - - - - org.apache.httpcomponents - httpclient - 4.4.1 - compile - - - org.apache.httpcomponents - httpclient - - - - - - org.openecomp.sdc.sdc-distribution-client - sdc-distribution-client - 1.1.32-SNAPSHOT - - - org.slf4j - slf4j-log4j12 - - - - - - - org.openecomp.sdc.sdc-tosca - sdc-tosca - 1.1.32-SNAPSHOT - - - - - org.apache.httpcomponents - httpmime - 4.5 - - - - org.openecomp.so - common - ${project.version} - - - - org.yaml - snakeyaml - 1.15 - - - - javax - javaee-web-api - 6.0 - provided - - - org.openecomp.so - status-control - ${project.version} - - - commons-io - commons-io - - - - + + 4.0.0 + + org.openecomp.so + so + 1.1.0-SNAPSHOT + + + org.openecomp.so + asdc-controller + asdc-controller + ASDC CLient and Controller + war + + + ${project.artifactId}-${project.version} + + + maven-war-plugin + 2.4 + + WebContent + false + true + + + + + + + + org.codehaus.jackson + jackson-mapper-asl + 1.9.13 + + + org.mockito + mockito-all + 1.10.19 + test + + + org.jmockit + jmockit + 1.8 + test + + + org.openecomp.so + mso-catalog-db + ${project.version} + + + + org.jboss.spec.javax.ejb + jboss-ejb-api_3.2_spec + 1.0.0.Final + provided + + + org.jboss.ejb3 + jboss-ejb3-ext-api + 2.2.0.Final + provided + + + + javax.servlet + javax.servlet-api + 3.1.0 + test + + + + + + org.apache.httpcomponents + httpclient + 4.4.1 + compile + + + org.apache.httpcomponents + httpclient + + + + + + org.openecomp.sdc.sdc-distribution-client + sdc-distribution-client + 1.1.32-SNAPSHOT + + + org.slf4j + slf4j-log4j12 + + + + + + + org.openecomp.sdc.sdc-tosca + sdc-tosca + 1.1.32-SNAPSHOT + + + + + org.apache.httpcomponents + httpmime + 4.5 + + + + org.openecomp.so + common + ${project.version} + + + + org.yaml + snakeyaml + 1.15 + + + + javax + javaee-web-api + 6.0 + provided + + + org.openecomp.so + status-control + ${project.version} + + + commons-io + commons-io + + + + diff --git a/asdc-controller/src/test/java/org/openecomp/mso/asdc/installer/heat/tests/ToscaResourceInstallerTest.java b/asdc-controller/src/test/java/org/openecomp/mso/asdc/installer/heat/tests/ToscaResourceInstallerTest.java new file mode 100644 index 0000000000..a4563c66ac --- /dev/null +++ b/asdc-controller/src/test/java/org/openecomp/mso/asdc/installer/heat/tests/ToscaResourceInstallerTest.java @@ -0,0 +1,558 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 Huawei Technologies Co., Ltd. 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.mso.asdc.installer.heat.tests; + +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URISyntaxException; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import org.apache.commons.codec.binary.Base64; +import org.apache.commons.lang3.tuple.Pair; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.mockito.Mockito; +import org.openecomp.mso.asdc.client.ASDCConfiguration; +import org.openecomp.mso.asdc.client.exceptions.ArtifactInstallerException; +import org.openecomp.mso.asdc.client.tests.ASDCControllerTest; +import org.openecomp.mso.asdc.installer.ToscaResourceStructure; +import org.openecomp.mso.asdc.installer.VfResourceStructure; +import org.openecomp.mso.asdc.installer.heat.ToscaResourceInstaller; +import org.openecomp.mso.db.catalog.CatalogDatabase; +import org.openecomp.mso.db.catalog.beans.AllottedResource; +import org.openecomp.mso.db.catalog.beans.AllottedResourceCustomization; +import org.openecomp.mso.db.catalog.beans.NetworkResource; +import org.openecomp.mso.db.catalog.beans.NetworkResourceCustomization; +import org.openecomp.mso.db.catalog.beans.Service; +import org.openecomp.mso.db.catalog.beans.ServiceToAllottedResources; +import org.openecomp.mso.db.catalog.beans.ServiceToNetworks; +import org.openecomp.mso.db.catalog.beans.ServiceToResourceCustomization; +import org.openecomp.mso.db.catalog.beans.TempNetworkHeatTemplateLookup; +import org.openecomp.mso.db.catalog.beans.ToscaCsar; +import org.openecomp.mso.db.catalog.beans.VfModule; +import org.openecomp.mso.db.catalog.beans.VfModuleCustomization; +import org.openecomp.mso.db.catalog.beans.VfModuleToHeatFiles; +import org.openecomp.mso.db.catalog.beans.VnfResCustomToVfModuleCustom; +import org.openecomp.mso.db.catalog.beans.VnfResource; +import org.openecomp.mso.db.catalog.beans.VnfResourceCustomization; +import org.openecomp.mso.properties.MsoJavaProperties; +import org.openecomp.mso.properties.MsoPropertiesException; +import org.openecomp.mso.properties.MsoPropertiesFactory; +import org.openecomp.sdc.api.IDistributionClient; +import org.openecomp.sdc.api.notification.IArtifactInfo; +import org.openecomp.sdc.api.notification.INotificationData; +import org.openecomp.sdc.api.notification.IResourceInstance; +import org.openecomp.sdc.api.results.IDistributionClientDownloadResult; +import org.openecomp.sdc.api.results.IDistributionClientResult; +import org.openecomp.sdc.tosca.parser.api.ISdcCsarHelper; +import org.openecomp.sdc.tosca.parser.impl.FilterType; +import org.openecomp.sdc.tosca.parser.impl.SdcTypes; +import org.openecomp.sdc.toscaparser.api.Group; +import org.openecomp.sdc.toscaparser.api.NodeTemplate; +import org.openecomp.sdc.toscaparser.api.elements.Metadata; +import org.openecomp.sdc.toscaparser.api.parameters.Input; +import org.openecomp.sdc.utils.DistributionActionResultEnum; + +import mockit.Mock; +import mockit.MockUp; + +public class ToscaResourceInstallerTest { + + private static MsoPropertiesFactory msoPropertiesFactory = new MsoPropertiesFactory(); + + private static String heatExample; + private static String heatExampleMD5HashBase64; + + private static INotificationData iNotif; + + private static IDistributionClientDownloadResult downloadResult; + private static IDistributionClientDownloadResult downloadCorruptedResult; + + private static IDistributionClientResult successfulClientInitResult; + private static IDistributionClientResult unsuccessfulClientInitResult; + + private static IDistributionClient distributionClient; + + private static IArtifactInfo artifactInfo1; + + private static IResourceInstance resource1; + + private static VfResourceStructure vrs; + + public static final String ASDC_PROP = MsoJavaProperties.class.getClassLoader().getResource("mso.json").toString() + .substring(5); + public static final String ASDC_PROP2 = MsoJavaProperties.class.getClassLoader().getResource("mso2.json").toString() + .substring(5); + public static final String ASDC_PROP3 = MsoJavaProperties.class.getClassLoader().getResource("mso3.json").toString() + .substring(5); + public static final String ASDC_PROP_BAD = MsoJavaProperties.class.getClassLoader().getResource("mso-bad.json") + .toString().substring(5); + public static final String ASDC_PROP_WITH_NULL = MsoJavaProperties.class.getClassLoader() + .getResource("mso-with-NULL.json").toString().substring(5); + + @BeforeClass + public static final void prepareMockNotification() throws MsoPropertiesException, IOException, URISyntaxException, + NoSuchAlgorithmException, ArtifactInstallerException { + + heatExample = new String(Files.readAllBytes(Paths.get( + ASDCControllerTest.class.getClassLoader().getResource("resource-examples/autoscaling.yaml").toURI()))); + MessageDigest md = MessageDigest.getInstance("MD5"); + byte[] md5Hash = md.digest(heatExample.getBytes()); + heatExampleMD5HashBase64 = Base64.encodeBase64String(md5Hash); + + iNotif = Mockito.mock(INotificationData.class); + + // Create fake ArtifactInfo + artifactInfo1 = Mockito.mock(IArtifactInfo.class); + Mockito.when(artifactInfo1.getArtifactChecksum()) + .thenReturn(ToscaResourceInstallerTest.heatExampleMD5HashBase64); + + Mockito.when(artifactInfo1.getArtifactName()).thenReturn("artifact1"); + Mockito.when(artifactInfo1.getArtifactType()).thenReturn(ASDCConfiguration.HEAT); + Mockito.when(artifactInfo1.getArtifactURL()) + .thenReturn("https://localhost:8080/v1/catalog/services/srv1/2.0/resources/aaa/1.0/artifacts/aaa.yml"); + Mockito.when(artifactInfo1.getArtifactUUID()).thenReturn("UUID1"); + Mockito.when(artifactInfo1.getArtifactDescription()).thenReturn("testos artifact1"); + + distributionClient = Mockito.mock(IDistributionClient.class); + + // Now provision the NotificationData mock + List listArtifact = new ArrayList(); + listArtifact.add(artifactInfo1); + + // Create fake resource Instance + resource1 = Mockito.mock(IResourceInstance.class); + // Mockito.when(resource1.getResourceType()).thenReturn("VF"); + Mockito.when(resource1.getResourceName()).thenReturn("resourceName"); + Mockito.when(resource1.getArtifacts()).thenReturn(listArtifact); + + List resources = new ArrayList<>(); + resources.add(resource1); + + Mockito.when(iNotif.getResources()).thenReturn(resources); + Mockito.when(iNotif.getDistributionID()).thenReturn("distributionID1"); + Mockito.when(iNotif.getServiceName()).thenReturn("serviceName1"); + Mockito.when(iNotif.getServiceUUID()).thenReturn("serviceNameUUID1"); + Mockito.when(iNotif.getServiceVersion()).thenReturn("1.0"); + + downloadResult = Mockito.mock(IDistributionClientDownloadResult.class); + Mockito.when(downloadResult.getArtifactPayload()).thenReturn(heatExample.getBytes()); + Mockito.when(downloadResult.getDistributionActionResult()).thenReturn(DistributionActionResultEnum.SUCCESS); + Mockito.when(downloadResult.getDistributionMessageResult()).thenReturn("Success"); + + downloadCorruptedResult = Mockito.mock(IDistributionClientDownloadResult.class); + Mockito.when(downloadCorruptedResult.getArtifactPayload()).thenReturn((heatExample + "badone").getBytes()); + Mockito.when(downloadCorruptedResult.getDistributionActionResult()) + .thenReturn(DistributionActionResultEnum.SUCCESS); + Mockito.when(downloadCorruptedResult.getDistributionMessageResult()).thenReturn("Success"); + + vrs = new VfResourceStructure(iNotif, resource1); + try { + vrs.addArtifactToStructure(distributionClient, artifactInfo1, downloadResult); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + try { + vrs.createVfModuleStructures(); + } catch (ArtifactInstallerException e) { + e.printStackTrace(); + } + vrs.getNotification(); + vrs.getArtifactsMapByUUID(); + vrs.getCatalogNetworkResourceCustomization(); + vrs.getCatalogResourceCustomization(); + vrs.getCatalogService(); + vrs.getCatalogServiceToAllottedResources(); + vrs.getCatalogServiceToNetworks(); + vrs.getCatalogVnfResource(); + vrs.getResourceInstance(); + vrs.getVfModulesStructureList(); + vrs.getVfModuleStructure(); + vrs.setCatalogNetworkResourceCustomization(new NetworkResourceCustomization()); + vrs.setCatalogResourceCustomization(new AllottedResourceCustomization()); + vrs.setCatalogService(new Service()); + vrs.setCatalogServiceToAllottedResources(new ServiceToAllottedResources()); + vrs.setCatalogServiceToNetworks(new ServiceToNetworks()); + vrs.setCatalogVnfResource(new VnfResource()); + vrs.setSuccessfulDeployment(); + + AllottedResourceCustomization arc = new AllottedResourceCustomization(); + arc.setModelCustomizationUuid("modelCustomizationUuid"); + List allottedResources = new ArrayList<>(); + allottedResources.add(arc); + + NetworkResourceCustomization nrc = new NetworkResourceCustomization(); + nrc.setModelCustomizationUuid("modelCustomizationUuid"); + List networkResources = new ArrayList<>(); + networkResources.add(nrc); + + new MockUp() { + @Mock + public List getAllAllottedResourcesByServiceModelUuid( + String serviceModelUuid) { + return allottedResources; + } + }; + new MockUp() { + @Mock + public List getAllNetworksByServiceModelUuid(String serviceModelUuid) { + return networkResources; + } + }; + + // Mock now the ASDC distribution client behavior + successfulClientInitResult = Mockito.mock(IDistributionClientResult.class); + Mockito.when(successfulClientInitResult.getDistributionActionResult()) + .thenReturn(DistributionActionResultEnum.SUCCESS); + + unsuccessfulClientInitResult = Mockito.mock(IDistributionClientResult.class); + Mockito.when(unsuccessfulClientInitResult.getDistributionActionResult()) + .thenReturn(DistributionActionResultEnum.GENERAL_ERROR); + + } + + @Before + public final void initBeforeEachTest() throws MsoPropertiesException { + // load the config + msoPropertiesFactory.removeAllMsoProperties(); + msoPropertiesFactory.initializeMsoProperties(ASDCConfiguration.MSO_PROP_ASDC, ASDC_PROP); + } + + @AfterClass + public static final void kill() throws MsoPropertiesException { + + msoPropertiesFactory.removeMsoProperties(ASDCConfiguration.MSO_PROP_ASDC); + + } + + @Test + public void isResourceAlreadyDeployedAllotedResourceTest() { + Mockito.when(resource1.getResourceType()).thenReturn("VF"); + Mockito.when(resource1.getCategory()).thenReturn("Allotted Resource"); + ToscaResourceInstaller tri = new ToscaResourceInstaller(); + + try { + tri.isResourceAlreadyDeployed(vrs); + } catch (ArtifactInstallerException e) { + } + } + + @Test(expected=Exception.class) + public void installTheResourceTest() { + + ToscaResourceStructure trs = new ToscaResourceStructure(); + trs.getAllottedResource(); + trs.getAllottedList(); + trs.getCatalogAllottedResourceCustomization(); + trs.getCatalogAllottedServiceToResourceCustomization(); + trs.getCatalogNetworkResource(); + trs.getCatalogNetworkResourceCustomization(); + trs.getCatalogResourceCustomization(); + trs.getCatalogService(); + trs.getCatalogTempNetworkHeatTemplateLookup(); + trs.getCatalogToscaCsar(); + trs.getCatalogVfModule(); + trs.getCatalogVfModuleCustomization(); + trs.getCatalogVfModuleToHeatFiles(); + trs.getCatalogVfServiceToResourceCustomization(); + trs.getCatalogVlServiceToResourceCustomization(); + trs.getCatalogVnfResCustomToVfModuleCustom(); + trs.getCatalogVnfResource(); + trs.getCatalogVnfResourceCustomization(); + trs.getEnvHeatTemplateUUID(); + trs.getHeatFilesUUID(); + trs.getHeatTemplateUUID(); + trs.getNetworkTypes(); + trs.getSdcCsarHelper(); + trs.getServiceMetadata(); + trs.getServiceToResourceCustomization(); + trs.getServiceVersion(); + trs.getToscaArtifact(); + trs.getVfTypes(); + trs.getVolHeatEnvTemplateUUID(); + trs.getVolHeatTemplateUUID(); + + NodeTemplate nodeTemplate = Mockito.mock(NodeTemplate.class); + List alnt = new ArrayList<>(); + trs.setAllottedList(alnt); + trs.setAllottedResource(new AllottedResource()); + trs.setCatalogAllottedResourceCustomization(new AllottedResourceCustomization()); + trs.setCatalogAllottedServiceToResourceCustomization(new ServiceToResourceCustomization()); + trs.setCatalogNetworkResource(new NetworkResource()); + trs.setCatalogNetworkResourceCustomization(new NetworkResourceCustomization()); + trs.setCatalogResourceCustomization(new AllottedResourceCustomization()); + trs.setCatalogService(new Service()); + trs.setCatalogTempNetworkHeatTemplateLookup(new TempNetworkHeatTemplateLookup()); + trs.setCatalogToscaCsar(new ToscaCsar()); + trs.setCatalogVfModule(new VfModule()); + trs.setCatalogVfModuleCustomization(new VfModuleCustomization()); + trs.setCatalogVfModuleToHeatFiles(new VfModuleToHeatFiles()); + trs.setCatalogVfServiceToResourceCustomization(new ServiceToResourceCustomization()); + trs.setCatalogVlServiceToResourceCustomization(new ServiceToResourceCustomization()); + trs.setCatalogVnfResCustomToVfModuleCustom(new VnfResCustomToVfModuleCustom()); + trs.setCatalogVnfResource(new VnfResource()); + trs.setCatalogVnfResourceCustomization(new VnfResourceCustomization()); + trs.setEnvHeatTemplateUUID("envHeatTemplateUUID"); + trs.setHeatFilesUUID("heatFilesUUID"); + trs.setHeatTemplateUUID("heatTemplateUUID"); + trs.setNetworkTypes(alnt); + trs.setVolHeatTemplateUUID("volHeatTemplateUUID"); + trs.setSdcCsarHelper(new ISdcCsarHelper() { + + @Override + public boolean hasTopology(NodeTemplate arg0) { + return false; + } + + @Override + public NodeTemplate getVnfConfig(String arg0) { + return null; + } + + @Override + public List getVfcListByVf(String arg0) { + return null; + } + + @Override + public List getVfModulesByVf(String arg0) { + return null; + } + + @Override + public String getTypeOfNodeTemplate(NodeTemplate arg0) { + return null; + } + + @Override + public List getServiceVlList() { + return null; + } + + @Override + public List getServiceVfList() { + return null; + } + + @Override + public String getServiceSubstitutionMappingsTypeName() { + return null; + } + + @Override + public List getServiceNodeTemplatesByType(String arg0) { + return null; + } + + @Override + public List getServiceNodeTemplates() { + return null; + } + + @Override + public List getServiceNodeTemplateBySdcType(SdcTypes arg0) { + return null; + } + + @Override + public Map getServiceMetadataProperties() { + return null; + } + + @Override + public Metadata getServiceMetadata() { + return null; + } + + @Override + public List getServiceInputs() { + return null; + } + + @Override + public Object getServiceInputLeafValueOfDefaultAsObject(String arg0) { + return null; + } + + @Override + public String getServiceInputLeafValueOfDefault(String arg0) { + return null; + } + + @Override + public String getNodeTemplatePropertyLeafValue(NodeTemplate arg0, String arg1) { + return null; + } + + @Override + public Object getNodeTemplatePropertyAsObject(NodeTemplate arg0, String arg1) { + return null; + } + + @Override + public List> getNodeTemplatePairsByReqName(List arg0, + List arg1, String arg2) { + return null; + } + + @Override + public String getNodeTemplateCustomizationUuid(NodeTemplate arg0) { + return null; + } + + @Override + public List getNodeTemplateChildren(NodeTemplate arg0) { + return null; + } + + @Override + public List getNodeTemplateBySdcType(NodeTemplate arg0, SdcTypes arg1) { + return null; + } + + @Override + public String getMetadataPropertyValue(Metadata arg0, String arg1) { + return null; + } + + @Override + public List getMembersOfVfModule(NodeTemplate arg0, Group arg1) { + return null; + } + + @Override + public String getGroupPropertyLeafValue(Group arg0, String arg1) { + return null; + } + + @Override + public Object getGroupPropertyAsObject(Group arg0, String arg1) { + return null; + } + + @Override + public Map> getCpPropertiesFromVfcAsObject(NodeTemplate arg0) { + return null; + } + + @Override + public Map> getCpPropertiesFromVfc(NodeTemplate arg0) { + return null; + } + + @Override + public List getCpListByVf(String arg0) { + return null; + } + + @Override + public String getConformanceLevel() { + return null; + } + + @Override + public List getAllottedResources() { + return null; + } + + @Override + public Map filterNodeTemplatePropertiesByValue(NodeTemplate arg0, FilterType arg1, + String arg2) { + return null; + } + }); + // trs.setServiceMetadata(new Metadata(new HashMap<>())); + trs.setServiceToResourceCustomization(new ServiceToResourceCustomization()); + trs.setServiceVersion("1.0"); + trs.setToscaArtifact(new IArtifactInfo() { + + @Override + public List getRelatedArtifacts() { + return null; + } + + @Override + public IArtifactInfo getGeneratedArtifact() { + return null; + } + + @Override + public String getArtifactVersion() { + return null; + } + + @Override + public String getArtifactUUID() { + return null; + } + + @Override + public String getArtifactURL() { + return null; + } + + @Override + public String getArtifactType() { + return null; + } + + @Override + public Integer getArtifactTimeout() { + return null; + } + + @Override + public String getArtifactName() { + return null; + } + + @Override + public String getArtifactDescription() { + return null; + } + + @Override + public String getArtifactChecksum() { + return null; + } + }); + trs.setVfTypes(alnt); + trs.setVnfAlreadyInstalled(true); + trs.setVolHeatEnvTemplateUUID("volHeatEnvTemplateUUID"); + trs.isVnfAlreadyInstalled(); + + trs.updateResourceStructure(artifactInfo1); + ToscaResourceInstaller tri = new ToscaResourceInstaller(); + + try { + tri.installTheResource(trs, vrs); + } catch (ArtifactInstallerException e) { + } + } +} diff --git a/asdc-controller/src/test/java/org/openecomp/mso/asdc/installer/heat/tests/VfResourceInstallerTest.java b/asdc-controller/src/test/java/org/openecomp/mso/asdc/installer/heat/tests/VfResourceInstallerTest.java new file mode 100644 index 0000000000..c4ada7437e --- /dev/null +++ b/asdc-controller/src/test/java/org/openecomp/mso/asdc/installer/heat/tests/VfResourceInstallerTest.java @@ -0,0 +1,280 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 Huawei Technologies Co., Ltd. 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.mso.asdc.installer.heat.tests; + +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URISyntaxException; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.ArrayList; +import java.util.List; + +import org.apache.commons.codec.binary.Base64; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.mockito.Mockito; +import org.openecomp.mso.asdc.client.ASDCConfiguration; +import org.openecomp.mso.asdc.client.exceptions.ArtifactInstallerException; +import org.openecomp.mso.asdc.client.tests.ASDCControllerTest; +import org.openecomp.mso.asdc.installer.VfResourceStructure; +import org.openecomp.mso.asdc.installer.heat.VfResourceInstaller; +import org.openecomp.mso.db.catalog.CatalogDatabase; +import org.openecomp.mso.db.catalog.beans.AllottedResourceCustomization; +import org.openecomp.mso.db.catalog.beans.NetworkResourceCustomization; +import org.openecomp.mso.db.catalog.beans.Service; +import org.openecomp.mso.db.catalog.beans.ServiceToAllottedResources; +import org.openecomp.mso.db.catalog.beans.ServiceToNetworks; +import org.openecomp.mso.db.catalog.beans.VnfResource; +import org.openecomp.mso.properties.MsoJavaProperties; +import org.openecomp.mso.properties.MsoPropertiesException; +import org.openecomp.mso.properties.MsoPropertiesFactory; +import org.openecomp.sdc.api.IDistributionClient; +import org.openecomp.sdc.api.notification.IArtifactInfo; +import org.openecomp.sdc.api.notification.INotificationData; +import org.openecomp.sdc.api.notification.IResourceInstance; +import org.openecomp.sdc.api.results.IDistributionClientDownloadResult; +import org.openecomp.sdc.api.results.IDistributionClientResult; +import org.openecomp.sdc.utils.DistributionActionResultEnum; + +import mockit.Mock; +import mockit.MockUp; + +public class VfResourceInstallerTest { + private static MsoPropertiesFactory msoPropertiesFactory = new MsoPropertiesFactory(); + + private static String heatExample; + private static String heatExampleMD5HashBase64; + + private static INotificationData iNotif; + + private static IDistributionClientDownloadResult downloadResult; + private static IDistributionClientDownloadResult downloadCorruptedResult; + + private static IDistributionClientResult successfulClientInitResult; + private static IDistributionClientResult unsuccessfulClientInitResult; + + private static IDistributionClient distributionClient; + + private static IArtifactInfo artifactInfo1; + + private static IResourceInstance resource1; + + private static VfResourceStructure vrs; + + public static final String ASDC_PROP = MsoJavaProperties.class.getClassLoader().getResource("mso.json").toString() + .substring(5); + public static final String ASDC_PROP2 = MsoJavaProperties.class.getClassLoader().getResource("mso2.json").toString() + .substring(5); + public static final String ASDC_PROP3 = MsoJavaProperties.class.getClassLoader().getResource("mso3.json").toString() + .substring(5); + public static final String ASDC_PROP_BAD = MsoJavaProperties.class.getClassLoader().getResource("mso-bad.json") + .toString().substring(5); + public static final String ASDC_PROP_WITH_NULL = MsoJavaProperties.class.getClassLoader() + .getResource("mso-with-NULL.json").toString().substring(5); + + @BeforeClass + public static final void prepareMockNotification() throws MsoPropertiesException, IOException, URISyntaxException, + NoSuchAlgorithmException, ArtifactInstallerException { + + heatExample = new String(Files.readAllBytes(Paths.get( + ASDCControllerTest.class.getClassLoader().getResource("resource-examples/autoscaling.yaml").toURI()))); + MessageDigest md = MessageDigest.getInstance("MD5"); + byte[] md5Hash = md.digest(heatExample.getBytes()); + heatExampleMD5HashBase64 = Base64.encodeBase64String(md5Hash); + + iNotif = Mockito.mock(INotificationData.class); + + // Create fake ArtifactInfo + artifactInfo1 = Mockito.mock(IArtifactInfo.class); + Mockito.when(artifactInfo1.getArtifactChecksum()).thenReturn(VfResourceInstallerTest.heatExampleMD5HashBase64); + + Mockito.when(artifactInfo1.getArtifactName()).thenReturn("artifact1"); + Mockito.when(artifactInfo1.getArtifactType()).thenReturn(ASDCConfiguration.HEAT); + Mockito.when(artifactInfo1.getArtifactURL()) + .thenReturn("https://localhost:8080/v1/catalog/services/srv1/2.0/resources/aaa/1.0/artifacts/aaa.yml"); + Mockito.when(artifactInfo1.getArtifactUUID()).thenReturn("UUID1"); + Mockito.when(artifactInfo1.getArtifactDescription()).thenReturn("testos artifact1"); + + distributionClient = Mockito.mock(IDistributionClient.class); + + // Now provision the NotificationData mock + List listArtifact = new ArrayList(); + listArtifact.add(artifactInfo1); + + // Create fake resource Instance + resource1 = Mockito.mock(IResourceInstance.class); +// Mockito.when(resource1.getResourceType()).thenReturn("VF"); + Mockito.when(resource1.getResourceName()).thenReturn("resourceName"); + Mockito.when(resource1.getArtifacts()).thenReturn(listArtifact); + + List resources = new ArrayList<>(); + resources.add(resource1); + + Mockito.when(iNotif.getResources()).thenReturn(resources); + Mockito.when(iNotif.getDistributionID()).thenReturn("distributionID1"); + Mockito.when(iNotif.getServiceName()).thenReturn("serviceName1"); + Mockito.when(iNotif.getServiceUUID()).thenReturn("serviceNameUUID1"); + Mockito.when(iNotif.getServiceVersion()).thenReturn("1.0"); + + downloadResult = Mockito.mock(IDistributionClientDownloadResult.class); + Mockito.when(downloadResult.getArtifactPayload()).thenReturn(heatExample.getBytes()); + Mockito.when(downloadResult.getDistributionActionResult()).thenReturn(DistributionActionResultEnum.SUCCESS); + Mockito.when(downloadResult.getDistributionMessageResult()).thenReturn("Success"); + + downloadCorruptedResult = Mockito.mock(IDistributionClientDownloadResult.class); + Mockito.when(downloadCorruptedResult.getArtifactPayload()).thenReturn((heatExample + "badone").getBytes()); + Mockito.when(downloadCorruptedResult.getDistributionActionResult()) + .thenReturn(DistributionActionResultEnum.SUCCESS); + Mockito.when(downloadCorruptedResult.getDistributionMessageResult()).thenReturn("Success"); + + vrs = new VfResourceStructure(iNotif, resource1); + try { + vrs.addArtifactToStructure(distributionClient, artifactInfo1, downloadResult); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + try { + vrs.createVfModuleStructures(); + } catch (ArtifactInstallerException e) { + e.printStackTrace(); + } + vrs.getNotification(); + vrs.getArtifactsMapByUUID(); + vrs.getCatalogNetworkResourceCustomization(); + vrs.getCatalogResourceCustomization(); + vrs.getCatalogService(); + vrs.getCatalogServiceToAllottedResources(); + vrs.getCatalogServiceToNetworks(); + vrs.getCatalogVnfResource(); + vrs.getResourceInstance(); + vrs.getVfModulesStructureList(); + vrs.getVfModuleStructure(); + vrs.setCatalogNetworkResourceCustomization(new NetworkResourceCustomization()); + vrs.setCatalogResourceCustomization(new AllottedResourceCustomization()); + vrs.setCatalogService(new Service()); + vrs.setCatalogServiceToAllottedResources(new ServiceToAllottedResources()); + vrs.setCatalogServiceToNetworks(new ServiceToNetworks()); + vrs.setCatalogVnfResource(new VnfResource()); + vrs.setSuccessfulDeployment(); + + AllottedResourceCustomization arc= new AllottedResourceCustomization(); + arc.setModelCustomizationUuid("modelCustomizationUuid"); + List allottedResources = new ArrayList<>(); + allottedResources.add(arc); + + NetworkResourceCustomization nrc = new NetworkResourceCustomization(); + nrc.setModelCustomizationUuid("modelCustomizationUuid"); + List networkResources = new ArrayList<>(); + networkResources.add(nrc); + + new MockUp() { + @Mock + public List getAllAllottedResourcesByServiceModelUuid(String serviceModelUuid) { + return allottedResources; + } + }; + new MockUp() { + @Mock + public List getAllNetworksByServiceModelUuid(String serviceModelUuid) { + return networkResources; + } + }; + + // Mock now the ASDC distribution client behavior + successfulClientInitResult = Mockito.mock(IDistributionClientResult.class); + Mockito.when(successfulClientInitResult.getDistributionActionResult()) + .thenReturn(DistributionActionResultEnum.SUCCESS); + + unsuccessfulClientInitResult = Mockito.mock(IDistributionClientResult.class); + Mockito.when(unsuccessfulClientInitResult.getDistributionActionResult()) + .thenReturn(DistributionActionResultEnum.GENERAL_ERROR); + + } + + @Before + public final void initBeforeEachTest() throws MsoPropertiesException { + // load the config + msoPropertiesFactory.removeAllMsoProperties(); + msoPropertiesFactory.initializeMsoProperties(ASDCConfiguration.MSO_PROP_ASDC, ASDC_PROP); + } + + @AfterClass + public static final void kill() throws MsoPropertiesException { + + msoPropertiesFactory.removeMsoProperties(ASDCConfiguration.MSO_PROP_ASDC); + + } + + @Test + public void isResourceAlreadyDeployedAllotedResourceTest() { + + Mockito.when(resource1.getResourceType()).thenReturn("VF"); + Mockito.when(resource1.getCategory()).thenReturn("Allotted Resource"); + VfResourceInstaller vfri = new VfResourceInstaller(); + + try { + vfri.isResourceAlreadyDeployed(vrs); + } catch (ArtifactInstallerException e) { + } + + } + + @Test + public void isResourceAlreadyDeployedTest() { + + Mockito.when(resource1.getResourceType()).thenReturn("VF"); + Mockito.when(resource1.getCategory()).thenReturn("Not Allotted Resource"); + VfResourceInstaller vfri = new VfResourceInstaller(); + + try { + vfri.isResourceAlreadyDeployed(vrs); + } catch (ArtifactInstallerException e) { + } + + } + @Test + public void isResourceAlreadyDeployedDuplicateNtwrkTest() { + + Mockito.when(resource1.getResourceType()).thenReturn("VL"); + Mockito.when(resource1.getCategory()).thenReturn("Not Allotted Resource"); + VfResourceInstaller vfri = new VfResourceInstaller(); + + try { + vfri.isResourceAlreadyDeployed(vrs); + } catch (ArtifactInstallerException e) { + } + + } + + @Test(expected=Exception.class) + public void installTheResourceTest() { + VfResourceInstaller vfri = new VfResourceInstaller(); + try { + vfri.installTheResource(vrs); + } catch (ArtifactInstallerException e) { + } + } +} diff --git a/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/StubResponseAAITest.java b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/StubResponseAAITest.java new file mode 100644 index 0000000000..8f16ed3b1e --- /dev/null +++ b/bpmn/MSOInfrastructureBPMN/src/test/java/org/openecomp/mso/bpmn/infrastructure/StubResponseAAITest.java @@ -0,0 +1,168 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 Huawei 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.mso.bpmn.infrastructure; + +import org.junit.Test; +import org.openecomp.mso.bpmn.common.WorkflowTest; +import org.openecomp.mso.bpmn.mock.StubResponseAAI; + +public class StubResponseAAITest extends WorkflowTest{ + + @Test + public void testStubResponseAAIforNullAndDefaultInputs() + { + try{ + StubResponseAAI.MockPutTunnelXConnect(null, null, null, null, null); + StubResponseAAI.MockGetAllottedResource(null, null, null, null, null); + StubResponseAAI.MockPutAllottedResource(null, null, null, null); + StubResponseAAI.MockPutAllottedResource_500(null, null, null, null); + StubResponseAAI.MockDeleteAllottedResource(null, null, null, null, null); + StubResponseAAI.MockPatchAllottedResource(null, null, null, null); + StubResponseAAI.MockQueryAllottedResourceById(null, null); + StubResponseAAI.MockGetServiceInstance(null, null, null, null); + StubResponseAAI.MockGetServiceInstance_404(null, null, null); + StubResponseAAI.MockGetServiceInstance_500(null, null, null); + StubResponseAAI.MockGetServiceInstance_500(null, null, null, null); + StubResponseAAI.MockNodeQueryServiceInstanceByName(null, null); + StubResponseAAI.MockNodeQueryServiceInstanceByName_404(null); + StubResponseAAI.MockNodeQueryServiceInstanceByName_500(null); + StubResponseAAI.MockNodeQueryServiceInstanceById(null, null); + StubResponseAAI.MockNodeQueryServiceInstanceById_404(null); + StubResponseAAI.MockNodeQueryServiceInstanceById_500(null); + StubResponseAAI.MockDeleteServiceInstance(null, null, null, null); + StubResponseAAI.MockGetServiceInstance(null, null, null, null, 0); + StubResponseAAI.MockGetServiceInstance(null, null, null, 0); + StubResponseAAI.MockDeleteServiceInstance(null, null, null, null, 0); + StubResponseAAI.MockDeleteServiceInstance(null, null, null, 0); + StubResponseAAI.MockDeleteServiceInstance_404(null, null, null, null); + StubResponseAAI.MockDeleteServiceInstance_500(null, null, null, null); + StubResponseAAI.MockPutServiceInstance(null, null, null, null); + StubResponseAAI.MockPutServiceInstance_500(null, null, null); + StubResponseAAI.MockGetServiceSubscription(null, null, null); + StubResponseAAI.MockDeleteServiceSubscription(null, null, 0); + StubResponseAAI.MockDeleteServiceInstanceId(null, null, null); + StubResponseAAI.MockPutServiceSubscription(null, null); + StubResponseAAI.MockGetServiceSubscription(null, null, 0); + StubResponseAAI.MockGetCustomer(null, null); + StubResponseAAI.MockDeleteCustomer(null); + StubResponseAAI.MockPutCustomer(null); + StubResponseAAI.MockPutCustomer_500(null); + StubResponseAAI.MockGetGenericVnfById(null, null); + StubResponseAAI.MockGetGenericVnfById(null, null, 0); + StubResponseAAI.MockGetGenericVnfByIdWithPriority(null, 0, null); + StubResponseAAI.MockGetGenericVnfByIdWithPriority(null, null, 0, null, 0); + StubResponseAAI.MockGetGenericVnfByIdWithDepth(null, 0, null); + StubResponseAAI.MockGetGenericVnfById_404(null); + StubResponseAAI.MockGetGenericVnfById_500(null); + StubResponseAAI.MockGetGenericVnfByName(null, null); + StubResponseAAI.MockGetGenericVnfByNameWithDepth(null, 0, null); + StubResponseAAI.MockGetGenericVnfByName_404(null); + StubResponseAAI.MockDeleteGenericVnf(null, null); + StubResponseAAI.MockDeleteGenericVnf(null, null, 0); + StubResponseAAI.MockDeleteGenericVnf_500(null, null); + StubResponseAAI.MockPutGenericVnf(null); + StubResponseAAI.MockPutGenericVnf(null, null, 0); + StubResponseAAI.MockPutGenericVnf(null, 0); + StubResponseAAI.MockPutGenericVnf_Bad(null, 0); + StubResponseAAI.MockPatchGenericVnf(null); + StubResponseAAI.MockGetVceById(null, null); + StubResponseAAI.MockGetVceByName(null, null); + StubResponseAAI.MockDeleteVce(null, null, 0); + StubResponseAAI.MockPutVce(null); + StubResponseAAI.MockGetGenericVceByNameWithDepth(null, 0, null); + StubResponseAAI.MockGetVceGenericQuery(null, 0, 0, null); + StubResponseAAI.MockGetTenantGenericQuery(null, null, null); + StubResponseAAI.MockGetTenant(null, null); + StubResponseAAI.MockGetNetwork(null, null, 0); + StubResponseAAI.MockGetNetworkByIdWithDepth(null, null, null); + StubResponseAAI.MockGetNetworkCloudRegion(null, null); + StubResponseAAI.MockGetNetworkByName(null, null); + StubResponseAAI.MockGetNetworkByName_404(null, null); + StubResponseAAI.MockGetNetworkCloudRegion_404(null); + StubResponseAAI.MockPutNetwork(null, 0, null); + StubResponseAAI.MockPutNetwork(null, null, 0); + StubResponseAAI.MockGetNetworkName(null, null, 0); + StubResponseAAI.MockGetNetworkVpnBinding(null, null); + StubResponseAAI.MockGetNetworkPolicy(null, null); + StubResponseAAI.MockGetNetworkVpnBinding(null, null, 0); + StubResponseAAI.MockGetNetworkPolicy(null, null, 0); + StubResponseAAI.MockGetNetworkTableReference(null, null); + StubResponseAAI.MockPutNetworkIdWithDepth(null, null, null); + StubResponseAAI.MockGetNetworkPolicyfqdn(null, null, 0); + StubResponseAAI.MockGetNetworkRouteTable(null, null, 0); + StubResponseAAI.MockPatchVfModuleId(null, null); + StubResponseAAI.MockVNFAdapterRestVfModule(); + StubResponseAAI.MockDBUpdateVfModule(); + StubResponseAAI.MockSDNCAdapterVfModule(); + StubResponseAAI.MockAAIVfModule(); + StubResponseAAI.MockGetCloudRegion(null, 0, null); + StubResponseAAI.MockGetVolumeGroupById(null, null, null); + StubResponseAAI.MockPutVolumeGroupById(null, null, null, 0); + StubResponseAAI.MockGetVolumeGroupByName(null, null, null, 0); + StubResponseAAI.MockDeleteVolumeGroupById(null, null, null, 0); + StubResponseAAI.MockGetVolumeGroupByName_404(null, null); + StubResponseAAI.MockDeleteVolumeGroup(null, null, null); + StubResponseAAI.MockGetVfModuleId(null, null, null, 0); + StubResponseAAI.MockGetVfModuleByNameWithDepth(null, null, 0, null, 0); + StubResponseAAI.MockGetVfModuleIdNoResponse(null, null, null); + StubResponseAAI.MockPutVfModuleIdNoResponse(null, null, null); + StubResponseAAI.MockPutVfModuleId(null, null); + StubResponseAAI.MockPutVfModuleId(null, null, 0); + StubResponseAAI.MockDeleteVfModuleId(null, null, null, 0); + StubResponseAAI.MockAAIVfModuleBadPatch(null, 0); + StubResponseAAI.MockGetPserverByVnfId(null, null, 0); + StubResponseAAI.MockGetGenericVnfsByVnfId(null, null, 0); + StubResponseAAI.MockSetInMaintFlagByVnfId(null, 0); + StubResponseAAI.MockGetVceById(); + StubResponseAAI.MockGetVceByName(); + StubResponseAAI.MockPutVce(); + StubResponseAAI.MockDeleteVce(); + StubResponseAAI.MockDeleteVce_404(); + StubResponseAAI.MockDeleteServiceSubscription(); + StubResponseAAI.MockGetServiceSubscription(); + StubResponseAAI.MockGetServiceSubscription_200Empty(); + StubResponseAAI.MockGetServiceSubscription_404(); + StubResponseAAI.MockGENPSIPutServiceInstance(); + StubResponseAAI.MockGENPSIPutServiceSubscription(); + StubResponseAAI.MockGENPSIPutServiceInstance_get500(); + StubResponseAAI.MockGetGenericVnfById(); + StubResponseAAI.MockGetGenericVnfById_404(); + StubResponseAAI.MockGetGenericVnfByName(); + StubResponseAAI.MockGetGenericVnfByName_hasRelationships(); + StubResponseAAI.MockGetGenericVnfById_hasRelationships(); + StubResponseAAI.MockGetGenericVnfById_500(); + StubResponseAAI.MockGetGenericVnfByName_404(); + StubResponseAAI.MockPutGenericVnf(); + StubResponseAAI.MockPutGenericVnf_400(); + StubResponseAAI.MockDeleteGenericVnf(); + StubResponseAAI.MockDeleteGenericVnf_404(); + StubResponseAAI.MockDeleteGenericVnf_500(); + StubResponseAAI.MockDeleteGenericVnf_412(); + } + catch(Exception ex) + { + + System.err.println(ex); + } + + } +}