From 44d49cc9257c70ffdf70b9f6c8252792e706c48b Mon Sep 17 00:00:00 2001 From: Eylon Malin Date: Thu, 29 Aug 2019 14:47:01 +0300 Subject: add UT to ToscaParserImpl and fix little bug Issue-ID: VID-378 Signed-off-by: Eylon Malin Change-Id: I5ea0f09c2898c3a7e1db60d37dde754138a86121 Signed-off-by: Eylon Malin --- .../main/java/org/onap/vid/model/ServiceModel.java | 2 +- .../onap/vid/asdc/parser/ToscaParserImpl2Test.java | 115 +++++++++++++++------ .../java/org/onap/vid/testUtils/TestUtils.java | 3 +- .../csars/service-MnsVnn1bDmzSvc-csar.csar | Bin 0 -> 9042 bytes .../csars/service-MnsVnn1bExnSvc-csar.csar | Bin 0 -> 8913 bytes .../src/test/resources/vlan-tagging.json | 4 +- vid-app-common/src/test/resources/vrf-csar.json | 84 +++++++++++++++ 7 files changed, 170 insertions(+), 38 deletions(-) create mode 100644 vid-app-common/src/test/resources/csars/service-MnsVnn1bDmzSvc-csar.csar create mode 100644 vid-app-common/src/test/resources/csars/service-MnsVnn1bExnSvc-csar.csar create mode 100644 vid-app-common/src/test/resources/vrf-csar.json diff --git a/vid-app-common/src/main/java/org/onap/vid/model/ServiceModel.java b/vid-app-common/src/main/java/org/onap/vid/model/ServiceModel.java index 121c7e4c1..1c8a465cb 100644 --- a/vid-app-common/src/main/java/org/onap/vid/model/ServiceModel.java +++ b/vid-app-common/src/main/java/org/onap/vid/model/ServiceModel.java @@ -333,7 +333,7 @@ public class ServiceModel { // now check to see if there is a vf module with customization name that starts with normalizedVnfCustomizationName - if (!MapUtils.isEmpty(getVolumeGroups())) { + if (!MapUtils.isEmpty(getVfModules())) { for (Entry vfModuleComponent : getVfModules().entrySet()) { vfModuleCustomizationName = vfModuleComponent.getValue().getModelCustomizationName(); diff --git a/vid-app-common/src/test/java/org/onap/vid/asdc/parser/ToscaParserImpl2Test.java b/vid-app-common/src/test/java/org/onap/vid/asdc/parser/ToscaParserImpl2Test.java index 92d78d43e..e25834bd6 100644 --- a/vid-app-common/src/test/java/org/onap/vid/asdc/parser/ToscaParserImpl2Test.java +++ b/vid-app-common/src/test/java/org/onap/vid/asdc/parser/ToscaParserImpl2Test.java @@ -26,11 +26,13 @@ import static org.hamcrest.Matchers.allOf; import static org.hamcrest.Matchers.hasKey; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import static org.onap.vid.asdc.parser.ToscaParserImpl2.Constants.ECOMP_GENERATED_NAMING_PROPERTY; import static org.onap.vid.testUtils.TestUtils.assertJsonStringEqualsIgnoreNulls; +import static org.onap.vid.testUtils.TestUtils.testWithSystemProperty; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; @@ -43,6 +45,7 @@ import java.nio.file.Path; import java.util.ArrayList; import java.util.Arrays; import java.util.LinkedHashMap; +import java.util.List; import java.util.Map; import java.util.UUID; import java.util.stream.Collectors; @@ -57,6 +60,7 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.onap.sdc.tosca.parser.api.ISdcCsarHelper; +import org.onap.sdc.tosca.parser.exceptions.SdcToscaParserException; import org.onap.sdc.toscaparser.api.Group; import org.onap.sdc.toscaparser.api.NodeTemplate; import org.onap.sdc.toscaparser.api.Property; @@ -178,15 +182,16 @@ public class ToscaParserImpl2Test { } } -// @Test -// public void verifyFabricConfiguration() throws Exception { -// ToscaParserMockHelper toscaParserMockHelper = Arrays.stream(getExpectedServiceModel()).filter(x -> x.getUuid().equals(Constants.fabricConfigurationUuid)).findFirst().get(); -// ServiceModel actualServiceModel = toscaParserImpl2.makeServiceModel(getCsarPath(Constants.fabricConfigurationUuid), getServiceByUuid(Constants.fabricConfigurationUuid)); -// final Map fabricConfigurations = actualServiceModel.getFabricConfigurations(); -// String fabricConfigName = "Fabric Configuration 0"; -// Map expectedFC = toscaParserMockHelper.getNewServiceModel().getFabricConfigurations(); -// verifyBaseNodeMetadata(expectedFC.get(fabricConfigName), fabricConfigurations.get(fabricConfigName)); -// } + @Test + public void verifyFabricConfiguration() throws Exception { + ToscaParserMockHelper toscaParserMockHelper = Arrays.stream(getExpectedServiceModel()).filter(x -> x.getUuid().equals(Constants.fabricConfigurationUuid)).findFirst().get(); + ServiceModel actualServiceModel = toscaParserImpl2.makeServiceModel(getCsarPath(Constants.fabricConfigurationUuid), getServiceByUuid(Constants.fabricConfigurationUuid)); + final Map fabricConfigurations = actualServiceModel.getFabricConfigurations(); + String fabricConfigName = "Fabric Configuration 0"; + Map expectedFC = toscaParserMockHelper.getServiceModel().getFabricConfigurations(); + verifyBaseNodeMetadata(expectedFC.get(fabricConfigName), fabricConfigurations.get(fabricConfigName)); + } + private void verifyCollectionResource(CR expectedCR, CR actualCR) { verifyBaseNodeMetadata(expectedCR, actualCR); @@ -273,6 +278,25 @@ public class ToscaParserImpl2Test { assertJsonStringEqualsIgnoreNulls("{ vfModules: { 201712488_pasqualevpe10..201712488PasqualeVpe1..PASQUALE_vRE_BV..module-1: { inputs: { availability_zone_0: { } } } } }", om.writeValueAsString(serviceModel)); } + @DataProvider + public static Object[] oldCsarUuid() { + return new Object[][]{{ "2a53419b-3f85-4ad5-a9c9-d79905500a27", "MNS VNN1B EXN VF 1" } + , {"e32a5014-357f-4be4-b3f9-fecb0010811e", "MNS VNN1B DMZ VF 1"}}; + } + + @Test(dataProvider = "oldCsarUuid") + public void csarWithVnfWithVfModuleInModel(String oldCsarUuid, String vnfName) throws Exception { + testWithSystemProperty("asdc.model.namespace", "com.att.d2.", ()-> { + ToscaParser tosca = new ToscaParserImpl(); + final UUID uuid = UUID.fromString(oldCsarUuid); + final ServiceModel serviceModel = tosca.makeServiceModel(oldCsarUuid, asdcClient.getServiceToscaModel(uuid), asdcClient.getService(uuid)); + assertThat(serviceModel.getVnfs(), aMapWithSize(1)); + assertThat(serviceModel.getVfModules(), aMapWithSize(2)); + assertThat(serviceModel.getVolumeGroups(), aMapWithSize(0)); + assertThat(serviceModel.getVnfs().get(vnfName).getVfModules(), aMapWithSize(2)); + }); + } + @Test public void modelWithNfNamingWithToValues_ecompGeneratedNamingIsExtracted() throws Exception { final ToscaParserMockHelper mockHelper = new ToscaParserMockHelper("90fe6842-aa76-4b68-8329-5c86ff564407", "empty.json"); @@ -309,6 +333,19 @@ public class ToscaParserImpl2Test { JsonAssert.assertJsonEquals(actualVnfGroups, expectedVnfGroups); } + @Test + public void assertEqualsBetweenVrfs() throws Exception { + ToscaParserMockHelper mockHelper = new ToscaParserMockHelper(Constants.vrfUuid, Constants.vrfFilePath); + ServiceModel serviceModel = toscaParserImpl2.makeServiceModel(getCsarPath(mockHelper.getUuid()), getServiceByUuid(mockHelper.getUuid())); + Map actualVrfs = serviceModel.getVrfs(); + Map expectedVrfs = mockHelper.getServiceModel().getVrfs(); + JsonAssert.assertJsonEquals(expectedVrfs, actualVrfs); + //assert that vrf isn't returned also as configuration (because it's type is configuration) + Map actualConfigurations = serviceModel.getConfigurations(); + Map expectedConfigurations = mockHelper.getServiceModel().getConfigurations(); + JsonAssert.assertJsonEquals(expectedConfigurations, actualConfigurations ); + } + private void verifyBaseNodeMetadata(Node expectedNode, Node actualNode) { Assert.assertEquals(expectedNode.getName(), actualNode.getName()); Assert.assertEquals(expectedNode.getCustomizationUuid(), actualNode.getCustomizationUuid()); @@ -337,9 +374,9 @@ public class ToscaParserImpl2Test { new ToscaParserMockHelper(Constants.vfWithAnnotationUuid, Constants.vfWithAnnotationFilePath), new ToscaParserMockHelper(Constants.vfWithVfcGroup, Constants.vfWithVfcGroupFilePath), new ToscaParserMockHelper(Constants.configurationUuid, Constants.configurationFilePath), -// new ToscaParserMockHelper(Constants.fabricConfigurationUuid, Constants.fabricConfigurationFilePath), -// new ToscaParserMockHelper(Constants.vlanTaggingUuid, Constants.vlanTaggingFilePath), -// new ToscaParserMockHelper(Constants.vnfGroupingUuid, Constants.vnfGroupingFilePath) + new ToscaParserMockHelper(Constants.fabricConfigurationUuid, Constants.fabricConfigurationFilePath), + new ToscaParserMockHelper(Constants.vlanTaggingUuid, Constants.vlanTaggingFilePath), + new ToscaParserMockHelper(Constants.vnfGroupingUuid, Constants.vnfGroupingFilePath), new ToscaParserMockHelper("3f6bd9e9-0942-49d3-84e8-6cdccd6de339", "./vLoadBalancerMS-with-policy.TOSCA.json"), }; @@ -371,12 +408,14 @@ public class ToscaParserImpl2Test { static final String vfWithVfcGroupFilePath = "vf-with-vfcInstanceGroups.json"; public static final String configurationByPolicyFalseUuid = "ee6d61be-4841-4f98-8f23-5de9da845544"; public static final String configurationByPolicyFalseFilePath = "policy-configuration-by-policy-false.JSON"; - //public static final String fabricConfigurationUuid = "12344bb4-a416-4b4e-997e-0059973630b9"; - //public static final String fabricConfigurationFilePath = "fabric-configuration.json"; - //public static final String vlanTaggingUuid = "1837481c-fa7d-4362-8ce1-d05fafc87bd1"; - //public static final String vlanTaggingFilePath = "vlan-tagging.json"; - //public static final String vnfGroupingUuid = "4117a0b6-e234-467d-b5b9-fe2f68c8b0fc"; - //public static final String vnfGroupingFilePath = "vnf-grouping-csar.json"; + public static final String fabricConfigurationUuid = "12344bb4-a416-4b4e-997e-0059973630b9"; + public static final String fabricConfigurationFilePath = "fabric-configuration.json"; + public static final String vlanTaggingUuid = "1837481c-fa7d-4362-8ce1-d05fafc87bd1"; + public static final String vlanTaggingFilePath = "vlan-tagging.json"; + public static final String vnfGroupingUuid = "4117a0b6-e234-467d-b5b9-fe2f68c8b0fc"; + public static final String vnfGroupingFilePath = "vnf-grouping-csar.json"; + public static final String vrfUuid = "f028b2e2-7080-4b13-91b2-94944d4c42d8"; + public static final String vrfFilePath = "vrf-csar.json"; public static final String QUANTITY = "quantity"; @@ -409,22 +448,30 @@ public class ToscaParserImpl2Test { )); } -// @DataProvider -// public Object[][] expectedPoliciesTargets() { -// return new Object[][] { -// {Constants.vnfGroupingUuid, newArrayList("groupingservicefortest..ResourceInstanceGroup..0", "groupingservicefortest..ResourceInstanceGroup..1")}, -// {Constants.vfUuid, newArrayList()}, -// {Constants.vlanTaggingUuid, newArrayList()} -// }; -// } -// -// @Test(dataProvider = "expectedPoliciesTargets") -// public void testExtractNamingPoliciesTargets(String uuid, ArrayList expectedTargets) throws AsdcCatalogException, SdcToscaParserException { -// ISdcCsarHelper sdcCsarHelper = toscaParserImpl2.getSdcCsarHelper(getCsarPath(uuid)); -// List policiesTargets = toscaParserImpl2.extractNamingPoliciesTargets(sdcCsarHelper); -// -// assertEquals(expectedTargets, policiesTargets); -// } + @DataProvider + public Object[][] expectedPoliciesTargets() { + return new Object[][] { + {Constants.vnfGroupingUuid, newArrayList("groupingservicefortest..ResourceInstanceGroup..0", "groupingservicefortest..ResourceInstanceGroup..1")}, + {Constants.vfUuid, newArrayList()}, + {Constants.vlanTaggingUuid, newArrayList()} + }; + } + + @Test(dataProvider = "expectedPoliciesTargets") + public void testExtractNamingPoliciesTargets(String uuid, ArrayList expectedTargets) throws AsdcCatalogException, SdcToscaParserException { + ISdcCsarHelper sdcCsarHelper = toscaParserImpl2.getSdcCsarHelper(getCsarPath(uuid)); + List policiesTargets = toscaParserImpl2.extractNamingPoliciesTargets(sdcCsarHelper); + + assertEquals(expectedTargets, policiesTargets); + } + + @Test + public void testScalingPolicyOfVnfGroup() throws AsdcCatalogException, SdcToscaParserException { + String vnfGroupingUuid = "4117a0b6-e234-467d-b5b9-fe2f68c8b0fc"; + Map actualVnfGroups = toscaParserImpl2.makeServiceModel(getCsarPath(vnfGroupingUuid), getServiceByUuid(vnfGroupingUuid)).getVnfGroups(); + assertFalse(actualVnfGroups.get("groupingservicefortest..ResourceInstanceGroup..0").getProperties().containsKey(Constants.QUANTITY)); + assertEquals(3, actualVnfGroups.get("groupingservicefortest..ResourceInstanceGroup..1").getProperties().get(Constants.QUANTITY)); + } @DataProvider public Object[][] expectedEcompGeneratedNaming() { diff --git a/vid-app-common/src/test/java/org/onap/vid/testUtils/TestUtils.java b/vid-app-common/src/test/java/org/onap/vid/testUtils/TestUtils.java index 5fc583274..58ee2d38d 100644 --- a/vid-app-common/src/test/java/org/onap/vid/testUtils/TestUtils.java +++ b/vid-app-common/src/test/java/org/onap/vid/testUtils/TestUtils.java @@ -68,6 +68,7 @@ import org.mockito.Mockito; import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; import org.onap.portalsdk.core.util.SystemProperties; +import org.onap.vid.asdc.AsdcCatalogException; import org.onap.vid.asdc.beans.Service; import org.onap.vid.mso.model.CloudConfiguration; import org.springframework.core.env.Environment; @@ -279,7 +280,7 @@ public class TestUtils { public interface Test { - void apply(); + void apply() throws AsdcCatalogException; } public static void testWithSystemProperty(String key, String value, Test test) throws Exception { diff --git a/vid-app-common/src/test/resources/csars/service-MnsVnn1bDmzSvc-csar.csar b/vid-app-common/src/test/resources/csars/service-MnsVnn1bDmzSvc-csar.csar new file mode 100644 index 000000000..b7b011a07 Binary files /dev/null and b/vid-app-common/src/test/resources/csars/service-MnsVnn1bDmzSvc-csar.csar differ diff --git a/vid-app-common/src/test/resources/csars/service-MnsVnn1bExnSvc-csar.csar b/vid-app-common/src/test/resources/csars/service-MnsVnn1bExnSvc-csar.csar new file mode 100644 index 000000000..c680bc47f Binary files /dev/null and b/vid-app-common/src/test/resources/csars/service-MnsVnn1bExnSvc-csar.csar differ diff --git a/vid-app-common/src/test/resources/vlan-tagging.json b/vid-app-common/src/test/resources/vlan-tagging.json index 454327aa3..6789e646b 100644 --- a/vid-app-common/src/test/resources/vlan-tagging.json +++ b/vid-app-common/src/test/resources/vlan-tagging.json @@ -138,7 +138,7 @@ } }, "networks": {}, - "collectionResource": {}, + "collectionResources": {}, "configurations": {}, "fabricConfigurations": {}, "serviceProxies": {}, @@ -219,4 +219,4 @@ "volumeGroups": {}, "pnfs": {}, "vnfGroups": {} -} \ No newline at end of file +} diff --git a/vid-app-common/src/test/resources/vrf-csar.json b/vid-app-common/src/test/resources/vrf-csar.json new file mode 100644 index 000000000..b1d4e4508 --- /dev/null +++ b/vid-app-common/src/test/resources/vrf-csar.json @@ -0,0 +1,84 @@ +{ + "service":{ + "uuid":"f028b2e2-7080-4b13-91b2-94944d4c42d8", + "invariantUuid":"dfc2c44c-2429-44ca-ae26-1e6dc1f207fb", + "name":"infraVPN", + "version":"1.0", + "toscaModelURL":null, + "category":"Network Service", + "serviceType":"INFRASTRUCTURE-VPN", + "serviceRole":"BONDING", + "description":"ddd", + "serviceEcompNaming":"true", + "instantiationType":"A-La-Carte", + "inputs":{ + + } + }, + "vnfs":{ + + }, + "networks":{ + + }, + "collectionResources": { + }, + "configurations":{ + + }, + "fabricConfigurations":{ + + }, + "serviceProxies":{ + "misvpn_service_proxy 0":{ + "uuid":"35186eb0-e6b6-4fa5-86bb-1501b342a7b1", + "invariantUuid":"73f89e21-b96c-473f-8884-8b93bcbd2f76", + "description":"A Proxy for Service MISVPN_SERVICE", + "name":"MISVPN_SERVICE Service Proxy", + "version":"3.0", + "customizationUuid":"4c2fb7e0-a0a5-4b32-b6ed-6a974e55d923", + "inputs":{ + + }, + "commands":{ + + }, + "properties":{ + "ecomp_generated_naming":"false" + }, + "type":"Service Proxy", + "sourceModelUuid":"d5cc7d15-c842-450e-95ae-2a69e66dd23b", + "sourceModelInvariant":"c126ec86-59fe-48c0-9532-e39a9b3e5272", + "sourceModelName":"MISVPN_SERVICE" + } + }, + "vfModules":{ + }, + "volumeGroups":{ + + }, + "pnfs":{ + + }, + "vnfGroups":{ + + }, + "vrfs":{ + "VRF Entry Configuration 0": { + "uuid": "9cac02be-2489-4374-888d-2863b4511a59", + "invariantUuid": "b67a289b-1688-496d-86e8-1583c828be0a", + "description": "VRF Entry configuration object", + "name": "VRF Entry Configuration", + "version": "30.0", + "customizationUuid": "dd024d73-9bd1-425d-9db5-476338d53433", + "inputs": {}, + "commands": {}, + "properties": { + "ecomp_generated_naming": "false", + "role":"INFRASTRUCTURE-CLOUD-VPN", + "type":"VRF-ENTRY" + }, + "type": "Configuration" + } + } +} \ No newline at end of file -- cgit 1.2.3-korg