From 7fcc74469c941c1834cd02b54ff5ca88a53bf83b Mon Sep 17 00:00:00 2001 From: "mark.j.leonard" Date: Mon, 28 Jan 2019 11:42:54 +0000 Subject: [PATCH] Load type mappings from a group configuration file Change the filter-types.properties file: re-implement to use JSON content. Remove the System Property that defines the location of the file and add this to the Spring application properties. Initialise the type-to-model mappings using the key=value pairs from this JSON content. Refactor existing Junit tests to remove duplicated resource loading code. Change-Id: Idb2e962fe5cae39b70cc8cf16053d0a253f4fac0 Issue-ID: AAI-2121 Signed-off-by: mark.j.leonard --- pom.xml | 3 +- src/main/bin/start.sh | 5 +- .../babel/parser/ArtifactGeneratorToscaParser.java | 65 +++++++++------- .../xml/generator/api/AaiArtifactGenerator.java | 12 +-- .../xml/generator/data/GroupConfiguration.java | 45 +++++++++++ .../generator/data/WidgetConfigurationUtil.java | 46 ++++++++--- .../onap/aai/babel/xml/generator/model/Model.java | 39 +++------- .../onap/aai/babel/xml/generator/model/Widget.java | 7 +- src/main/resources/application.properties | 4 +- .../parser/TestArtifactGeneratorToscaParser.java | 9 +-- .../org/onap/aai/babel/parser/TestToscaParser.java | 31 ++------ .../aai/babel/service/CsarToXmlConverterTest.java | 21 ++--- .../service/TestGenerateArtifactsServiceImpl.java | 18 ++--- .../org/onap/aai/babel/util/ArtifactTestUtils.java | 51 +++++++++--- .../java/org/onap/aai/babel/util/Resources.java | 31 ++++++++ .../aai/babel/xml/generator/model/TestModel.java | 29 ++++--- .../babel/xml/generator/model/TestVfModule.java | 90 +++++++++++++--------- .../aai/babel/xml/generator/model/TestWidget.java | 19 ++--- src/test/resources/filter-types.properties | 1 - src/test/resources/tosca-mappings.json | 21 +++++ 20 files changed, 333 insertions(+), 214 deletions(-) create mode 100644 src/main/java/org/onap/aai/babel/xml/generator/data/GroupConfiguration.java create mode 100644 src/test/java/org/onap/aai/babel/util/Resources.java delete mode 100644 src/test/resources/filter-types.properties create mode 100644 src/test/resources/tosca-mappings.json diff --git a/pom.xml b/pom.xml index 3f6b7e3..0798d5c 100644 --- a/pom.xml +++ b/pom.xml @@ -143,7 +143,7 @@ rest-client ${aai.rest.client.version} - + org.springframework.boot @@ -176,7 +176,6 @@ -DCONFIG_HOME=./appconfig-local -DAPP_HOME=. -Dartifactgenerator.config=./appconfig-local/artifact-generator.properties - -Dgroupfilter.config=./appconfig-local/filter-types.properties -DKEY_STORE_PASSWORD=${KEY_STORE_PASSWORD} diff --git a/src/main/bin/start.sh b/src/main/bin/start.sh index c71acca..1ee1db6 100644 --- a/src/main/bin/start.sh +++ b/src/main/bin/start.sh @@ -3,8 +3,8 @@ # ============LICENSE_START======================================================= # org.onap.aai # ================================================================================ -# Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. -# Copyright © 2017-2018 European Software Marketing Ltd. +# Copyright © 2017-2019 AT&T Intellectual Property. All rights reserved. +# Copyright © 2017-2019 European Software Marketing Ltd. # ================================================================================ # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -34,7 +34,6 @@ fi PROPS="-DAPP_HOME=${APP_HOME}" PROPS="${PROPS} -DCONFIG_HOME=${CONFIG_HOME}" PROPS="${PROPS} -Dartifactgenerator.config=${CONFIG_HOME}/artifact-generator.properties" -PROPS="${PROPS} -Dgroupfilter.config=${CONFIG_HOME}/filter-types.properties" PROPS="${PROPS} -DKEY_STORE_PASSWORD=${KEY_STORE_PASSWORD}" JVM_MAX_HEAP=${MAX_HEAP:-1024} diff --git a/src/main/java/org/onap/aai/babel/parser/ArtifactGeneratorToscaParser.java b/src/main/java/org/onap/aai/babel/parser/ArtifactGeneratorToscaParser.java index 615ad1e..505afbf 100644 --- a/src/main/java/org/onap/aai/babel/parser/ArtifactGeneratorToscaParser.java +++ b/src/main/java/org/onap/aai/babel/parser/ArtifactGeneratorToscaParser.java @@ -2,8 +2,8 @@ * ============LICENSE_START======================================================= * org.onap.aai * ================================================================================ - * Copyright � 2017-2018 AT&T Intellectual Property. All rights reserved. - * Copyright � 2017-2018 European Software Marketing Ltd. + * Copyright © 2017-2019 AT&T Intellectual Property. All rights reserved. + * Copyright © 2017-2019 European Software Marketing Ltd. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,8 +20,12 @@ */ package org.onap.aai.babel.parser; +import com.google.gson.Gson; +import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; @@ -32,6 +36,7 @@ import java.util.Properties; import java.util.stream.Collectors; import java.util.stream.Stream; import org.onap.aai.babel.logging.LogHelper; +import org.onap.aai.babel.xml.generator.data.GroupConfiguration; import org.onap.aai.babel.xml.generator.data.WidgetConfigurationUtil; import org.onap.aai.babel.xml.generator.model.AllotedResource; import org.onap.aai.babel.xml.generator.model.InstanceGroup; @@ -82,7 +87,7 @@ public class ArtifactGeneratorToscaParser { * Constructs using csarHelper * * @param csarHelper - * The csar helper + * The csar helper */ public ArtifactGeneratorToscaParser(ISdcCsarHelper csarHelper) { this.csarHelper = csarHelper; @@ -92,7 +97,7 @@ public class ArtifactGeneratorToscaParser { * Get or create the artifact description. * * @param model - * the artifact model + * the artifact model * @return the artifact model's description */ public static String getArtifactDescription(Model model) { @@ -130,26 +135,28 @@ public class ArtifactGeneratorToscaParser { } /** - * Initialises the group filter configuration. + * Initialises the group filtering and mapping configuration. + * + * @throws FileNotFoundException * - * @throws IOException */ - public static void initGroupFilterConfiguration() throws IOException { - log.debug("Getting Filter Tyoes Configuration"); + public static void initGroupFilterConfiguration() throws FileNotFoundException { + log.debug("Getting Filter Types Configuration"); String configLocation = System.getProperty(PROPERTY_GROUP_FILTERS_CONFIG_FILE); - if (configLocation != null) { - File file = new File(configLocation); - if (file.exists()) { - Properties properties = new Properties(); - properties.load(new FileInputStream(file)); - WidgetConfigurationUtil.setFilterConfig(properties); - } else { - throw new IllegalArgumentException(String.format(GENERATOR_AAI_CONFIGFILE_NOT_FOUND, configLocation)); - } - } else { + if (configLocation == null) { throw new IllegalArgumentException( String.format(GENERATOR_AAI_CONFIGLOCATION_NOT_FOUND, PROPERTY_GROUP_FILTERS_CONFIG_FILE)); } + + File file = new File(configLocation); + if (!file.exists()) { + throw new IllegalArgumentException(String.format(GENERATOR_AAI_CONFIGFILE_NOT_FOUND, configLocation)); + } + + BufferedReader bufferedReader = new BufferedReader(new FileReader(configLocation)); + GroupConfiguration config = new Gson().fromJson(bufferedReader, GroupConfiguration.class); + WidgetConfigurationUtil.setSupportedInstanceGroups(config.getInstanceGroupTypes()); + WidgetConfigurationUtil.setTypeMappings(config.getToscaToWidgetMappings()); } /** @@ -178,9 +185,9 @@ public class ArtifactGeneratorToscaParser { * duplicate keys then the TOSCA Property value takes precedence. * * @param stringProps - * initial Map of String property values (e.g. from the TOSCA YAML metadata section) + * initial Map of String property values (e.g. from the TOSCA YAML metadata section) * @param toscaProps - * Map of TOSCA Property Type Object values to merge in (or overwrite) + * Map of TOSCA Property Type Object values to merge in (or overwrite) * @return a Map of the property values converted to String */ public Map mergeProperties(Map stringProps, Map toscaProps) { @@ -278,13 +285,13 @@ public class ArtifactGeneratorToscaParser { * Create an Instance Group Model and populate it with the supplied data. * * @param resourceModel - * the Resource node template Model + * the Resource node template Model * @param memberNodes - * the Resources and Widgets belonging to the Group + * the Resources and Widgets belonging to the Group * @param metaProperties - * the metadata of the Group + * the metadata of the Group * @param properties - * the properties of the Group + * the properties of the Group * @return the Instance Group and Member resource models */ private List processInstanceGroup(Model resourceModel, ArrayList memberNodes, @@ -379,7 +386,7 @@ public class ArtifactGeneratorToscaParser { * Create a Map of property name against String property value from the input Map * * @param inputMap - * The input Map + * The input Map * @return Map of property name against String property value */ private Map populateStringProperties(Map inputMap) { @@ -392,13 +399,13 @@ public class ArtifactGeneratorToscaParser { * is ProvidingService return true, otherwise return false. * * @param resourceModel - * parent Resource + * parent Resource * @param metaData - * for populating the Resource IDs + * for populating the Resource IDs * @param resourceNode - * any Model (will be ignored if not a Resource) + * any Model (will be ignored if not a Resource) * @param nodeProperties - * the node properties + * the node properties * @return whether or not a ProvidingService was prcoessed */ private boolean processModel(Model resourceModel, Metadata metaData, Model resourceNode, diff --git a/src/main/java/org/onap/aai/babel/xml/generator/api/AaiArtifactGenerator.java b/src/main/java/org/onap/aai/babel/xml/generator/api/AaiArtifactGenerator.java index 531a044..d6d0a1e 100644 --- a/src/main/java/org/onap/aai/babel/xml/generator/api/AaiArtifactGenerator.java +++ b/src/main/java/org/onap/aai/babel/xml/generator/api/AaiArtifactGenerator.java @@ -102,7 +102,7 @@ public class AaiArtifactGenerator implements ArtifactGenerator { * * @param serviceVersion * @param csarHelper - * interface to the TOSCA parser + * interface to the TOSCA parser * @return the generated Artifacts (containing XML models) */ private GenerationData generateAllArtifacts(final String serviceVersion, ISdcCsarHelper csarHelper) { @@ -265,7 +265,7 @@ public class AaiArtifactGenerator implements ArtifactGenerator { * Method to generate the artifact name for an AAI model. * * @param model - * AAI artifact model + * AAI artifact model * @return Model artifact name */ private String getArtifactName(Model model) { @@ -289,9 +289,9 @@ public class AaiArtifactGenerator implements ArtifactGenerator { * Create Resource artifact model from the AAI xml model string. * * @param resourceModel - * Model of the resource artifact + * Model of the resource artifact * @param aaiResourceModel - * AAI model as string + * AAI model as string * @return Generated {@link Artifact} model for the resource */ private Artifact getResourceArtifact(Model resourceModel, String aaiResourceModel) { @@ -321,9 +321,9 @@ public class AaiArtifactGenerator implements ArtifactGenerator { * Create Service artifact model from the AAI XML model. * * @param serviceModel - * Model of the service artifact + * Model of the service artifact * @param aaiServiceModel - * AAI model as string + * AAI model as string * @return Generated {@link Artifact} model for the service */ private Artifact getServiceArtifact(Service serviceModel, String aaiServiceModel) { diff --git a/src/main/java/org/onap/aai/babel/xml/generator/data/GroupConfiguration.java b/src/main/java/org/onap/aai/babel/xml/generator/data/GroupConfiguration.java new file mode 100644 index 0000000..9223f27 --- /dev/null +++ b/src/main/java/org/onap/aai/babel/xml/generator/data/GroupConfiguration.java @@ -0,0 +1,45 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.aai + * ================================================================================ + * Copyright © 2017-2019 AT&T Intellectual Property. All rights reserved. + * Copyright © 2017-2019 European Software Marketing Ltd. + * ================================================================================ + * 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.onap.aai.babel.xml.generator.data; + +import java.util.List; +import java.util.Map; + +public class GroupConfiguration { + + /** + * Names of Instance Groups that will be processed (not filtered out). + */ + private List instanceGroupTypes; + + /** + * Mapping from TOSCA type to Widget Model. + */ + private Map toscaToWidgetMappings; + + public List getInstanceGroupTypes() { + return instanceGroupTypes; + } + + public Map getToscaToWidgetMappings() { + return toscaToWidgetMappings; + } +} diff --git a/src/main/java/org/onap/aai/babel/xml/generator/data/WidgetConfigurationUtil.java b/src/main/java/org/onap/aai/babel/xml/generator/data/WidgetConfigurationUtil.java index 9f8cbf8..30b6c8e 100644 --- a/src/main/java/org/onap/aai/babel/xml/generator/data/WidgetConfigurationUtil.java +++ b/src/main/java/org/onap/aai/babel/xml/generator/data/WidgetConfigurationUtil.java @@ -2,8 +2,8 @@ * ============LICENSE_START======================================================= * org.onap.aai * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * Copyright © 2017-2018 European Software Marketing Ltd. + * Copyright © 2017-2019 AT&T Intellectual Property. All rights reserved. + * Copyright © 2017-2019 European Software Marketing Ltd. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,15 +20,19 @@ */ package org.onap.aai.babel.xml.generator.data; -import java.util.Arrays; import java.util.Collections; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.Map.Entry; import java.util.Properties; +import org.onap.aai.babel.xml.generator.model.Model; public class WidgetConfigurationUtil { private static Properties config; private static List instanceGroups = Collections.emptyList(); + private static Map> typeToModel = new HashMap<>(); /* * Private constructor to prevent instantiation @@ -45,14 +49,38 @@ public class WidgetConfigurationUtil { WidgetConfigurationUtil.config = config; } - public static void setFilterConfig(Properties properties) { - String instanceGroupsList = (String) properties.get("AAI.instance-group-types"); - if (instanceGroupsList != null) { - instanceGroups = Arrays.asList(instanceGroupsList.split(",")); - } - } + public static void setSupportedInstanceGroups(List supportedInstanceGroups) { + instanceGroups = supportedInstanceGroups; + } public static boolean isSupportedInstanceGroup(String groupType) { return instanceGroups.contains(groupType); } + + /** + * Create the mappings from TOSCA type to Widget type. The Properties store a set of TOSCA type prefix Strings. + * These keys take a single class name (String), which is used to map to a Widget Class in the Model. + * + * @param map + * the key/value pairs of TOSCA type and Class name + */ + @SuppressWarnings("unchecked") + public static void setTypeMappings(Map map) { + for (Entry entry : map.entrySet()) { + final String toscaType = entry.getKey(); + final String javaBean = entry.getValue(); + final String modelClassName = Model.class.getPackage().getName() + "." + javaBean; + try { + typeToModel.put(toscaType, (Class) Class.forName(modelClassName)); + } catch (ClassNotFoundException e) { + throw new IllegalArgumentException( + String.format("Unsupported type \"%s\" for TOSCA mapping %s: no class found for %s", // + javaBean, toscaType, modelClassName)); + } + } + } + + public static Class getModelFromType(String typePrefix) { + return typeToModel.get(typePrefix); + } } diff --git a/src/main/java/org/onap/aai/babel/xml/generator/model/Model.java b/src/main/java/org/onap/aai/babel/xml/generator/model/Model.java index 7b2fc42..0e2b8d5 100644 --- a/src/main/java/org/onap/aai/babel/xml/generator/model/Model.java +++ b/src/main/java/org/onap/aai/babel/xml/generator/model/Model.java @@ -2,8 +2,8 @@ * ============LICENSE_START======================================================= * org.onap.aai * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * Copyright © 2017-2018 European Software Marketing Ltd. + * Copyright © 2017-2019 AT&T Intellectual Property. All rights reserved. + * Copyright © 2017-2019 European Software Marketing Ltd. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -29,6 +29,7 @@ import java.util.Optional; import java.util.Set; import org.onap.aai.babel.logging.ApplicationMsgs; import org.onap.aai.babel.logging.LogHelper; +import org.onap.aai.babel.xml.generator.data.WidgetConfigurationUtil; import org.onap.aai.babel.xml.generator.error.IllegalAccessException; import org.onap.aai.babel.xml.generator.types.Cardinality; import org.onap.aai.babel.xml.generator.types.ModelType; @@ -40,22 +41,6 @@ public abstract class Model { private static Logger log = LogHelper.INSTANCE; - private static Map> typeToModel = new HashMap<>(); - static { - typeToModel.put("org.openecomp.resource.vf.allottedResource", AllotedResource.class); - typeToModel.put("org.openecomp.resource.vfc.AllottedResource", ProvidingService.class); - typeToModel.put("org.openecomp.resource.vfc", VServerWidget.class); - typeToModel.put("org.openecomp.resource.cp", LIntfWidget.class); - typeToModel.put("org.openecomp.cp", LIntfWidget.class); - typeToModel.put("org.openecomp.resource.vl", L3Network.class); - typeToModel.put("org.openecomp.resource.vf", VirtualFunction.class); - typeToModel.put("org.openecomp.groups.vfmodule", VfModule.class); - typeToModel.put("org.openecomp.groups.VfModule", VfModule.class); - typeToModel.put("org.openecomp.resource.vfc.nodes.heat.cinder", VolumeWidget.class); - typeToModel.put("org.openecomp.nodes.PortMirroringConfiguration", Configuration.class); - typeToModel.put("org.openecomp.resource.cr.Kk1806Cr1", CR.class); - } - private enum ModelIdentification { ID("vfModuleModelInvariantUUID", "serviceInvariantUUID", "resourceInvariantUUID", "invariantUUID", "providing_service_invariant_uuid") { @@ -154,7 +139,7 @@ public abstract class Model { private static Optional getModelFromType(String typePrefix) { Optional modelToBeReturned = Optional.empty(); - Class clazz = typeToModel.get(typePrefix); + Class clazz = WidgetConfigurationUtil.getModelFromType(typePrefix); if (clazz != null) { try { modelToBeReturned = Optional.ofNullable(clazz.getConstructor().newInstance()); @@ -197,8 +182,8 @@ public abstract class Model { * @return the cardinality */ public Cardinality getCardinality() { - org.onap.aai.babel.xml.generator.types.Model model = this.getClass() - .getAnnotation(org.onap.aai.babel.xml.generator.types.Model.class); + org.onap.aai.babel.xml.generator.types.Model model = + this.getClass().getAnnotation(org.onap.aai.babel.xml.generator.types.Model.class); return model.cardinality(); } @@ -208,8 +193,8 @@ public abstract class Model { * @return the delete flag */ public boolean getDeleteFlag() { - org.onap.aai.babel.xml.generator.types.Model model = this.getClass() - .getAnnotation(org.onap.aai.babel.xml.generator.types.Model.class); + org.onap.aai.babel.xml.generator.types.Model model = + this.getClass().getAnnotation(org.onap.aai.babel.xml.generator.types.Model.class); return model.dataDeleteFlag(); } @@ -258,8 +243,8 @@ public abstract class Model { * @return the widget version id */ public String getWidgetId() { - org.onap.aai.babel.xml.generator.types.Model model = this.getClass() - .getAnnotation(org.onap.aai.babel.xml.generator.types.Model.class); + org.onap.aai.babel.xml.generator.types.Model model = + this.getClass().getAnnotation(org.onap.aai.babel.xml.generator.types.Model.class); return Widget.getWidget(model.widget()).getId(); } @@ -269,8 +254,8 @@ public abstract class Model { * @return the invariant id */ public String getWidgetInvariantId() { - org.onap.aai.babel.xml.generator.types.Model model = this.getClass() - .getAnnotation(org.onap.aai.babel.xml.generator.types.Model.class); + org.onap.aai.babel.xml.generator.types.Model model = + this.getClass().getAnnotation(org.onap.aai.babel.xml.generator.types.Model.class); return Widget.getWidget(model.widget()).getWidgetId(); } diff --git a/src/main/java/org/onap/aai/babel/xml/generator/model/Widget.java b/src/main/java/org/onap/aai/babel/xml/generator/model/Widget.java index d78e2e6..963d9e2 100644 --- a/src/main/java/org/onap/aai/babel/xml/generator/model/Widget.java +++ b/src/main/java/org/onap/aai/babel/xml/generator/model/Widget.java @@ -2,8 +2,8 @@ * ============LICENSE_START======================================================= * org.onap.aai * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * Copyright © 2017-2018 European Software Marketing Ltd. + * Copyright © 2017-2019 AT&T Intellectual Property. All rights reserved. + * Copyright © 2017-2019 European Software Marketing Ltd. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -109,8 +109,7 @@ public abstract class Widget extends Model { } public String getId() { - Properties properties = WidgetConfigurationUtil.getConfig(); - String id = properties.getProperty(ArtifactType.AAI.name() + ".model-version-id." + getName()); + String id = WidgetConfigurationUtil.getConfig().getProperty(ArtifactType.AAI.name() + ".model-version-id." + getName()); if (id == null) { throw new IllegalArgumentException(String.format(GENERATOR_AAI_CONFIGLPROP_NOT_FOUND, ArtifactType.AAI.name() + ".model-version-id." + getName())); diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 2cb4fe8..c9982d6 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -4,4 +4,6 @@ server.ssl.client-auth=need server.contextPath=/services/babel-service -logging.config=${CONFIG_HOME}/logback.xml \ No newline at end of file +logging.config=${CONFIG_HOME}/logback.xml + +groupfilter.config=${CONFIG_HOME}/tosca-mappings.json diff --git a/src/test/java/org/onap/aai/babel/parser/TestArtifactGeneratorToscaParser.java b/src/test/java/org/onap/aai/babel/parser/TestArtifactGeneratorToscaParser.java index b7957f7..52dd462 100644 --- a/src/test/java/org/onap/aai/babel/parser/TestArtifactGeneratorToscaParser.java +++ b/src/test/java/org/onap/aai/babel/parser/TestArtifactGeneratorToscaParser.java @@ -29,7 +29,6 @@ import java.util.ArrayList; import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; -import java.util.Properties; import org.junit.Test; import org.mockito.Mockito; import org.onap.aai.babel.xml.generator.data.WidgetConfigurationUtil; @@ -76,9 +75,7 @@ public class TestArtifactGeneratorToscaParser { @Test public void testInstanceGroups() { final String instanceGroupType = "org.openecomp.groups.ResourceInstanceGroup"; - Properties props = new Properties(); - props.put("AAI.instance-group-types", instanceGroupType); - WidgetConfigurationUtil.setFilterConfig(props); + WidgetConfigurationUtil.setSupportedInstanceGroups(Collections.singletonList(instanceGroupType)); ISdcCsarHelper helper = Mockito.mock(ISdcCsarHelper.class); SubstitutionMappings sm = Mockito.mock(SubstitutionMappings.class); @@ -105,9 +102,9 @@ public class TestArtifactGeneratorToscaParser { * sdc-tosca parser. * * @param name - * name of the NodeTemplate + * name of the NodeTemplate * @param type - * type of the NodeTemplate + * type of the NodeTemplate * @return a new NodeTemplate object */ private NodeTemplate buildNodeTemplate(String name, String type) { diff --git a/src/test/java/org/onap/aai/babel/parser/TestToscaParser.java b/src/test/java/org/onap/aai/babel/parser/TestToscaParser.java index 3bab915..f8d8478 100644 --- a/src/test/java/org/onap/aai/babel/parser/TestToscaParser.java +++ b/src/test/java/org/onap/aai/babel/parser/TestToscaParser.java @@ -2,8 +2,8 @@ * ============LICENSE_START======================================================= * org.onap.aai * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * Copyright © 2017-2018 European Software Marketing Ltd. + * Copyright © 2017-2019 AT&T Intellectual Property. All rights reserved. + * Copyright © 2017-2019 European Software Marketing Ltd. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,13 +24,10 @@ import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; -import java.io.FileNotFoundException; import java.io.IOException; -import java.io.InputStream; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Properties; import org.junit.Before; import org.junit.Test; import org.onap.aai.babel.csar.extractor.InvalidArchiveException; @@ -40,10 +37,9 @@ import org.onap.aai.babel.xml.generator.api.AaiArtifactGenerator; import org.onap.aai.babel.xml.generator.data.AdditionalParams; import org.onap.aai.babel.xml.generator.data.Artifact; import org.onap.aai.babel.xml.generator.data.GenerationData; -import org.onap.aai.babel.xml.generator.data.WidgetConfigurationUtil; /** - * Direct tests of the Model to improve code coverage. + * Direct tests of the {@link AaiArtifactGenerator} to improve code coverage. */ public class TestToscaParser { @@ -53,22 +49,9 @@ public class TestToscaParser { } } - private static final String ARTIFACT_GENERATOR_CONFIG = "artifact-generator.properties"; - private static final String FILTER_TYPES_CONFIG = "filter-types.properties"; - @Before - public void setup() throws FileNotFoundException, IOException { - System.setProperty(ArtifactGeneratorToscaParser.PROPERTY_ARTIFACT_GENERATOR_CONFIG_FILE, - new ArtifactTestUtils().getResourcePath(ARTIFACT_GENERATOR_CONFIG)); - - System.setProperty(ArtifactGeneratorToscaParser.PROPERTY_GROUP_FILTERS_CONFIG_FILE, - new ArtifactTestUtils().getResourcePath(FILTER_TYPES_CONFIG)); - - InputStream in = TestToscaParser.class.getClassLoader().getResourceAsStream("artifact-generator.properties"); - Properties properties = new Properties(); - properties.load(in); - in.close(); - WidgetConfigurationUtil.setConfig(properties); + public void setup() { + new ArtifactTestUtils().setGeneratorSystemProperties(); } @Test @@ -78,8 +61,8 @@ public class TestToscaParser { additionalParams.put(AdditionalParams.SERVICE_VERSION.getName(), "1.0"); AaiArtifactGenerator generator = new AaiArtifactGenerator(); - GenerationData data = generator.generateArtifact(CsarTest.VNF_VENDOR_CSAR.getContent(), ymlFiles, - additionalParams); + GenerationData data = + generator.generateArtifact(CsarTest.VNF_VENDOR_CSAR.getContent(), ymlFiles, additionalParams); assertThat(data.getErrorData().size(), is(equalTo(0))); assertThat(data.getResultData().size(), is(equalTo(2))); diff --git a/src/test/java/org/onap/aai/babel/service/CsarToXmlConverterTest.java b/src/test/java/org/onap/aai/babel/service/CsarToXmlConverterTest.java index 1d39f6d..1ead8e6 100644 --- a/src/test/java/org/onap/aai/babel/service/CsarToXmlConverterTest.java +++ b/src/test/java/org/onap/aai/babel/service/CsarToXmlConverterTest.java @@ -2,8 +2,8 @@ * ============LICENSE_START======================================================= * org.onap.aai * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * Copyright © 2017-2018 European Software Marketing Ltd. + * Copyright © 2017-2019 AT&T Intellectual Property. All rights reserved. + * Copyright © 2017-2019 European Software Marketing Ltd. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -54,9 +54,6 @@ import org.xml.sax.SAXException; */ public class CsarToXmlConverterTest { - private static final String ARTIFACT_GENERATOR_CONFIG = "artifact-generator.properties"; - private static final String FILTER_TYPES_CONFIG = "filter-types.properties"; - private static final String INCORRECT_CSAR_NAME = "the_name_of_the_csar_file.csar"; private static final String SERVICE_VERSION = "1.0"; @@ -74,12 +71,7 @@ public class CsarToXmlConverterTest { @Before public void setup() { - System.setProperty(ArtifactGeneratorToscaParser.PROPERTY_ARTIFACT_GENERATOR_CONFIG_FILE, - new ArtifactTestUtils().getResourcePath(ARTIFACT_GENERATOR_CONFIG)); - - System.setProperty(ArtifactGeneratorToscaParser.PROPERTY_GROUP_FILTERS_CONFIG_FILE, - new ArtifactTestUtils().getResourcePath(FILTER_TYPES_CONFIG)); - + new ArtifactTestUtils().setGeneratorSystemProperties(); converter = new CsarToXmlConverter(); } @@ -118,9 +110,9 @@ public class CsarToXmlConverterTest { * Test that an Exception is thrown when the Artifact Generator properties are not present. * * @throws CsarConverterException - * if there is an error either extracting the YAML files or generating XML artifacts + * if there is an error either extracting the YAML files or generating XML artifacts * @throws IOException - * if an I/O exception occurs loading the test CSAR file + * if an I/O exception occurs loading the test CSAR file * @throws IOException * @throws XmlArtifactGenerationException * @throws CsarConverterException @@ -147,7 +139,8 @@ public class CsarToXmlConverterTest { public void generateXmlFromCsarFilterTypesSystemPropertyNotSet() throws IOException, XmlArtifactGenerationException, CsarConverterException { exception.expect(CsarConverterException.class); - exception.expectMessage("Cannot generate artifacts. System property groupfilter.config not configured"); + exception.expectMessage("Cannot generate artifacts. System property " + + ArtifactGeneratorToscaParser.PROPERTY_GROUP_FILTERS_CONFIG_FILE + " not configured"); // Unset the required system property System.clearProperty(ArtifactGeneratorToscaParser.PROPERTY_GROUP_FILTERS_CONFIG_FILE); diff --git a/src/test/java/org/onap/aai/babel/service/TestGenerateArtifactsServiceImpl.java b/src/test/java/org/onap/aai/babel/service/TestGenerateArtifactsServiceImpl.java index 78e02f4..d87f3c3 100644 --- a/src/test/java/org/onap/aai/babel/service/TestGenerateArtifactsServiceImpl.java +++ b/src/test/java/org/onap/aai/babel/service/TestGenerateArtifactsServiceImpl.java @@ -2,8 +2,8 @@ * ============LICENSE_START======================================================= * org.onap.aai * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * Copyright © 2017-2018 European Software Marketing Ltd. + * Copyright © 2017-2019 AT&T Intellectual Property. All rights reserved. + * Copyright © 2017-2019 European Software Marketing Ltd. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,6 +18,7 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.aai.babel.service; import static org.hamcrest.Matchers.is; @@ -42,7 +43,6 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mockito; import org.onap.aai.auth.AAIMicroServiceAuth; -import org.onap.aai.babel.parser.ArtifactGeneratorToscaParser; import org.onap.aai.babel.service.data.BabelRequest; import org.onap.aai.babel.testdata.CsarTest; import org.onap.aai.babel.util.ArtifactTestUtils; @@ -55,7 +55,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; * */ @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(locations = { "classpath:/babel-beans.xml" }) +@ContextConfiguration(locations = {"classpath:/babel-beans.xml"}) public class TestGenerateArtifactsServiceImpl { static { @@ -65,18 +65,14 @@ public class TestGenerateArtifactsServiceImpl { System.setProperty("CONFIG_HOME", "src/test/resources"); } - private static final String ARTIFACT_GENERATOR_CONFIG = "artifact-generator.properties"; - private static final String FILTER_TYPES_CONFIG = "filter-types.properties"; @Inject private AAIMicroServiceAuth auth; @BeforeClass public static void setup() { - System.setProperty(ArtifactGeneratorToscaParser.PROPERTY_ARTIFACT_GENERATOR_CONFIG_FILE, - new ArtifactTestUtils().getResourcePath(ARTIFACT_GENERATOR_CONFIG)); - System.setProperty(ArtifactGeneratorToscaParser.PROPERTY_GROUP_FILTERS_CONFIG_FILE, - new ArtifactTestUtils().getResourcePath(FILTER_TYPES_CONFIG)); + new ArtifactTestUtils().setGeneratorSystemProperties(); + } @Test @@ -199,7 +195,7 @@ public class TestGenerateArtifactsServiceImpl { Mockito.when(mockCertificate.getSubjectX500Principal()) .thenReturn(new X500Principal("CN=test, OU=qa, O=Test Ltd, L=London, ST=London, C=GB")); - servletRequest.setAttribute("javax.servlet.request.X509Certificate", new X509Certificate[] { mockCertificate }); + servletRequest.setAttribute("javax.servlet.request.X509Certificate", new X509Certificate[] {mockCertificate}); servletRequest.setAttribute("javax.servlet.request.cipher_suite", ""); GenerateArtifactsServiceImpl service = new GenerateArtifactsServiceImpl(auth); diff --git a/src/test/java/org/onap/aai/babel/util/ArtifactTestUtils.java b/src/test/java/org/onap/aai/babel/util/ArtifactTestUtils.java index fa0b784..6608c00 100644 --- a/src/test/java/org/onap/aai/babel/util/ArtifactTestUtils.java +++ b/src/test/java/org/onap/aai/babel/util/ArtifactTestUtils.java @@ -2,8 +2,8 @@ * ============LICENSE_START======================================================= * org.onap.aai * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * Copyright © 2017-2018 European Software Marketing Ltd. + * Copyright © 2017-2019 AT&T Intellectual Property. All rights reserved. + * Copyright © 2017-2019 European Software Marketing Ltd. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,6 +18,7 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.aai.babel.util; import static org.hamcrest.CoreMatchers.equalTo; @@ -27,6 +28,7 @@ import static org.hamcrest.CoreMatchers.nullValue; import static org.junit.Assert.assertThat; import java.io.IOException; +import java.io.InputStream; import java.net.URISyntaxException; import java.net.URL; import java.nio.charset.Charset; @@ -36,14 +38,17 @@ import java.util.Base64; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Properties; import java.util.stream.Collectors; import org.apache.commons.io.IOUtils; import org.custommonkey.xmlunit.Diff; +import org.onap.aai.babel.parser.ArtifactGeneratorToscaParser; import org.onap.aai.babel.xml.generator.data.Artifact; +import org.onap.aai.babel.xml.generator.data.WidgetConfigurationUtil; import org.xml.sax.SAXException; /** - * This class provides some utilities to assist with running tests. + * This class provides some utilities to assist with running local unit tests. */ public class ArtifactTestUtils { @@ -51,15 +56,33 @@ public class ArtifactTestUtils { private static final String JSON_RESPONSES_FOLDER = "response/"; private static final String CSAR_INPUTS_FOLDER = "compressedArtifacts/"; + public void setGeneratorSystemProperties() { + System.setProperty(ArtifactGeneratorToscaParser.PROPERTY_ARTIFACT_GENERATOR_CONFIG_FILE, + getResourcePath(Resources.ARTIFACT_GENERATOR_CONFIG)); + + System.setProperty(ArtifactGeneratorToscaParser.PROPERTY_GROUP_FILTERS_CONFIG_FILE, + getResourcePath(Resources.FILTER_TYPES_CONFIG)); + } + + /** + * Load the Widget to UUID mappings from the Artifact Generator Properties (resource). + * + * @throws IOException + * if the properties file is not loaded + */ + public void loadWidgetToUuidMappings() throws IOException { + WidgetConfigurationUtil.setConfig(getResourceAsProperties(Resources.ARTIFACT_GENERATOR_CONFIG)); + } + /** * Specific test method for the YAML Extractor test. * * @param toscaFiles - * files extracted by the YamlExtractor + * files extracted by the YamlExtractor * @param ymlPayloadsToLoad - * the expected YAML files + * the expected YAML files * @throws IOException - * if an I/O exception occurs + * if an I/O exception occurs */ public void performYmlAsserts(List toscaFiles, List ymlPayloadsToLoad) throws IOException { assertThat("An incorrect number of YAML files have been extracted", toscaFiles.size(), @@ -83,14 +106,14 @@ public class ArtifactTestUtils { * Compare two XML strings to see if they have the same content. * * @param string1 - * XML content + * XML content * @param string2 - * XML content + * XML content * @return true if XML content is similar * @throws IOException - * if an I/O exception occurs + * if an I/O exception occurs * @throws SAXException - * if the XML parsing fails + * if the XML parsing fails */ public boolean compareXmlStrings(String string1, String string2) throws SAXException, IOException { return new Diff(string1, string2).similar(); @@ -120,6 +143,14 @@ public class ArtifactTestUtils { return Files.lines(Paths.get(getResource(resourceFile).toURI())).collect(Collectors.joining()); } + public Properties getResourceAsProperties(String resourceName) throws IOException { + final Properties properties = new Properties(); + InputStream in = ArtifactTestUtils.class.getClassLoader().getResourceAsStream(resourceName); + properties.load(in); + in.close(); + return properties; + } + public String getResourcePath(String resourceName) { return getResource(resourceName).getPath(); } diff --git a/src/test/java/org/onap/aai/babel/util/Resources.java b/src/test/java/org/onap/aai/babel/util/Resources.java new file mode 100644 index 0000000..199b3cd --- /dev/null +++ b/src/test/java/org/onap/aai/babel/util/Resources.java @@ -0,0 +1,31 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.aai + * ================================================================================ + * Copyright © 2017-2019 AT&T Intellectual Property. All rights reserved. + * Copyright © 2017-2019 European Software Marketing Ltd. + * ================================================================================ + * 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.onap.aai.babel.util; + +/** + * Common Test resources. + */ +public class Resources { + + public static final String ARTIFACT_GENERATOR_CONFIG = "artifact-generator.properties"; + public static final String FILTER_TYPES_CONFIG = "tosca-mappings.json"; + +} diff --git a/src/test/java/org/onap/aai/babel/xml/generator/model/TestModel.java b/src/test/java/org/onap/aai/babel/xml/generator/model/TestModel.java index 9b5700d..912a505 100644 --- a/src/test/java/org/onap/aai/babel/xml/generator/model/TestModel.java +++ b/src/test/java/org/onap/aai/babel/xml/generator/model/TestModel.java @@ -2,8 +2,8 @@ * ============LICENSE_START======================================================= * org.onap.aai * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * Copyright © 2017-2018 European Software Marketing Ltd. + * Copyright © 2017-2019 AT&T Intellectual Property. All rights reserved. + * Copyright © 2017-2019 European Software Marketing Ltd. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,15 +26,13 @@ import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.nullValue; import static org.junit.Assert.assertThat; -import java.io.FileNotFoundException; import java.io.IOException; -import java.io.InputStream; import java.util.Arrays; import java.util.List; -import java.util.Properties; import org.junit.Before; import org.junit.Test; -import org.onap.aai.babel.xml.generator.data.WidgetConfigurationUtil; +import org.onap.aai.babel.parser.ArtifactGeneratorToscaParser; +import org.onap.aai.babel.util.ArtifactTestUtils; import org.onap.aai.babel.xml.generator.model.Widget.Type; import org.onap.aai.babel.xml.generator.types.ModelType; @@ -54,20 +52,19 @@ public class TestModel { } /** - * Load the Widget to UUID mappings from the Artifact Generator properties. + * Initialise the Artifact Generator with filtering and mapping configuration. Also Load the Widget to UUID mappings + * from the Artifact Generator properties. * - * @throws FileNotFoundException - * if the properties file is missing * @throws IOException - * if the properties file is not loaded + * if the Artifact Generator properties file is not loaded */ @Before - public void setup() throws FileNotFoundException, IOException { - InputStream in = TestModel.class.getClassLoader().getResourceAsStream("artifact-generator.properties"); - Properties properties = new Properties(); - properties.load(in); - in.close(); - WidgetConfigurationUtil.setConfig(properties); + public void setup() throws IOException { + ArtifactTestUtils utils = new ArtifactTestUtils(); + utils.setGeneratorSystemProperties(); + + ArtifactGeneratorToscaParser.initGroupFilterConfiguration(); + utils.loadWidgetToUuidMappings(); anonymousModel = new Model() { @Override diff --git a/src/test/java/org/onap/aai/babel/xml/generator/model/TestVfModule.java b/src/test/java/org/onap/aai/babel/xml/generator/model/TestVfModule.java index e9c8c1b..1a5986b 100644 --- a/src/test/java/org/onap/aai/babel/xml/generator/model/TestVfModule.java +++ b/src/test/java/org/onap/aai/babel/xml/generator/model/TestVfModule.java @@ -2,8 +2,8 @@ * ============LICENSE_START======================================================= * org.onap.aai * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * Copyright © 2017-2018 European Software Marketing Ltd. + * Copyright © 2017-2019 AT&T Intellectual Property. All rights reserved. + * Copyright © 2017-2019 European Software Marketing Ltd. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,16 +26,13 @@ import static org.hamcrest.CoreMatchers.notNullValue; import static org.hamcrest.collection.IsCollectionWithSize.hasSize; import static org.junit.Assert.assertThat; -import java.io.FileNotFoundException; import java.io.IOException; -import java.io.InputStream; import java.util.Collections; import java.util.HashMap; import java.util.Map; -import java.util.Properties; import org.junit.BeforeClass; import org.junit.Test; -import org.onap.aai.babel.xml.generator.data.WidgetConfigurationUtil; +import org.onap.aai.babel.util.ArtifactTestUtils; import org.onap.aai.babel.xml.generator.model.Widget.Type; /** @@ -47,33 +44,39 @@ public class TestVfModule { System.setProperty("APP_HOME", "."); } - /** - * Load the Widget to UUID mappings from the Artifact Generator properties. - * - * @throws FileNotFoundException if the properties file is missing - * @throws IOException if the properties file is not loaded - */ @BeforeClass - public static void setup() throws FileNotFoundException, IOException { - InputStream in = TestVfModule.class.getClassLoader().getResourceAsStream("artifact-generator.properties"); - Properties properties = new Properties(); - properties.load(in); - in.close(); - WidgetConfigurationUtil.setConfig(properties); + public static void setup() throws IOException { + new ArtifactTestUtils().loadWidgetToUuidMappings(); } /** - * Call equals() and hashCode() methods for code coverage. + * Call hashCode() method for code coverage. */ @Test - public void testEqualsHashCode() { + public void testHashCode() { VfModule vfModule = createNewVfModule(); populateIdentInfo(vfModule); assertThat(vfModule.hashCode(), is(notNullValue())); - assertThat(vfModule.equals(vfModule), is(true)); - // Tests that the overridden equals() method correctly returns false for a different type of Object - // This is necessary to achieve complete code coverage - assertThat(vfModule.equals("string"), is(false)); // NOSONAR + } + + /** + * Call equals() method for code coverage. + */ + @Test + public void testEquals() { + VfModule vfModuleA = createNewVfModule(); + populateIdentInfo(vfModuleA); + + // equals() is reflexive + assertThat(vfModuleA.equals(vfModuleA), is(true)); + + // equals() is symmetric + VfModule vfModuleB = createNewVfModule(); + populateIdentInfo(vfModuleB); + assertThat(vfModuleA.equals(vfModuleB), is(true)); + assertThat(vfModuleB.equals(vfModuleA), is(true)); + + assertThat(vfModuleA.equals(null), is(false)); } @Test @@ -216,7 +219,8 @@ public class TestVfModule { /** * Use the static Factory method to create a new Widget. * - * @param widgetType type of Widget to create + * @param widgetType + * type of Widget to create * @return a new Widget */ private Widget createNewWidget(Type widgetType) { @@ -237,7 +241,8 @@ public class TestVfModule { /** * Set up some dummy Model Identification properties. * - * @param vfModule to be populated + * @param vfModule + * to be populated */ private void populateIdentInfo(VfModule vfModule) { Map modelIdentInfo = new HashMap<>(); @@ -248,8 +253,10 @@ public class TestVfModule { /** * Create a new Widget and assert that it is successfully added to the VF Module. * - * @param vfModule the VF Module to update - * @param widgetType the type of Widget to create and add + * @param vfModule + * the VF Module to update + * @param widgetType + * the type of Widget to create and add */ private void assertAddWidget(VfModule vfModule, Type widgetType) { assertThat(createNewWidgetForModule(vfModule, widgetType), is(true)); @@ -258,8 +265,10 @@ public class TestVfModule { /** * Create a new Widget and assert that it cannot be added to the VF Module. * - * @param vfModule the VF Module - * @param widgetType the type of Widget to create and attempt to add + * @param vfModule + * the VF Module + * @param widgetType + * the type of Widget to create and attempt to add */ private void assertFailToAddWidget(VfModule vfModule, Type widgetType) { assertThat(createNewWidgetForModule(vfModule, widgetType), is(false)); @@ -268,8 +277,10 @@ public class TestVfModule { /** * Create a new widget, make it a member of the VF Module, then try to add it. * - * @param vfModule the VF Module to update - * @param widgetType the type of Widget to create and attempt to add + * @param vfModule + * the VF Module to update + * @param widgetType + * the type of Widget to create and attempt to add * @return whether or not the Widget was added to the module */ private boolean createNewWidgetForModule(VfModule vfModule, Type widgetType) { @@ -283,8 +294,10 @@ public class TestVfModule { * to its set of keys, and by then setting the VF Module's members to a Singleton List comprised of this ID. These * updates allow the Widget to be successfully added to the VF Module. (Non-member Widgets cannot be added.) * - * @param vfModule the module for which members are overwritten - * @param widget the widget to be set as the member + * @param vfModule + * the module for which members are overwritten + * @param widget + * the widget to be set as the member */ private void setWidgetAsMember(VfModule vfModule, Widget widget) { String id = widget.getId(); @@ -295,7 +308,8 @@ public class TestVfModule { /** * Create a vserver widget and add it to the specified VF Module. * - * @param vfModule the VF Module to update + * @param vfModule + * the VF Module to update * @return the number of Widgets present in the vserver on creation */ private int createVserverForVf(VfModule vfModule) { @@ -309,8 +323,10 @@ public class TestVfModule { /** * Add the specified vserver to the specified VF Module. * - * @param vfModule the VF Module to update - * @param vserverWidget the Widget to add + * @param vfModule + * the VF Module to update + * @param vserverWidget + * the Widget to add * @return initial widget count for the vserver Widget */ private int addVserverToVf(VfModule vfModule, VServerWidget vserverWidget) { diff --git a/src/test/java/org/onap/aai/babel/xml/generator/model/TestWidget.java b/src/test/java/org/onap/aai/babel/xml/generator/model/TestWidget.java index 212c221..d7fe4af 100644 --- a/src/test/java/org/onap/aai/babel/xml/generator/model/TestWidget.java +++ b/src/test/java/org/onap/aai/babel/xml/generator/model/TestWidget.java @@ -2,8 +2,8 @@ * ============LICENSE_START======================================================= * org.onap.aai * ================================================================================ - * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. - * Copyright © 2017-2018 European Software Marketing Ltd. + * Copyright © 2017-2019 AT&T Intellectual Property. All rights reserved. + * Copyright © 2017-2019 European Software Marketing Ltd. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,14 +26,11 @@ import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.nullValue; import static org.junit.Assert.assertThat; -import java.io.FileNotFoundException; import java.io.IOException; -import java.io.InputStream; import java.util.Collections; -import java.util.Properties; import org.junit.BeforeClass; import org.junit.Test; -import org.onap.aai.babel.xml.generator.data.WidgetConfigurationUtil; +import org.onap.aai.babel.util.ArtifactTestUtils; import org.onap.aai.babel.xml.generator.model.Widget.Type; import org.onap.aai.babel.xml.generator.types.ModelType; @@ -49,18 +46,12 @@ public class TestWidget { /** * Load the Widget to UUID mappings from the Artifact Generator properties. * - * @throws FileNotFoundException - * if the properties file is missing * @throws IOException * if the properties file is not loaded */ @BeforeClass - public static void setup() throws FileNotFoundException, IOException { - final Properties properties = new Properties(); - try (InputStream in = TestWidget.class.getClassLoader().getResourceAsStream("artifact-generator.properties")) { - properties.load(in); - } - WidgetConfigurationUtil.setConfig(properties); + public static void setup() throws IOException { + new ArtifactTestUtils().loadWidgetToUuidMappings(); } @Test diff --git a/src/test/resources/filter-types.properties b/src/test/resources/filter-types.properties deleted file mode 100644 index 8577841..0000000 --- a/src/test/resources/filter-types.properties +++ /dev/null @@ -1 +0,0 @@ -AAI.instance-group-types=org.openecomp.groups.NetworkCollection,org.openecomp.groups.VfcInstanceGroup,org.openecomp.groups.ResourceInstanceGroup diff --git a/src/test/resources/tosca-mappings.json b/src/test/resources/tosca-mappings.json new file mode 100644 index 0000000..9c3d0b4 --- /dev/null +++ b/src/test/resources/tosca-mappings.json @@ -0,0 +1,21 @@ +{ + "instanceGroupTypes": [ + "org.openecomp.groups.NetworkCollection", + "org.openecomp.groups.VfcInstanceGroup", + "org.openecomp.groups.ResourceInstanceGroup" + ], + "toscaToWidgetMappings": { + "org.openecomp.resource.vf.allottedResource": "AllotedResource", + "org.openecomp.resource.vfc.AllottedResource": "ProvidingService", + "org.openecomp.resource.vfc": "VServerWidget", + "org.openecomp.resource.cp": "LIntfWidget", + "org.openecomp.cp": "LIntfWidget", + "org.openecomp.resource.vl": "L3Network", + "org.openecomp.resource.vf": "VirtualFunction", + "org.openecomp.groups.vfmodule": "VfModule", + "org.openecomp.groups.VfModule": "VfModule", + "org.openecomp.resource.vfc.nodes.heat.cinder": "VolumeWidget", + "org.openecomp.nodes.PortMirroringConfiguration": "Configuration", + "org.openecomp.resource.cr.Kk1806Cr1": "CR" + } +} -- 2.16.6