From: Joss Armstrong Date: Wed, 30 Jan 2019 13:51:13 +0000 (+0000) Subject: Test coverage in aai-client-provider X-Git-Tag: 1.5.0~329 X-Git-Url: https://gerrit.onap.org/r/gitweb?p=appc.git;a=commitdiff_plain;h=09da4f91bcfe2e9fb3eab992f2ead8c424a1cfad Test coverage in aai-client-provider Increase coverage to 91% Issue-ID: APPC-1373 Change-Id: I5de0f532a50bbcd1bf5c305d758a6d1fd95fa3c1 Signed-off-by: Joss Armstrong --- diff --git a/appc-outbound/appc-aai-client/provider/pom.xml b/appc-outbound/appc-aai-client/provider/pom.xml index 27d2d13b6..4d6e047c9 100755 --- a/appc-outbound/appc-aai-client/provider/pom.xml +++ b/appc-outbound/appc-aai-client/provider/pom.xml @@ -1,163 +1,159 @@ - - - - 4.0.0 - - org.onap.appc.parent - binding-parent - 1.5.0-SNAPSHOT - - - org.onap.appc - appc-aai-client-provider - bundle - APPC AAI Client - Provider - - - UTF-8 - - - - equinoxSDK381 - org.eclipse.osgi - ${equinox.osgi.version} - - - org.onap.ccsdk.sli.core - sli-provider - compile - - - - org.onap.ccsdk.sli.adaptors - aai-service-provider - compile - - - - - commons-io - commons-io - 2.5 - - - org.apache.commons - commons-lang3 - - - ch.qos.logback - logback-classic - ${logback.version} - - - com.att.eelf - eelf-core - - - ch.qos.logback - logback-classic - - - - - - junit - junit - test - - - - - - - - - maven-resources-plugin - 2.6 - - - copy-xsl - - copy-resources - - validate - - ${basedir}/target/templates/xslt/sbg - - - src/main/resources/xsl - - * - - true - - - - - - copy-properties - - copy-resources - - validate - - ${basedir}/target/properties/ - - - src/main/resources - - *.properties - - true - - - - - - - - org.apache.felix - maven-bundle-plugin - ${bundle.plugin.version} - true - - - org.onap.appc.aai.client - org.onap.appc.aai.client.AppcAaiClientActivator - org.onap.appc.aai.client,org.onap.appc.aai.client.* - groovy.lang;resolution:=optional, - org.codehaus.groovy.*;resolution:=optional,* - * - eelf-core,logback-core,logback-classic - - ${project.basedir}/src/main/resources/META-INF - - - - - - - - - 1.5.0-SNAPSHOT - + + + + 4.0.0 + + org.onap.appc.parent + binding-parent + 1.5.0-SNAPSHOT + + + org.onap.appc + appc-aai-client-provider + bundle + APPC AAI Client - Provider + + + UTF-8 + + + + org.onap.ccsdk.sli.core + sli-provider + compile + + + + org.onap.ccsdk.sli.adaptors + aai-service-provider + compile + + + + + commons-io + commons-io + 2.5 + + + org.apache.commons + commons-lang3 + + + ch.qos.logback + logback-classic + ${logback.version} + + + com.att.eelf + eelf-core + + + ch.qos.logback + logback-classic + + + + + + junit + junit + test + + + + + + + + + maven-resources-plugin + 2.6 + + + copy-xsl + + copy-resources + + validate + + ${basedir}/target/templates/xslt/sbg + + + src/main/resources/xsl + + * + + true + + + + + + copy-properties + + copy-resources + + validate + + ${basedir}/target/properties/ + + + src/main/resources + + *.properties + + true + + + + + + + + org.apache.felix + maven-bundle-plugin + ${bundle.plugin.version} + true + + + org.onap.appc.aai.client + org.onap.appc.aai.client.AppcAaiClientActivator + org.onap.appc.aai.client,org.onap.appc.aai.client.* + groovy.lang;resolution:=optional, + org.codehaus.groovy.*;resolution:=optional,* + * + eelf-core,logback-core,logback-classic + + ${project.basedir}/src/main/resources/META-INF + + + + + + + + + 1.5.0-SNAPSHOT + diff --git a/appc-outbound/appc-aai-client/provider/src/main/java/org/onap/appc/aai/client/aai/AaiService.java b/appc-outbound/appc-aai-client/provider/src/main/java/org/onap/appc/aai/client/aai/AaiService.java index 76336c1de..a25013f35 100644 --- a/appc-outbound/appc-aai-client/provider/src/main/java/org/onap/appc/aai/client/aai/AaiService.java +++ b/appc-outbound/appc-aai-client/provider/src/main/java/org/onap/appc/aai/client/aai/AaiService.java @@ -5,6 +5,8 @@ * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Copyright (C) 2017 Amdocs + * ================================================================================ + * Modifications (C) 2019 Ericsson * ============================================================================= * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -263,7 +265,6 @@ public class AaiService { log.info(QUERY_STR_VNFC_NAME + ctx.getAttribute(aaiRefKey + ATTR_VNFC_NAME)); String vnfcNameAAI = ctx.getAttribute(aaiRefKey + ATTR_VNFC_NAME); - // Get Vnfc_reference data from the table String vnfcRefKey = STR_VNFC_REF + vnfcRefIndx + "]."; diff --git a/appc-outbound/appc-aai-client/provider/src/main/java/org/onap/appc/aai/client/node/AAIResourceNode.java b/appc-outbound/appc-aai-client/provider/src/main/java/org/onap/appc/aai/client/node/AAIResourceNode.java index e32cc94ea..27bf84a74 100644 --- a/appc-outbound/appc-aai-client/provider/src/main/java/org/onap/appc/aai/client/node/AAIResourceNode.java +++ b/appc-outbound/appc-aai-client/provider/src/main/java/org/onap/appc/aai/client/node/AAIResourceNode.java @@ -7,6 +7,8 @@ * Copyright (C) 2017 Amdocs * ============================================================================= * Modifications Copyright (C) 2018 IBM. + * ================================================================================ + * Modifications Copyright (C) 2019 Ericsson * ============================================================================= * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -79,8 +81,8 @@ public class AAIResourceNode implements SvcLogicJavaPlugin { AaiService aai = getAaiService(); aai.getGenericVnfInfo(inParams, ctx); - String cloudOwnerValue=ctx.getAttribute(responsePrefix + "vm[0].cloud-owner"); - String cloudRegionValue=ctx.getAttribute(responsePrefix + "vm[0].cloud-region-id"); + String cloudOwnerValue = ctx.getAttribute(responsePrefix + "vm[0].cloud-owner"); + String cloudRegionValue = ctx.getAttribute(responsePrefix + "vm[0].cloud-region-id"); log.debug("Cloud Owner" + cloudOwnerValue); log.debug("CloudRegionId" + cloudOwnerValue); @@ -88,7 +90,7 @@ public class AAIResourceNode implements SvcLogicJavaPlugin { paramsCloud.put(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX, inParams.get(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX)); - if(StringUtils.isNotBlank(cloudOwnerValue)&&StringUtils.isNotBlank(cloudRegionValue)) { + if(StringUtils.isNotBlank(cloudOwnerValue) && StringUtils.isNotBlank(cloudRegionValue)) { paramsCloud.put(PARAM_CLOUD_OWNER, cloudOwnerValue); paramsCloud.put(PARAM_CLOUD_REGION_ID, cloudRegionValue); @@ -127,7 +129,7 @@ public class AAIResourceNode implements SvcLogicJavaPlugin { int vmCountForVfModule = 0; String vmCountStr = ctx.getAttribute(responsePrefix + "vm-count"); String vfModuleFromRequest = ctx.getAttribute("req-vf-module-id"); - log.info("getAllVServersVnfcsInfo()::: vfMOdule="+vfModuleFromRequest); + log.info("getAllVServersVnfcsInfo()::: vfMOdule=" + vfModuleFromRequest); if (vmCountStr == null) { throw new ResourceNodeInternalException("Unable to get VServers for the VNF"); @@ -196,7 +198,7 @@ public class AAIResourceNode implements SvcLogicJavaPlugin { } else { vmWithNoVnfcsCount++; //ConfigScaleOut - log.info("getAllVServersVnfcsInfo()::Vf Modules: "+vfModuleForVserver+", "+vfModuleFromRequest); + log.info("getAllVServersVnfcsInfo()::Vf Modules: " + vfModuleForVserver+", " + vfModuleFromRequest); if (StringUtils.isNotBlank(vfModuleFromRequest) && StringUtils.isNotBlank(vfModuleForVserver) && StringUtils.equalsIgnoreCase(vfModuleForVserver,vfModuleFromRequest)) { vmsWithNoVnfcsForVfModule++; } @@ -342,19 +344,19 @@ public class AAIResourceNode implements SvcLogicJavaPlugin { int vmsWithoutVnfcsForVfModule = 0; String vmsWithoutVnfcsForVfModuleStr = ctx.getAttribute(responsePrefix + "vnf.vm-with-no-vnfcs-count-vf-module"); if (StringUtils.isBlank(vmsWithoutVnfcsForVfModuleStr) && StringUtils.isNotBlank(vfModuleIdFromRequest)) { - log.info("addVnfcs()::No vmsWithoutVnfcsForVfModule (is null) for vfmodule="+vfModuleIdFromRequest); + log.info("addVnfcs()::No vmsWithoutVnfcsForVfModule (is null) for vfmodule=" + vfModuleIdFromRequest); } else { vmsWithoutVnfcsForVfModule = Integer.parseInt(vmsWithoutVnfcsForVfModuleStr); } - log.info("addVnfcs():::Number of VMs without vnfcs for vfmodule: "+vmsWithoutVnfcsForVfModule); - String vmsForVfModuleStr = ctx.getAttribute(responsePrefix +"vnf.vm-count-for-vf-module"); + log.info("addVnfcs():::Number of VMs without vnfcs for vfmodule: " + vmsWithoutVnfcsForVfModule); + String vmsForVfModuleStr = ctx.getAttribute(responsePrefix + "vnf.vm-count-for-vf-module"); int vmsForVfModule = 0; if (StringUtils.isNotBlank(vmsForVfModuleStr)) { vmsForVfModule = Integer.parseInt(vmsForVfModuleStr); } if ((vmsForVfModule != vnfcRefLen ) && StringUtils.isNotBlank(vfModuleIdFromRequest)) { - throw new ResourceNodeInternalException("Vnfc and VM count mismatch for vfModule in request="+vfModuleIdFromRequest); + throw new ResourceNodeInternalException("Vnfc and VM count mismatch for vfModule in request=" + vfModuleIdFromRequest); } log.info("processCheckForVfModule()::vmsForVfModule " + vmsForVfModule); @@ -516,7 +518,7 @@ public class AAIResourceNode implements SvcLogicJavaPlugin { try { responsePrefix = StringUtils.isNotBlank(responsePrefix) ? (responsePrefix + ".") : ""; AaiService aaiService = getAaiService(); - processForVfModuleModelInfo(aaiService,inParams,ctx); + processForVfModuleModelInfo(aaiService, inParams, ctx); } catch (Exception e) { ctx.setAttribute(responsePrefix + AppcAaiClientConstant.OUTPUT_PARAM_STATUS, AppcAaiClientConstant.OUTPUT_STATUS_FAILURE); @@ -554,10 +556,10 @@ public class AAIResourceNode implements SvcLogicJavaPlugin { log.info("processForVfModuleModelInfo()::model-invariant-id or model-version-id is blank, not getting model info !!!!"); return; } - aaiService.getModelVersionInfo(modelParams,modelCtx); - String modelName = modelCtx.getAttribute(responsePrefix+"vfModule.model-name"); - log.info("processForVfModuleModelInfo()::modelName for vfModule:::"+modelName); - log.info("Setting context template-model-id as :::"+modelName); + aaiService.getModelVersionInfo(modelParams, modelCtx); + String modelName = modelCtx.getAttribute(responsePrefix + "vfModule.model-name"); + log.info("processForVfModuleModelInfo()::modelName for vfModule:::" + modelName); + log.info("Setting context template-model-id as :::" + modelName); ctx.setAttribute("template-model-id", modelName); log.info("processForVfModuleModelInfo() ::: End"); } @@ -580,7 +582,7 @@ public class AAIResourceNode implements SvcLogicJavaPlugin { return; } String outputValue = StringUtils.replace(inputValue, "/", "_");//change / to _ - outputValue = StringUtils.replace(outputValue," ","");//remove space + outputValue = StringUtils.replace(outputValue, " ", "");//remove space ctx.setAttribute("template-model-id", outputValue); } catch (Exception e) { ctx.setAttribute(responsePrefix + AppcAaiClientConstant.OUTPUT_PARAM_STATUS, diff --git a/appc-outbound/appc-aai-client/provider/src/test/java/org/onap/appc/aai/client/aai/TestAaiService.java b/appc-outbound/appc-aai-client/provider/src/test/java/org/onap/appc/aai/client/aai/TestAaiService.java index 671c355be..9087a7fe7 100644 --- a/appc-outbound/appc-aai-client/provider/src/test/java/org/onap/appc/aai/client/aai/TestAaiService.java +++ b/appc-outbound/appc-aai-client/provider/src/test/java/org/onap/appc/aai/client/aai/TestAaiService.java @@ -7,6 +7,8 @@ * Copyright (C) 2017 Amdocs * ============================================================================= * Modification Copyright (C) 2018 IBM. + * ================================================================================ + * Modifications Copyright (C) 2019 Ericsson * ============================================================================= * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -29,20 +31,134 @@ import static org.junit.Assert.assertEquals; import java.util.HashMap; import java.util.Map; - -import org.apache.commons.lang3.StringUtils; +import org.junit.Before; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; +import org.junit.runner.RunWith; +import org.mockito.Matchers; +import org.mockito.Mockito; import org.onap.ccsdk.sli.core.sli.SvcLogicContext; +import org.onap.ccsdk.sli.core.sli.SvcLogicException; +import org.onap.ccsdk.sli.core.sli.SvcLogicResource.QueryStatus; +import org.osgi.framework.Bundle; +import org.osgi.framework.BundleContext; +import org.osgi.framework.FrameworkUtil; +import org.osgi.framework.ServiceReference; +import org.powermock.api.mockito.PowerMockito; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; import org.onap.ccsdk.sli.adaptors.aai.AAIClient; import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; +@RunWith(PowerMockRunner.class) +@PrepareForTest({FrameworkUtil.class}) public class TestAaiService { // ONAP merging private static final EELFLogger log = EELFManager.getInstance().getLogger(TestAaiService.class); - private AAIClient aaiClient; + private AAIClient aaiClient = Mockito.mock(AAIClient.class); + private final BundleContext bundleContext= Mockito.mock(BundleContext.class); + private final Bundle bundleService=Mockito.mock(Bundle.class); + private final ServiceReference sref=Mockito.mock(ServiceReference.class); + + @Rule + public ExpectedException expectedEx = ExpectedException.none(); + + @Before + public void setup() { + PowerMockito.mockStatic(FrameworkUtil.class); + PowerMockito.when(FrameworkUtil.getBundle(Matchers.any(Class.class))).thenReturn(bundleService); + PowerMockito.when(bundleService.getBundleContext()).thenReturn(bundleContext); + PowerMockito.when(bundleContext.getServiceReference(Matchers.any(Class.class))).thenReturn(sref); + PowerMockito.when(bundleContext.getService(sref)).thenReturn(aaiClient); + } + + @Test + public void testMissingVnfId() throws AaiServiceInternalException, SvcLogicException { + AaiService aaiService = new AaiService(); + expectedEx.expect(AaiServiceInternalException.class); + expectedEx.expectMessage("VnfId is missing"); + aaiService.getGenericVnfInfo(new HashMap(), new SvcLogicContext()); + } + + @Test + public void testGetVmInfoExceptionFlow() throws SvcLogicException, AaiServiceInternalException { + AaiService aaiService = Mockito.spy(new AaiService()); + Map inParams = new HashMap(); + inParams.put("vserverId", "vserverId1"); + inParams.put("tenantId", "tenantId1"); + inParams.put("cloudOwner", "cloudOwner1"); + inParams.put("cloudRegionId", "cloudRegionId1"); + inParams.put("responsePrefix", "tmp.vnfInfo"); + + SvcLogicContext ctx = new SvcLogicContext(); + Mockito.doThrow(new SvcLogicException()).when(aaiService).readResource(Mockito.anyString(), Mockito.anyString(), Mockito.anyString()); + expectedEx.expect(SvcLogicException.class); + expectedEx.expectMessage("Failed to fetch VM info"); + aaiService.getVMInfo(inParams, ctx); + } + + @Test + public void testGetVnfcInfoExceptionFlow() throws Exception { + AaiService aaiService = new AaiService(); + Map inParams = new HashMap(); + inParams.put("vnfcName", ""); + inParams.put("responsePrefix", "tmp.vnfInfo"); + SvcLogicContext ctx = new SvcLogicContext(); + expectedEx.expect(AaiServiceInternalException.class); + expectedEx.expectMessage("Vnfc Name is missing"); + aaiService.getVnfcInfo(inParams, ctx); + } + + @Test + public void testInsertVnfcsExceptionFlow() throws Exception { + AaiService aaiService = new AaiService(); + Map inParams = new HashMap(); + inParams.put("responsePrefix", "tmp.vnfInfo"); + SvcLogicContext ctx = new SvcLogicContext(); + inParams.put("AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX", "prefix."); + ctx.setAttribute("tmp.vnfInfo.vm[1].vnfc-name", "nullnull001"); + aaiService.insertVnfcs(inParams, ctx, 2, 2, null); + } + + @Test + public void testGetVnfcData() { + AaiService aaiService = new AaiService(); + Map inParams = new HashMap(); + inParams.put("responsePrefix", "tmp.vnfInfo"); + SvcLogicContext ctx = new SvcLogicContext(); + inParams.put("AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX", "prefix."); + ctx.setAttribute("tmp.vnfInfo.vm[1].vnfc-name", "nullnull001"); + aaiService.getVnfcData(inParams, ctx, 1, 1); + } + + @Test + public void testReadResource() throws AaiServiceInternalException, SvcLogicException { + AaiService aaiService = Mockito.spy(new AaiService()); + Map inParams = new HashMap(); + inParams.put("responsePrefix", "tmp.vnfInfo"); + inParams.put("AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX", "prefix."); + Mockito.doReturn(QueryStatus.FAILURE).when(aaiClient).query(Mockito.anyString(), Mockito.anyBoolean(), Mockito.anyString(), + Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.any(SvcLogicContext.class)); + expectedEx.expect(AaiServiceInternalException.class); + expectedEx.expectMessage("Error Retrieving null from A&AI"); + aaiService.readResource(null, null, null); + } + + @Test + public void testCheckAndUpdateVnfc() throws AaiServiceInternalException, SvcLogicException { + AaiService aaiService = Mockito.spy(new AaiService()); + Map inParams = new HashMap(); + inParams.put("responsePrefix", "tmp.vnfInfo"); + SvcLogicContext ctx = new SvcLogicContext(); + inParams.put("AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX", "prefix."); + ctx.setAttribute("tmp.vnfInfo.vm[0].vnfc-name", "nullnull001"); + aaiService.checkAndUpdateVnfc(inParams, ctx, 1, 1); + Mockito.verify(aaiService).updateVnfcStatus(Mockito.anyString(), Mockito.anyMap(), Mockito.anyString()); + } @Test public void testGetGenericVnfInfo() throws Exception { @@ -255,6 +371,7 @@ public class TestAaiService { } + @Test public void testInsertVnfcsForRelativeValueSame() throws Exception { @@ -327,23 +444,6 @@ public class TestAaiService { mockAai.updateVnfStatus(inParams, ctx); } - @Test - public void testReadResource() throws Exception { - - MockAaiService mockAai = new MockAaiService(aaiClient); - // AaiService mockAai = new AaiService(new AAIClientMock()); - - String vnfId = "ibcx0001v"; - String resourceKey = "generic-vnf.vnf-id = '" + vnfId + "'"; - String resourceType = "generic-vnf"; - String queryPrefix = "vnfInfo"; - SvcLogicContext ctx = mockAai.readResource(resourceKey, queryPrefix, resourceType); - - // System.out.println("VNF TYPE " + queryPrefix + ".vnf.vnf-type"); - - assertEquals(ctx.getAttribute("vnfInfo.vnf-type"), "vUSP-Metaswitch"); - - } private void printContext(SvcLogicContext ctx) throws Exception { for (String key : ctx.getAttributeKeySet()) { log.info(" KEY " + key); @@ -399,7 +499,7 @@ public class TestAaiService { assertEquals(ctx.getAttribute("tmp.vnfInfo.cloud-region.identity-url"), "TestUrl"); } - + @Test public void testAddvnfc() { diff --git a/appc-outbound/appc-aai-client/provider/src/test/java/org/onap/appc/aai/client/node/TestAAIResourceNode.java b/appc-outbound/appc-aai-client/provider/src/test/java/org/onap/appc/aai/client/node/TestAAIResourceNode.java index b3944b700..cb0758406 100644 --- a/appc-outbound/appc-aai-client/provider/src/test/java/org/onap/appc/aai/client/node/TestAAIResourceNode.java +++ b/appc-outbound/appc-aai-client/provider/src/test/java/org/onap/appc/aai/client/node/TestAAIResourceNode.java @@ -5,6 +5,8 @@ * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Copyright (C) 2017 Amdocs + * ================================================================================ + * Modifications Copyright (C) 2019 Ericsson * ============================================================================= * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,33 +25,26 @@ package org.onap.appc.aai.client.node; -import static org.junit.Assert.*; -import java.io.File; -import java.nio.charset.Charset; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; -import java.util.List; import java.util.Map; - -import org.apache.commons.io.FileUtils; -import org.apache.commons.io.IOUtils; -import org.junit.Assert; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; +import org.mockito.Mockito; import org.onap.appc.aai.client.AppcAaiClientConstant; import org.onap.appc.aai.client.aai.AaiService; -import org.onap.appc.aai.client.aai.TestAaiService; - -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; +import org.onap.ccsdk.sli.adaptors.aai.AAIClient; import org.onap.ccsdk.sli.core.sli.SvcLogicContext; - import org.onap.ccsdk.sli.core.sli.SvcLogicException; -import org.onap.ccsdk.sli.adaptors.aai.AAIClient; +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; -import com.fasterxml.jackson.databind.ObjectMapper; public class TestAAIResourceNode { @@ -58,27 +53,40 @@ public class TestAAIResourceNode { private static final EELFLogger log = EELFManager.getInstance().getLogger(TestAAIResourceNode.class); - @Test - public void sortVServer() throws Exception{ + @Rule + public ExpectedException expectedEx = ExpectedException.none(); - //log.info("Test"); + @Test + public void testGetVnfInfo() throws Exception { + AAIResourceNode aai = Mockito.spy(new AAIResourceNode()); + Map inParams = new HashMap<>(); + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("vm[0].cloud-owner", "TEST"); + ctx.setAttribute("vm[0].cloud-region-id", "TEST"); + AaiService aaiService = Mockito.mock(AaiService.class); + Mockito.doReturn(aaiService).when(aai).getAaiService(); + aai.getVnfInfo(inParams, ctx); + Mockito.verify(aaiService).getIdentityUrl(Mockito.anyMap(), Mockito.any(SvcLogicContext.class)); + } + @Test + public void sortVServer() throws Exception{ ArrayList> vservers = new ArrayList>(); - HashMap vserverMap = new HashMap(); + Map vserverMap = new HashMap<>(); vserverMap.put("vserver-id", "vserverId9"); vserverMap.put("tenant-id", "tenantId9"); vserverMap.put("cloud-owner", "cloudOwner9"); vserverMap.put("cloud-region-id", "cloudRegionId9"); vserverMap.put("vserver-name", "vServerName9"); vservers.add(vserverMap); - vserverMap = new HashMap(); + vserverMap = new HashMap<>(); vserverMap.put("vserver-id", "vserverId1"); vserverMap.put("tenant-id", "tenantId1"); vserverMap.put("cloud-owner", "cloudOwner1"); vserverMap.put("cloud-region-id", "cloudRegionId1"); vserverMap.put("vserver-name", "vServerName1"); vservers.add(vserverMap); - vserverMap = new HashMap(); + vserverMap = new HashMap<>(); vserverMap.put("vserver-id", "vserverId3"); vserverMap.put("tenant-id", "tenantId3"); vserverMap.put("cloud-owner", "cloudOwner3"); @@ -104,7 +112,7 @@ public class TestAAIResourceNode { MockAAIResourceNode mrn = new MockAAIResourceNode(); SvcLogicContext ctx = new SvcLogicContext(); populateAllVServerInfo(ctx, "tmp.vnfInfo"); - Map inParams =new HashMap(); + Map inParams = new HashMap<>(); inParams.put("responsePrefix", "tmp.vnfInfo"); mrn.getAllVServersVnfcsInfo(inParams, ctx); assertEquals(ctx.getAttribute("tmp.vnfInfo.vm-count"), "2"); @@ -138,6 +146,18 @@ public class TestAAIResourceNode { assertEquals(ctx.getAttribute("tmp.vnfInfo.vnf.vm-count-for-vf-module"),"1"); } + @Test + public void testAllVServerExceptionFlow() throws Exception{ + AAIResourceNode aai = Mockito.spy(new AAIResourceNode()); + Map inParams = new HashMap<>(); + SvcLogicContext ctx = new SvcLogicContext(); + AaiService aaiService = Mockito.mock(AaiService.class); + Mockito.doReturn(aaiService).when(aai).getAaiService(); + expectedEx.expect(SvcLogicException.class); + expectedEx.expectMessage("Unable to get VServers for the VNF"); + aai.getAllVServersVnfcsInfo(inParams, ctx); + } + public void populateAllVServerInfo(SvcLogicContext ctx, String prefix) throws Exception { ctx.setAttribute("vnf-id", "ibcx0001v"); ctx.setAttribute("vnf-host-ip-address", "000.00.00.00"); @@ -150,7 +170,6 @@ public class TestAAIResourceNode { ctx.setAttribute(prefix+ ".vm[1].tenant-id", "tenantid1"); ctx.setAttribute(prefix+ ".vm[1].cloud-owner", "cloudOwner1"); ctx.setAttribute(prefix+ ".vm[1].cloud-region-id", "cloudRegionId1"); - } public static class MockAAIResourceNode extends AAIResourceNode { @@ -165,10 +184,9 @@ public class TestAAIResourceNode { @Test public void testPopulateContext() throws Exception{ - ArrayList> vservers = new ArrayList>(); - HashMap vserverMap = new HashMap(); - vserverMap = new HashMap(); + Map vserverMap = new HashMap<>(); + vserverMap = new HashMap<>(); vserverMap.put("vserver-id", "vserverId1"); vserverMap.put("tenant-id", "tenantId1"); vserverMap.put("cloud-owner", "cloudOwner1"); @@ -176,14 +194,14 @@ public class TestAAIResourceNode { vserverMap.put("vserver-name", "vServerName1"); vserverMap.put("vnfc-name", "vnfcName1"); vservers.add(vserverMap); - vserverMap = new HashMap(); + vserverMap = new HashMap<>(); vserverMap.put("vserver-id", "vserverId3"); vserverMap.put("tenant-id", "tenantId3"); vserverMap.put("cloud-owner", "cloudOwner3"); vserverMap.put("cloud-region-id", "cloudRegionId3"); vserverMap.put("vserver-name", "vServerName3"); vservers.add(vserverMap); - vserverMap = new HashMap(); + vserverMap = new HashMap<>(); vserverMap.put("vserver-id", "vserverId9"); vserverMap.put("tenant-id", "tenantId9"); vserverMap.put("cloud-owner", "cloudOwner9"); @@ -202,84 +220,107 @@ public class TestAAIResourceNode { } @Test - public final void testGetVnfInfo() { + public final void testGetVnfInfoExceptionFlow() throws Exception { SvcLogicContext ctx = new SvcLogicContext(); - AAIResourceNode aai = new AAIResourceNode(); -Map inParams =new HashMap(); - inParams.put("responsePrefix", "tmp.vnfInfo"); - try { - aai.getVnfInfo(inParams, ctx); - } catch (SvcLogicException e) { - e.printStackTrace(); - } + AAIResourceNode aai = Mockito.spy(new AAIResourceNode()); + Map inParams = new HashMap<>(); + ctx.setAttribute("vm[0].cloud-owner", "TEST"); + ctx.setAttribute("vm[0].cloud-region-id", "TEST"); + AaiService aaiService = Mockito.mock(AaiService.class); + Mockito.doThrow(new SvcLogicException("TEST")).when(aaiService).getIdentityUrl(Mockito.anyMap(), Mockito.any(SvcLogicContext.class)); + Mockito.doReturn(aaiService).when(aai).getAaiService(); + expectedEx.expect(SvcLogicException.class); + expectedEx.expectMessage("TEST"); + aai.getVnfInfo(inParams, ctx); + } + @Test + public final void testaddVnfcs() throws SvcLogicException + { + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("vnfcReference_length", "1"); + ctx.setAttribute("vnf.vm-count", "1"); + AAIResourceNode aai = Mockito.spy(new AAIResourceNode()); + Map inParams = new HashMap<>(); + AaiService aaiService = Mockito.mock(AaiService.class); + Mockito.doReturn(aaiService).when(aai).getAaiService(); + aai.addVnfcs(inParams, ctx); } + @Test - public final void testaddVnfcs() + public final void testaddVnfcsExceptionFlow() throws Exception { SvcLogicContext ctx = new SvcLogicContext(); - AAIResourceNode aai = new AAIResourceNode(); -Map inParams =new HashMap(); + AAIResourceNode aai = Mockito.spy(new AAIResourceNode()); + Map inParams = new HashMap<>(); inParams.put("responsePrefix", "tmp.vnfInfo"); - try { - aai.addVnfcs(inParams, ctx); - } catch (SvcLogicException e) { - e.printStackTrace(); - } + AaiService aaiService = Mockito.mock(AaiService.class); + Mockito.doThrow(new SvcLogicException("TEST")).when(aaiService).getIdentityUrl(Mockito.anyMap(), Mockito.any(SvcLogicContext.class)); + Mockito.doReturn(aaiService).when(aai).getAaiService(); + expectedEx.expect(SvcLogicException.class); + aai.addVnfcs(inParams, ctx); + } + @Test + public final void testupdateVnfAndVServerStatus() throws SvcLogicException{ + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("vnf.vm-count", "1"); + AAIResourceNode aai = Mockito.spy(new AAIResourceNode()); + Map inParams = new HashMap<>(); + AaiService aaiService = Mockito.mock(AaiService.class); + Mockito.doReturn(aaiService).when(aai).getAaiService(); + aai.updateVnfAndVServerStatus(inParams, ctx); + assertEquals(AppcAaiClientConstant.OUTPUT_STATUS_SUCCESS, ctx.getAttribute(AppcAaiClientConstant.OUTPUT_PARAM_STATUS)); } + @Test - public final void testupdateVnfAndVServerStatus(){ + public final void testupdateVnfAndVServerStatusExceptionFlow() throws SvcLogicException{ SvcLogicContext ctx = new SvcLogicContext(); AAIResourceNode aai = new AAIResourceNode(); -Map inParams =new HashMap(); - - inParams.put("responsePrefix", "tmp.vnfInfo"); - try { - aai.updateVnfAndVServerStatus(inParams, ctx); - } catch (SvcLogicException e) { - e.printStackTrace(); - } + Map inParams = new HashMap<>(); + expectedEx.expect(SvcLogicException.class); + aai.updateVnfAndVServerStatus(inParams, ctx); } @Test public void testgetVfModduleModelInfo() throws Exception{ SvcLogicContext ctx = new SvcLogicContext(); AAIResourceNode aai = new AAIResourceNode(); - AAIClient aaic=null; - MockAaiService aaiService=new MockAaiService(aaic); - Map inParams =new HashMap(); + AAIClient aaic = null; + MockAaiService aaiService = new MockAaiService(aaic); + Map inParams = new HashMap<>(); inParams.put("responsePrefix", "tmp.vnfInfo"); - aai.processForVfModuleModelInfo(aaiService,inParams, ctx); - assertEquals(ctx.getAttribute("template-model-id"),"model0001"); - + aai.processForVfModuleModelInfo(aaiService, inParams, ctx); + assertEquals(ctx.getAttribute("template-model-id"), "model0001"); } + @Test public final void testSetVmParams() { SvcLogicContext ctx = new SvcLogicContext(); String vServerId = "vserver02"; ctx.setAttribute("tmp.vnfInfo.vm-count","3"); - ctx.setAttribute("tmp.vnfInfo.vm[0].vserver-id","vserver01"); - ctx.setAttribute("tmp.vnfInfo.vm[1].vserver-id","vserver02"); - ctx.setAttribute("tmp.vnfInfo.vm[1].tenant-id","ten01"); - ctx.setAttribute("tmp.vnfInfo.vm[1].cloud-region-id","cr01"); - ctx.setAttribute("tmp.vnfInfo.vm[1].cloud-owner","co01"); + ctx.setAttribute("tmp.vnfInfo.vm[0].vserver-id", "vserver01"); + ctx.setAttribute("tmp.vnfInfo.vm[1].vserver-id", "vserver02"); + ctx.setAttribute("tmp.vnfInfo.vm[1].tenant-id", "ten01"); + ctx.setAttribute("tmp.vnfInfo.vm[1].cloud-region-id", "cr01"); + ctx.setAttribute("tmp.vnfInfo.vm[1].cloud-owner", "co01"); AAIResourceNode aairn= new AAIResourceNode(); - Map params = aairn.setVmParams(ctx, vServerId); + Map params = aairn.setVmParams(ctx, vServerId); assertNotNull(params); } + @Test public final void testGetVnfcInformationForVserver() throws Exception{ MockAAIResourceNode aairn = new MockAAIResourceNode(); SvcLogicContext ctx = new SvcLogicContext(); SvcLogicContext newVnfcCtx = new SvcLogicContext(); - Map inParams = new HashMap(); - Map vnfcParams = new HashMap(); - String responsePrefix="test."; + Map inParams = new HashMap<>(); + Map vnfcParams = new HashMap<>(); + String responsePrefix = "test."; inParams.put(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX, "test"); vnfcParams.put("vnfcName", "vnfcName2"); aairn.getVnfcInformationForVserver(vnfcParams, newVnfcCtx, inParams, ctx, aairn.getAaiService(), responsePrefix); - assertEquals(ctx.getAttribute("test.vm.vnfc.vnfc-name"),"vnfcName2"); + assertEquals(ctx.getAttribute("test.vm.vnfc.vnfc-name"), "vnfcName2"); assertEquals(ctx.getAttribute("test.vm.vnfc.vnfc-type"), "vnfcType2"); assertEquals(ctx.getAttribute("test.vm.vnfc.vnfc-function-code"), "vnfcFuncCode2"); assertEquals(ctx.getAttribute("test.vm.vnfc.vnfc-group-notation"), "vnfcGrpNot2"); @@ -289,12 +330,11 @@ Map inParams =new HashMap(); public final void testGetFormattedValue() throws Exception{ MockAAIResourceNode aairn = new MockAAIResourceNode(); SvcLogicContext ctx = new SvcLogicContext(); - Map inParams = new HashMap(); + Map inParams = new HashMap<>(); inParams.put(AppcAaiClientConstant.INPUT_PARAM_RESPONSE_PREFIX, "test"); inParams.put("inputParameter", "Some/Value/With/ Many Spaces"); aairn.getFormattedValue(inParams, ctx); - assertEquals(ctx.getAttribute("template-model-id"),"Some_Value_With_ManySpaces"); - + assertEquals(ctx.getAttribute("template-model-id"), "Some_Value_With_ManySpaces"); } @Test @@ -307,7 +347,30 @@ Map inParams =new HashMap(); ctx.setAttribute("test.vnf.vm-with-no-vnfcs-count-vf-module", "0"); ctx.setAttribute("test.vnf.vm-count-for-vf-module", "2"); aairn.processCheckForVfModule("vfmoduleId1", ctx, "test.", 2); + } + @Test + public void testGetVserverInfo() throws SvcLogicException { + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.vnfInfo.vm-count", "1"); + AAIResourceNode aai = Mockito.spy(new AAIResourceNode()); + Map inParams = new HashMap<>(); + AaiService aaiService = Mockito.mock(AaiService.class); + Mockito.doReturn(aaiService).when(aai).getAaiService(); + aai.getVserverInfo(inParams, ctx); + Mockito.verify(aaiService).getVMInfo(Mockito.anyMap(), Mockito.any(SvcLogicContext.class)); + } + @Test + public void testGetVserverInfoExceptionFlow() throws Exception { + SvcLogicContext ctx = new SvcLogicContext(); + ctx.setAttribute("tmp.vnfInfo.vm-count", "1"); + Map inParams = new HashMap<>(); + AaiService aaiService = Mockito.mock(AaiService.class); + AAIResourceNode aai = Mockito.spy(new AAIResourceNode()); + Mockito.doThrow(new SvcLogicException("TEST")).when(aaiService).getVMInfo(Mockito.anyMap(), Mockito.any(SvcLogicContext.class)); + Mockito.doReturn(aaiService).when(aai).getAaiService(); + aai.getVserverInfo(inParams, ctx); + assertEquals("TEST", ctx.getAttribute(AppcAaiClientConstant.OUTPUT_PARAM_ERROR_MESSAGE)); } }