From 7de4f3e788ff2b71936ae43be7dfbdf48740f9be Mon Sep 17 00:00:00 2001 From: "andre.schmid" Date: Tue, 3 Sep 2019 13:45:28 +0000 Subject: Implement PNFD Model driven conversion Change-Id: I7427e82353cac17817457294d78953f867d2d6e8 Issue-ID: SDC-2509 Signed-off-by: andre.schmid --- .../converter/impl/ToscaConverterImplTest.java | 298 --------------------- .../impl/ToscaConvertorDefinitionsTest.java | 80 ------ .../PnfTransformationEngineParameterizedTest.java | 152 +++++++++++ .../impl/pnfd/PnfTransformationEngineTest.java | 112 ++++++++ .../converter/impl/pnfd/PnfdQueryExecutorTest.java | 229 ++++++++++++++++ .../parser/ConversionDefinitionYamlParserTest.java | 69 +++++ .../pnfd/parser/NodeTemplateYamlParserTest.java | 46 ++++ ...nversionStrategyYamlParserParametrizedTest.java | 68 +++++ .../PnfdConversionStrategyYamlParserTest.java | 53 ++++ .../core/impl/ToscaConverterImplTest.java | 296 ++++++++++++++++++++ .../core/impl/ToscaConvertorDefinitionsTest.java | 77 ++++++ ...caSolConverterPnfMultipleNodeTemplatesTest.java | 74 ----- .../core/impl/ToscaSolConverterPnfTest.java | 125 --------- .../org/openecomp/core/util/TestResourcesUtil.java | 27 +- .../java/org/openecomp/core/util/YamlTestUtil.java | 67 +++++ .../test/resources/model-driven-conversion.yaml | 69 +++++ ...or_withLayerProtocolsAndDuplicatedGetInput.yaml | 2 +- .../other/pnfDescriptor_PnfAnd2ExtCps.yaml | 44 --- .../conversionDefinitionWithReplaceStrategy.yaml | 7 + .../transformation/nodeTemplate/nodeTemplate.yaml | 7 + .../convertTwoAttributesSameLevel.yaml | 11 + .../expectedOutput/copyListAttribute.yaml | 8 + .../expectedOutput/copyObjectAttribute.yaml | 6 + .../expectedOutput/copyScalarAttribute.yaml | 5 + .../expectedOutput/defaultOutput.yaml | 2 + .../invalidAndValidAttributeQuery.yaml | 4 + .../expectedOutput/replaceInListAttribute.yaml | 9 + ...uteWithNonExistentAndNonExistentFromValues.yaml | 8 + .../replaceScalarAttributeToList.yaml | 8 + .../replaceScalarAttributeToObject.yaml | 6 + .../replaceScalarAttributeToScalar.yaml | 5 + .../pnfAndExtCpWithInput/pnfAndExtCpWithInput.yaml | 39 +++ .../attributeQueryWithMoreThanOneAttribute.yaml | 13 + .../convertTwoAttributesSameLevel.yaml | 32 +++ .../copyListAttribute.yaml | 17 ++ .../copyObjectAttribute.yaml | 10 + .../copyScalarAttribute.yaml | 10 + .../transformationDescriptor/emptyDescriptor.yaml | 0 .../invalidAndValidAttributeQuery.yaml | 16 ++ .../invalidAttributeQuery.yaml | 11 + .../transformationDescriptor/invalidBlock.yaml | 4 + .../invalidBlockQueries.yaml | 10 + .../invalidBlockQuery.yaml | 6 + .../listAsAnAttributeQuery.yaml | 16 ++ .../transformationDescriptor/noConversions.yaml | 7 + .../pnfAndExtCpWithInput-validBlockButNoQuery.yaml | 1 + .../queryNonExistentLvl.yaml | 12 + .../replaceInListAttribute.yaml | 19 ++ ...uteWithNonExistentAndNonExistentFromValues.yaml | 25 ++ ...ceInListAttributeWithNonExistentFromValues.yaml | 19 ++ .../replaceScalarAttributeToList.yaml | 15 ++ .../replaceScalarAttributeToObject.yaml | 13 + .../replaceScalarAttributeToScalar.yaml | 12 + .../stringAsAnAttributeQuery.yaml | 10 + .../expectedOutput/defaultOutput.yaml | 2 + .../expectedOutput/fullTransformation.yaml | 36 +++ .../inputQueryWithMoreThanOneAttribute.yaml | 21 ++ ...oreThanOneTransformationWithSameBlockQuery.yaml | 11 + .../nodeTemplateQueryWithMoreThanOneAttribute.yaml | 8 + .../wrongGetInputTransformationName.yaml | 14 + .../expectedOutput/wrongTransformationBlock.yaml | 11 + .../pnfWithGetInput/pnfWithGetInput.yaml | 61 +++++ .../fullTransformation.yaml | 84 ++++++ .../inputQueryWithMoreThanOneAttribute.yaml | 39 +++ ...oreThanOneTransformationWithSameBlockQuery.yaml | 37 +++ .../nodeTemplateQueryWithMoreThanOneAttribute.yaml | 14 + .../wrongGetInputTransformationName.yaml | 39 +++ .../wrongTransformationBlock.yaml | 24 ++ .../transformation/strategy/replaceStrategy.yaml | 3 + .../strategy/strategyMissingStrategyAttribute.yaml | 2 + 70 files changed, 2073 insertions(+), 624 deletions(-) delete mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/ToscaConverterImplTest.java delete mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/ToscaConvertorDefinitionsTest.java create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/pnfd/PnfTransformationEngineParameterizedTest.java create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/pnfd/PnfTransformationEngineTest.java create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/pnfd/PnfdQueryExecutorTest.java create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/pnfd/parser/ConversionDefinitionYamlParserTest.java create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/pnfd/parser/NodeTemplateYamlParserTest.java create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/pnfd/parser/PnfdConversionStrategyYamlParserParametrizedTest.java create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/pnfd/parser/PnfdConversionStrategyYamlParserTest.java create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/impl/ToscaConverterImplTest.java create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/impl/ToscaConvertorDefinitionsTest.java delete mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/impl/ToscaSolConverterPnfMultipleNodeTemplatesTest.java delete mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/impl/ToscaSolConverterPnfTest.java create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/util/YamlTestUtil.java create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/model-driven-conversion.yaml delete mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/pnfDescriptor/other/pnfDescriptor_PnfAnd2ExtCps.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/conversionDefinition/conversionDefinitionWithReplaceStrategy.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/nodeTemplate/nodeTemplate.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/expectedOutput/convertTwoAttributesSameLevel.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/expectedOutput/copyListAttribute.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/expectedOutput/copyObjectAttribute.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/expectedOutput/copyScalarAttribute.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/expectedOutput/defaultOutput.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/expectedOutput/invalidAndValidAttributeQuery.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/expectedOutput/replaceInListAttribute.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/expectedOutput/replaceInListAttributeWithNonExistentAndNonExistentFromValues.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/expectedOutput/replaceScalarAttributeToList.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/expectedOutput/replaceScalarAttributeToObject.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/expectedOutput/replaceScalarAttributeToScalar.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/pnfAndExtCpWithInput.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/attributeQueryWithMoreThanOneAttribute.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/convertTwoAttributesSameLevel.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/copyListAttribute.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/copyObjectAttribute.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/copyScalarAttribute.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/emptyDescriptor.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/invalidAndValidAttributeQuery.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/invalidAttributeQuery.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/invalidBlock.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/invalidBlockQueries.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/invalidBlockQuery.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/listAsAnAttributeQuery.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/noConversions.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/pnfAndExtCpWithInput-validBlockButNoQuery.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/queryNonExistentLvl.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/replaceInListAttribute.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/replaceInListAttributeWithNonExistentAndNonExistentFromValues.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/replaceInListAttributeWithNonExistentFromValues.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/replaceScalarAttributeToList.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/replaceScalarAttributeToObject.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/replaceScalarAttributeToScalar.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/stringAsAnAttributeQuery.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/expectedOutput/defaultOutput.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/expectedOutput/fullTransformation.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/expectedOutput/inputQueryWithMoreThanOneAttribute.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/expectedOutput/moreThanOneTransformationWithSameBlockQuery.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/expectedOutput/nodeTemplateQueryWithMoreThanOneAttribute.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/expectedOutput/wrongGetInputTransformationName.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/expectedOutput/wrongTransformationBlock.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/pnfWithGetInput.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/transformationDescriptor/fullTransformation.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/transformationDescriptor/inputQueryWithMoreThanOneAttribute.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/transformationDescriptor/moreThanOneTransformationWithSameBlockQuery.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/transformationDescriptor/nodeTemplateQueryWithMoreThanOneAttribute.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/transformationDescriptor/wrongGetInputTransformationName.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/transformationDescriptor/wrongTransformationBlock.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/strategy/replaceStrategy.yaml create mode 100644 openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/strategy/strategyMissingStrategyAttribute.yaml (limited to 'openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test') diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/ToscaConverterImplTest.java b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/ToscaConverterImplTest.java deleted file mode 100644 index c14b02b3a0..0000000000 --- a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/ToscaConverterImplTest.java +++ /dev/null @@ -1,298 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * SDC - * ================================================================================ - * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.core.converter.impl; - -import org.apache.commons.collections.CollectionUtils; -import org.junit.Assert; -import org.junit.Test; -import org.onap.sdc.tosca.datatypes.model.*; -import org.onap.sdc.tosca.services.ToscaExtensionYamlUtil; -import org.onap.sdc.tosca.services.YamlUtil; -import org.openecomp.core.converter.ToscaConverter; -import org.openecomp.core.impl.ToscaConverterImpl; -import org.openecomp.core.utilities.file.FileContentHandler; -import org.openecomp.core.utilities.file.FileUtils; -import org.openecomp.core.utilities.json.JsonUtil; -import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel; - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.net.URL; -import java.nio.file.NotDirectoryException; -import java.util.*; - -import static org.junit.Assert.assertEquals; -import static org.openecomp.core.converter.datatypes.Constants.globalStName; -import static org.openecomp.core.converter.datatypes.Constants.mainStName; - -public class ToscaConverterImplTest { - - private static final ToscaConverter toscaConverter = new ToscaConverterImpl(); - private static final String VIRTUAL_LINK = "virtualLink"; - private static final String UNBOUNDED = "UNBOUNDED"; - private static final String BASE_DIR = "/mock/toscaConverter"; - - - @Test - public void testConvertMainSt() throws IOException { - String inputFilesPath = BASE_DIR + "/convertMainSt/in"; - String outputFilesPath = BASE_DIR + "/convertMainSt/out"; - - convertAndValidate(inputFilesPath, outputFilesPath); - } - - @Test - public void testNodesConversion() throws IOException { - String inputFilesPath = BASE_DIR + "/convertCsar/in"; - String outputFilesPath = BASE_DIR + "/convertCsar/out"; - - convertAndValidate(inputFilesPath, outputFilesPath); - } - - @Test - public void testParameterConversion() throws IOException { - String inputFilesPath = BASE_DIR + "/convertParameters/in"; - String outputFilesPath = BASE_DIR + "/convertParameters/out"; - - convertAndValidate(inputFilesPath, outputFilesPath); - } - - @Test - public void testConversionWithInt() throws IOException { - String inputFilesPath = BASE_DIR + "/conversionWithInt/in"; - String outputFilesPath = BASE_DIR + "/conversionWithInt/out"; - - convertAndValidate(inputFilesPath, outputFilesPath); - } - - @Test - public void testOccurrencesUpperString() { - Object[] occurrences = buildOccurrences("0", UNBOUNDED); - Assert.assertEquals(occurrences[0], 0); - Assert.assertEquals(occurrences[1], UNBOUNDED); - } - - @Test - public void testOccurrencesAsInts() { - Object[] occurrences = buildOccurrences("0", "1"); - Assert.assertEquals(occurrences[0], 0); - Assert.assertEquals(occurrences[1], 1); - } - - @Test - public void testOccurrencesAsStrings() { - String test = "TEST_A"; - Object[] occurrences = buildOccurrences(UNBOUNDED, test); - Assert.assertEquals(occurrences[0], UNBOUNDED); - Assert.assertEquals(occurrences[1], test); - } - - @Test - public void testOccurrencesLowerString() { - Object[] occurrences = buildOccurrences(UNBOUNDED, "100"); - Assert.assertEquals(occurrences[0], UNBOUNDED); - Assert.assertEquals(occurrences[1], 100); - } - - @Test - public void testOccurrencesEmpty() { - Object[] occurrences = buildOccurrences(); - Assert.assertEquals(occurrences.length, 0); - } - - @Test - public void testOccurrencesMany() { - String test = "TEST_B"; - Object[] occurrences = buildOccurrences("1", "2", test); - Assert.assertEquals(occurrences[0], 1); - Assert.assertEquals(occurrences[1], 2); - Assert.assertEquals(occurrences[2], test); - } - - @Test - public void testDefaultOccurrences() { - Object[] occurrences = buildOccurrences((List) null); - Assert.assertEquals(1, occurrences[0]); - Assert.assertEquals(1, occurrences[1]); - } - - private Object[] buildOccurrences(String... bounds) { - return buildOccurrences(Arrays.asList(bounds)); - } - - private void convertAndValidate(String inputFilesPath, String outputFilesPath) - throws IOException { - FileContentHandler fileContentHandler = - createFileContentHandlerFromInput(inputFilesPath); - - ToscaServiceModel toscaServiceModel = toscaConverter.convert(fileContentHandler); - validateConvertorOutput(outputFilesPath, toscaServiceModel); - } - - private void validateConvertorOutput(String outputFilesPath, ToscaServiceModel toscaServiceModel) - throws IOException { - ServiceTemplate mainSt = toscaServiceModel.getServiceTemplates().get(mainStName); - Map expectedOutserviceTemplates = new HashMap<>(); - loadServiceTemplates(outputFilesPath, new ToscaExtensionYamlUtil(), - expectedOutserviceTemplates); - - checkSTResults(expectedOutserviceTemplates, null, mainSt); - } - - private Object[] buildOccurrences(List bounds) { - NodeType nodeType = JsonUtil.json2Object("{derived_from=tosca.nodes.Root, description=MME_VFC, " + - "properties={vendor={type=string, default=ERICSSON}, " + - "csarVersion={type=string, default=v1.0}, csarProvider={type=string, default=ERICSSON}, " + - "id={type=string, default=vMME}, version={type=string, default=v1.0}, csarType={type=string, default=NFAR}}, " + - "requirements=[{virtualLink={" + - (bounds == null ? "" : "occurrences=[" + String.join(", ", bounds) + "], ") + - "capability=tosca.capabilities.network.Linkable}}]}", NodeType.class); - List> requirements = nodeType.getRequirements(); - return requirements.get(0).get(VIRTUAL_LINK).getOccurrences(); - } - - private FileContentHandler createFileContentHandlerFromInput(String inputFilesPath) - throws IOException { - URL inputFilesUrl = this.getClass().getResource(inputFilesPath); - String path = inputFilesUrl.getPath(); - File directory = new File(path); - File[] listFiles = directory.listFiles(); - - FileContentHandler fileContentHandler = new FileContentHandler(); - insertFilesIntoFileContentHandler(listFiles, fileContentHandler); - return fileContentHandler; - } - - private void insertFilesIntoFileContentHandler(File[] listFiles, - FileContentHandler fileContentHandler) - throws IOException { - byte[] fileContent; - if(CollectionUtils.isEmpty(fileContentHandler.getFileList())) { - fileContentHandler.setFiles(new HashMap<>()); - } - - for (File file : listFiles) { - if(!file.isDirectory()) { - try (FileInputStream fis = new FileInputStream(file)) { - fileContent = FileUtils.toByteArray(fis); - fileContentHandler.addFile(file.getPath(), fileContent); - } - }else{ - File[] currFileList = file.listFiles(); - insertFilesIntoFileContentHandler(currFileList, fileContentHandler); - } - - } - } - - private void checkSTResults( - Map expectedOutserviceTemplates, - ServiceTemplate gloablSubstitutionServiceTemplate, ServiceTemplate mainServiceTemplate) { - YamlUtil yamlUtil = new YamlUtil(); - if (Objects.nonNull(gloablSubstitutionServiceTemplate)) { - assertEquals("difference global substitution service template: ", - yamlUtil.objectToYaml(expectedOutserviceTemplates.get(globalStName)), - yamlUtil.objectToYaml(gloablSubstitutionServiceTemplate)); - } - if (Objects.nonNull(mainServiceTemplate)) { - assertEquals("difference main service template: ", - yamlUtil.objectToYaml(expectedOutserviceTemplates.get(mainStName)), - yamlUtil.objectToYaml(mainServiceTemplate)); - } - } - - public static void loadServiceTemplates(String serviceTemplatesPath, - ToscaExtensionYamlUtil toscaExtensionYamlUtil, - Map serviceTemplates) - throws IOException { - URL urlFile = ToscaConverterImplTest.class.getResource(serviceTemplatesPath); - if (urlFile != null) { - File pathFile = new File(urlFile.getFile()); - File[] files = pathFile.listFiles(); - if (files != null) { - addServiceTemplateFiles(serviceTemplates, files, toscaExtensionYamlUtil); - } else { - throw new NotDirectoryException(serviceTemplatesPath); - } - } else { - throw new NotDirectoryException(serviceTemplatesPath); - } - } - - private static void addServiceTemplateFiles(Map serviceTemplates, - File[] files, - ToscaExtensionYamlUtil toscaExtensionYamlUtil) throws IOException { - - for (File file : files) { - - try (InputStream yamlFile = new FileInputStream(file)) { - ServiceTemplate serviceTemplateFromYaml = - toscaExtensionYamlUtil.yamlToObject(yamlFile, ServiceTemplate.class); - createConcreteRequirementObjectsInServiceTemplate(serviceTemplateFromYaml, toscaExtensionYamlUtil); - serviceTemplates.put(file.getName(), serviceTemplateFromYaml); - } - } - } - - private static void createConcreteRequirementObjectsInServiceTemplate(ServiceTemplate - serviceTemplateFromYaml, - ToscaExtensionYamlUtil - toscaExtensionYamlUtil) { - - if (serviceTemplateFromYaml == null - || serviceTemplateFromYaml.getTopology_template() == null - || serviceTemplateFromYaml.getTopology_template().getNode_templates() == null) { - return; - } - - //Creating concrete objects - Map nodeTemplates = - serviceTemplateFromYaml.getTopology_template().getNode_templates(); - for (Map.Entry entry : nodeTemplates.entrySet()) { - NodeTemplate nodeTemplate = entry.getValue(); - List> requirements = nodeTemplate.getRequirements(); - List> concreteRequirementList = new ArrayList<>(); - if (requirements != null) { - ListIterator> reqListIterator = requirements - .listIterator(); - while (reqListIterator.hasNext()){ - Map requirement = reqListIterator.next(); - Map concreteRequirement = new HashMap<>(); - for (Map.Entry reqEntry : requirement.entrySet()) { - RequirementAssignment requirementAssignment = (toscaExtensionYamlUtil - .yamlToObject(toscaExtensionYamlUtil.objectToYaml(reqEntry.getValue()), - RequirementAssignment.class)); - concreteRequirement.put(reqEntry.getKey(), requirementAssignment); - concreteRequirementList.add(concreteRequirement); - reqListIterator.remove(); - } - } - requirements.clear(); - requirements.addAll(concreteRequirementList); - nodeTemplate.setRequirements(requirements); - } - System.out.println(); - //toscaExtensionYamlUtil.yamlToObject(nodeTemplate, NodeTemplate.class); - } - } -} diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/ToscaConvertorDefinitionsTest.java b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/ToscaConvertorDefinitionsTest.java deleted file mode 100644 index 68318c7b73..0000000000 --- a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/ToscaConvertorDefinitionsTest.java +++ /dev/null @@ -1,80 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * SDC - * ================================================================================ - * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.core.converter.impl; - -import org.apache.commons.io.IOUtils; -import org.junit.Ignore; -import org.junit.Test; -import org.onap.sdc.tosca.datatypes.model.ServiceTemplate; -import org.openecomp.core.impl.GlobalSubstitutionServiceTemplate; -import org.openecomp.core.impl.ToscaConverterImpl; -import org.openecomp.core.utilities.file.FileContentHandler; -import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum; -import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel; - -import java.net.URL; -import java.util.Map; -import java.util.Set; - -import static org.junit.Assert.*; -import static org.openecomp.core.converter.datatypes.Constants.ONAP_INDEX; -import static org.openecomp.core.impl.GlobalSubstitutionServiceTemplate.*; -import static org.openecomp.sdc.common.utils.CommonUtil.validateAndUploadFileContent; -public class ToscaConvertorDefinitionsTest { - - - @Ignore - @Test - public void loadCsar() throws Exception { - URL resource = ToscaConvertorDefinitionsTest.class.getResource("/csar/vCSCF.csar"); - byte[] bytes = IOUtils.toByteArray(resource); - assertNotNull(bytes); - FileContentHandler contentMap = validateAndUploadFileContent(OnboardingTypesEnum.CSAR, bytes); - ToscaConverterImpl toscaConverter = new ToscaConverterImpl(); - ToscaServiceModel convert = toscaConverter.convert(contentMap); - Map serviceTemplates = convert.getServiceTemplates(); - assertTrue(serviceTemplates.containsKey(GLOBAL_SUBSTITUTION_SERVICE_FILE_NAME)); - ServiceTemplate serviceTemplate = serviceTemplates.get(GLOBAL_SUBSTITUTION_SERVICE_FILE_NAME); - - assertNotNull(serviceTemplate); - assertTrue(serviceTemplate instanceof GlobalSubstitutionServiceTemplate); - - assertNotNull(serviceTemplate.getMetadata()); - assertFalse(serviceTemplate.getMetadata().isEmpty()); - assertTrue(serviceTemplate.getMetadata().containsKey(TEMPLATE_NAME_PROPERTY)); - - assertNotNull(serviceTemplate.getImports()); - assertFalse(serviceTemplate.getImports().isEmpty()); - assertEquals(1 ,serviceTemplate.getImports().size()); - assertTrue(((Map) serviceTemplate.getImports().get(0)).containsKey(HEAT_INDEX)); - assertTrue(((Map) serviceTemplate.getImports().get(0)).containsKey(ONAP_INDEX)); - - assertEquals(DEFININTION_VERSION, serviceTemplate.getTosca_definitions_version()); - - - assertNotNull(serviceTemplate.getNode_types()); - assertEquals(1, serviceTemplate.getNode_types().size()); - Set keys = serviceTemplate.getNode_types().keySet(); - assertTrue(keys.contains("tosca.nodes.nfv.ext.zte.VNF.vCSCF")); - } - - -} diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/pnfd/PnfTransformationEngineParameterizedTest.java b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/pnfd/PnfTransformationEngineParameterizedTest.java new file mode 100644 index 0000000000..e2cbc147ac --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/pnfd/PnfTransformationEngineParameterizedTest.java @@ -0,0 +1,152 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.openecomp.core.converter.impl.pnfd; + +import static org.junit.Assert.assertEquals; + +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.onap.sdc.tosca.datatypes.model.ServiceTemplate; +import org.onap.sdc.tosca.services.ToscaExtensionYamlUtil; +import org.onap.sdc.tosca.services.YamlUtil; +import org.openecomp.core.converter.ServiceTemplateReaderService; +import org.openecomp.core.impl.services.ServiceTemplateReaderServiceImpl; + +@RunWith(Parameterized.class) +public class PnfTransformationEngineParameterizedTest { + + private static final String TEST_CASES_PATH = "transformation/pnfParseEngine"; + private static final String TRANSFORMATION_DESCRIPTOR_FOLDER = "transformationDescriptor"; + private static final String OUTPUT_FOLDER = "expectedOutput"; + private static final String DEFAULT_OUTPUT_FILE_NAME = "defaultOutput.yaml"; + + private final String inputFileName; + private final Path inputFilePath; + private final String outputFileName; + private final Path outputFilePath; + private final String transformationDescriptorFileName; + private final Path transformationDescriptorFilePath; + private final YamlUtil yamlUtil = new YamlUtil(); + private final ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil(); + + public PnfTransformationEngineParameterizedTest(final String inputFileName, final Path inputFilePath, + final String outputFileName, final Path outputFilePath, + final String transformationDescriptorFileName, final Path transformationDescriptorFilePath) { + this.inputFileName = inputFileName; + this.inputFilePath = inputFilePath; + this.outputFileName = outputFileName; + this.outputFilePath = outputFilePath; + this.transformationDescriptorFileName = transformationDescriptorFileName; + this.transformationDescriptorFilePath = transformationDescriptorFilePath; + } + + + @Parameterized.Parameters(name = "{index}: input: {0}, descriptor: {4}, output: {2}") + public static Collection input() throws IOException { + return Files.list(getPathFromClasspath(TEST_CASES_PATH)).map(path -> { + try { + return buildTestCase(path); + } catch (final IOException e) { + return null; + } + }).filter(Objects::nonNull).flatMap(Collection::stream).collect(Collectors.toList()); + } + + private static Collection buildTestCase(final Path testCasePath) throws IOException { + final Path inputFilePath = Files.list(testCasePath) + .filter(path -> path.toFile().getName().endsWith("yaml")) + .findAny().orElse(null); + + if (inputFilePath == null) { + return Collections.emptyList(); + } + ; + final List transformationDescriptorList; + try (final Stream files = Files.walk(testCasePath.resolve(TRANSFORMATION_DESCRIPTOR_FOLDER))) { + transformationDescriptorList = files.filter(path -> Files.isRegularFile(path)) + .map(path -> Paths.get(TEST_CASES_PATH, testCasePath.getFileName().toString() + , TRANSFORMATION_DESCRIPTOR_FOLDER, path.getFileName().toString())) + .collect(Collectors.toList()); + } + + final List outputList; + try (final Stream files = Files.walk(testCasePath.resolve(OUTPUT_FOLDER))) { + outputList = files.filter(path -> Files.isRegularFile(path)).collect(Collectors.toList()); + } + final Path defaultOutput = outputList.stream() + .filter(path -> path.toFile().getName().equals(DEFAULT_OUTPUT_FILE_NAME)) + .findFirst().orElse(null); + + final List testCaseList = new ArrayList<>(); + + for (final Path transformationDescriptorPath : transformationDescriptorList) { + final Path outputPath = outputList.stream() + .filter(path -> path.toFile().getName().equals(transformationDescriptorPath.toFile().getName())) + .findFirst().orElse(defaultOutput); + if (outputPath != null) { + testCaseList.add(new Object[] {inputFilePath.toFile().getName(), inputFilePath, + outputPath.toFile().getName(), outputPath, + transformationDescriptorPath.toFile().getName(), transformationDescriptorPath}); + } + } + + return testCaseList; + + } + + @Test + public void testTopologyTemplateConversions() throws IOException { + final byte[] descriptor = Files.readAllBytes(inputFilePath); + final ServiceTemplateReaderService serviceTemplateReaderService = new ServiceTemplateReaderServiceImpl(descriptor); + final ServiceTemplate serviceTemplate = new ServiceTemplate(); + + final PnfdTransformationEngine pnfdTransformationEngine = new PnfdTransformationEngine(serviceTemplateReaderService, serviceTemplate + , transformationDescriptorFilePath.toString()); + pnfdTransformationEngine.transform(); + + final String result = yamlUtil.objectToYaml(serviceTemplate); + final String expectedResult = parseToYaml(outputFilePath); + assertEquals(expectedResult, result); + } + + private String parseToYaml(final Path filePath) throws IOException { + try (final InputStream inputStream = Files.newInputStream(filePath)) { + ServiceTemplate serviceTemplate = toscaExtensionYamlUtil.yamlToObject(inputStream, ServiceTemplate.class); + return yamlUtil.objectToYaml(serviceTemplate); + } + } + + private static Path getPathFromClasspath(final String location) { + return Paths.get(Thread.currentThread().getContextClassLoader().getResource(location).getPath()); + } +} \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/pnfd/PnfTransformationEngineTest.java b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/pnfd/PnfTransformationEngineTest.java new file mode 100644 index 0000000000..280d14888d --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/pnfd/PnfTransformationEngineTest.java @@ -0,0 +1,112 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.openecomp.core.converter.impl.pnfd; + +import static org.junit.Assert.assertEquals; + +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Collection; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import org.apache.commons.io.IOUtils; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.onap.sdc.tosca.datatypes.model.ServiceTemplate; +import org.onap.sdc.tosca.services.ToscaExtensionYamlUtil; +import org.onap.sdc.tosca.services.YamlUtil; +import org.openecomp.core.converter.ServiceTemplateReaderService; +import org.openecomp.core.impl.services.ServiceTemplateReaderServiceImpl; + +@RunWith(Parameterized.class) +public class PnfTransformationEngineTest { + + public static final String INPUT_DIR = "pnfDescriptor/in/"; + public static final String OUTPUT_DIR = "pnfDescriptor/out/"; + private String inputFilename; + private final YamlUtil yamlUtil = new YamlUtil(); + private final ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil(); + + public PnfTransformationEngineTest(final String inputFilename) { + this.inputFilename = inputFilename; + } + + @Parameterized.Parameters(name = "{index}: {0}") + public static Collection input() throws IOException { + try (final Stream files = Files.list(getPathFromClasspath(INPUT_DIR))) { + return files.map(path -> path.getFileName().toString()) + .collect(Collectors.toList()); + } + } + + @Test + public void testTopologyTemplateConversions() throws IOException { + final byte[] descriptor = getInputFileResource(inputFilename); + final ServiceTemplateReaderService serviceTemplateReaderService = new ServiceTemplateReaderServiceImpl(descriptor); + final ServiceTemplate serviceTemplate = new ServiceTemplate(); + + final PnfdTransformationEngine pnfdTransformationEngine = new PnfdTransformationEngine( + serviceTemplateReaderService, serviceTemplate); + pnfdTransformationEngine.transform(); + + final String result = yamlUtil.objectToYaml(serviceTemplate); + final String expectedResult = getExpectedResultFor(inputFilename); + assertEquals(expectedResult, result); + } + + private String getExpectedResultFor(final String inputFilename) throws IOException { + try (final InputStream inputStream = getOutputFileResourceCorrespondingTo(inputFilename)) { + final ServiceTemplate serviceTemplate = toscaExtensionYamlUtil.yamlToObject(inputStream, ServiceTemplate.class); + return yamlUtil.objectToYaml(serviceTemplate); + } + } + + private static Path getPathFromClasspath(final String location) { + return Paths.get(Thread.currentThread().getContextClassLoader().getResource(location).getPath()); + } + + private byte[] getInputFileResource(final String inputFilename) throws IOException { + return getFileResource(INPUT_DIR + inputFilename); + } + + private InputStream getOutputFileResourceCorrespondingTo(final String inputFilename) { + final String outputFilename = getOutputFilenameFrom(inputFilename); + return getFileResourceAsInputStream(OUTPUT_DIR + outputFilename); + } + + private String getOutputFilenameFrom(final String inputFilename) { + return inputFilename.replace("pnfDescriptor", "topologyTemplate"); + } + + private byte[] getFileResource(final String filePath) throws IOException { + try (final InputStream inputStream = getFileResourceAsInputStream(filePath)) { + return IOUtils.toByteArray(inputStream); + } + } + + private InputStream getFileResourceAsInputStream(final String filePath) { + return Thread.currentThread().getContextClassLoader().getResourceAsStream(filePath); + } + +} \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/pnfd/PnfdQueryExecutorTest.java b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/pnfd/PnfdQueryExecutorTest.java new file mode 100644 index 0000000000..17f60ee43c --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/pnfd/PnfdQueryExecutorTest.java @@ -0,0 +1,229 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.openecomp.core.converter.impl.pnfd; + +import static org.hamcrest.Matchers.is; +import static org.junit.Assert.assertThat; + +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.Map; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; +import org.openecomp.core.converter.pnfd.exception.QueryOperationNotSupportedException; +import org.openecomp.core.converter.pnfd.model.ConversionQuery; + +public class PnfdQueryExecutorTest { + @Rule + public ExpectedException expectedExceptionRule = ExpectedException.none(); + + private Map yamlToQuery; + + @Before + public void setup() { + yamlToQuery = new HashMap<>(); + final LinkedHashMap nodeTemplateMap = new LinkedHashMap<>(); + yamlToQuery.put("topology_template", nodeTemplateMap); + final Map nodeTemplate1 = ImmutableMap.of("nodeTemplate1" + , ImmutableMap.of( + "type", "tosca.nodes.nfv.PNF", + "properties", ImmutableMap.of( + "layers_protocol", "", + "provider", "Mycompany", + "version", "1.0" + ) + ) + ); + + final Map nodeTemplate2 = ImmutableMap.of("nodeTemplate2" + , ImmutableMap.of( + "type", "tosca.nodes.nfv.PnfExtCp", + "properties", ImmutableMap.of( + "trunk_mode", "false", + "role", "leaf", + "description", "External connection point to access this pnf", + "layers_protocol", ImmutableList.of("ipv4", "ipv6", "otherProtocol") + ) + ) + ); + + nodeTemplateMap.putAll(nodeTemplate1); + nodeTemplateMap.putAll(nodeTemplate2); + } + + + @Test + public void queryNestedYaml() { + //given + final ImmutableMap query = + ImmutableMap.of("topology_template", + ImmutableMap.of("nodeTemplate2", + ImmutableMap.of("type", "tosca.nodes.nfv.PnfExtCp") + ) + ); + //when + final boolean queryResult = PnfdQueryExecutor.find(new ConversionQuery(query), yamlToQuery); + //then + assertThat("Element should be found", queryResult, is(true)); + } + + @Test + public void andQueryWithPropertiesInSameLevel() { + //given + final ImmutableMap query = + ImmutableMap.of( + "topology_template", + ImmutableMap.of( + "nodeTemplate2", + ImmutableMap.of( + "type", "tosca.nodes.nfv.PnfExtCp", + "properties", ImmutableMap.of( + "role", "leaf", + "description", "External connection point to access this pnf" + ) + ) + ) + ); + //when + final boolean queryResult = PnfdQueryExecutor.find(new ConversionQuery(query), yamlToQuery); + //then + assertThat("Element should be found", queryResult, is(true)); + } + + @Test + public void andQueryWithPropertiesDifferentLevel() { + //given + final ImmutableMap query = + ImmutableMap.of( + "topology_template", + ImmutableMap.of( + "nodeTemplate2", + ImmutableMap.of( + "type", "tosca.nodes.nfv.PnfExtCp" + ), + "nodeTemplate1", + ImmutableMap.of( + "type", "tosca.nodes.nfv.PNF" + ) + ) + ); + //when + final boolean queryResult = PnfdQueryExecutor.find(new ConversionQuery(query), yamlToQuery); + //then + assertThat("Element should be found", queryResult, is(true)); + } + + @Test + public void queryListPropertyNotSupported() { + //then + expectedExceptionRule.expect(QueryOperationNotSupportedException.class); + expectedExceptionRule.expectMessage("Yaml list query is not supported yet"); + //given query with a list instance + final ImmutableMap query = + ImmutableMap.of( + "topology_template", + ImmutableMap.of( + "nodeTemplate2", + ImmutableMap.of( + "type", "tosca.nodes.nfv.PnfExtCp", + "properties", ImmutableMap.of( + "layers_protocol", ImmutableList.of("ipv4", "ipv6", "otherProtocol") + ) + ) + ) + ); + //when + final boolean queryResult = PnfdQueryExecutor.find(new ConversionQuery(query), yamlToQuery); + } + + @Test + public void queryStartingListPropertyNotSupported() { + //then + expectedExceptionRule.expect(QueryOperationNotSupportedException.class); + expectedExceptionRule.expectMessage("Yaml list query is not supported yet"); + //given query with a list instance + final Object query = ImmutableSet.of("test", "test", "test"); + //when + PnfdQueryExecutor.find(new ConversionQuery(query), yamlToQuery); + } + + @Test + public void queryWithUnsupportedClassInstance() { + //given a query with unsupported class instance + final Object query = ImmutableMap.of("topology_template", new Object()); + //then + expectedExceptionRule.expect(QueryOperationNotSupportedException.class); + expectedExceptionRule.expectMessage(String.format("Yaml query operation for '%s' is not supported yet", Object.class)); + //when + PnfdQueryExecutor.find(new ConversionQuery(query), yamlToQuery); + } + + @Test + public void queryAString() { + //given a query with string + final Object yaml = "query"; + final Object query = "query"; + //when + final boolean queryResult = PnfdQueryExecutor.find(new ConversionQuery(query), yaml); + + //then + assertThat("Element should be found", queryResult, is(true)); + + } + + @Test + public void queryWithNullPropertyValue() { + //given a query with string + final Map query1 = new HashMap<>(); + query1.put("topology_template", null); + + final Map topologyTemplate = new HashMap<>(); + topologyTemplate.put("nodeTemplate1", null); + final Object query2 = ImmutableMap.of("topology_template", topologyTemplate); + + final Map query3 = new HashMap<>(); + query3.put("topology_template1", null); + //when + final boolean queryResult1 = PnfdQueryExecutor.find(new ConversionQuery(query1), yamlToQuery); + final boolean queryResult2 = PnfdQueryExecutor.find(new ConversionQuery(query2), yamlToQuery); + final boolean queryResult3 = PnfdQueryExecutor.find(new ConversionQuery(query3), yamlToQuery); + //then + assertThat("Element should be found", queryResult1, is(true)); + assertThat("Element should be found", queryResult2, is(true)); + assertThat("Element should be found", queryResult3, is(false)); + } + + @Test + public void nullQuery() { + //given a null query + final Object query = null; + //when + final boolean queryResult = PnfdQueryExecutor.find(new ConversionQuery(query), yamlToQuery); + //then + assertThat("Element should be found", queryResult, is(true)); + + } + +} \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/pnfd/parser/ConversionDefinitionYamlParserTest.java b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/pnfd/parser/ConversionDefinitionYamlParserTest.java new file mode 100644 index 0000000000..967081ba0f --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/pnfd/parser/ConversionDefinitionYamlParserTest.java @@ -0,0 +1,69 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.openecomp.core.converter.impl.pnfd.parser; + +import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.notNullValue; +import static org.junit.Assert.assertThat; +import static org.junit.Assert.fail; +import static org.openecomp.core.converter.pnfd.model.PnfTransformationToken.QUERY; +import static org.openecomp.core.converter.pnfd.model.PnfTransformationToken.TO_NAME; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Map; +import org.junit.Test; +import org.openecomp.core.converter.pnfd.model.ConversionDefinition; +import org.openecomp.core.converter.pnfd.model.ConversionStrategyType; +import org.openecomp.core.util.TestResourcesUtil; +import org.openecomp.core.util.YamlTestUtil; + +public class ConversionDefinitionYamlParserTest { + + @Test + public void shouldBuildDefinition() { + final Map definitionYaml; + final String definitionYamlFilePath = "transformation/conversionDefinition/conversionDefinitionWithReplaceStrategy.yaml"; + try (final InputStream resourceInputStream = TestResourcesUtil.getFileResourceAsStream(definitionYamlFilePath)) { + definitionYaml = (Map) YamlTestUtil.read(resourceInputStream); + } catch (final IOException e) { + fail(String.format("Could not load %s", definitionYamlFilePath)); + return; + } + final ConversionDefinition conversionDefinition = ConversionDefinitionYamlParser.parse(definitionYaml); + assertConversionDefinition(definitionYaml, conversionDefinition); + } + + private void assertConversionDefinition(final Map definitionYaml, + final ConversionDefinition conversionDefinition) { + assertThat("The conversion definition should have been built" + , conversionDefinition, notNullValue()); + assertThat("Should have initialized the conversion definition query" + , conversionDefinition.getConversionQuery(), notNullValue()); + assertThat("The conversion definition should have been built" + , conversionDefinition.getConversionQuery().getQuery(), equalTo(definitionYaml.get(QUERY.getName()))); + assertThat("Should have initialized the conversion definition to attribute name" + , conversionDefinition.getToAttributeName(), equalTo(definitionYaml.get(TO_NAME.getName()))); + assertThat("Should have initialized the conversion definition strategy" + , conversionDefinition.getPnfdConversionStrategy(), notNullValue()); + assertThat("Should have the expected strategy" + , conversionDefinition.getPnfdConversionStrategy().getStrategyType(), equalTo(ConversionStrategyType.REPLACE)); + } +} \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/pnfd/parser/NodeTemplateYamlParserTest.java b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/pnfd/parser/NodeTemplateYamlParserTest.java new file mode 100644 index 0000000000..5bb7ca360e --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/pnfd/parser/NodeTemplateYamlParserTest.java @@ -0,0 +1,46 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.openecomp.core.converter.impl.pnfd.parser; + +import static org.hamcrest.Matchers.aMapWithSize; +import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.is; +import static org.hamcrest.Matchers.not; +import static org.hamcrest.Matchers.notNullValue; +import static org.junit.Assert.assertThat; + +import java.util.Map; +import org.junit.Test; +import org.onap.sdc.tosca.datatypes.model.NodeTemplate; +import org.openecomp.core.converter.impl.pnfd.parser.NodeTemplateYamlParser; +import org.openecomp.core.util.YamlTestUtil; + +public class NodeTemplateYamlParserTest { + + @Test + public void shouldParseNodeTemplate() { + final Map nodeTemplateYaml = (Map) YamlTestUtil.readOrFail("transformation/nodeTemplate/nodeTemplate.yaml"); + final NodeTemplate nodeTemplate = NodeTemplateYamlParser.parse(nodeTemplateYaml); + assertThat("Should have the same type", nodeTemplate.getType(), equalTo(nodeTemplateYaml.get("type"))); + assertThat("Should have a not null properties map", nodeTemplate.getProperties(), notNullValue()); + assertThat("Should have a not empty properties map", nodeTemplate.getProperties(), is(not(aMapWithSize(0)))); + assertThat("Should have the same properties", nodeTemplate.getProperties(), equalTo(nodeTemplateYaml.get("properties"))); + } +} \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/pnfd/parser/PnfdConversionStrategyYamlParserParametrizedTest.java b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/pnfd/parser/PnfdConversionStrategyYamlParserParametrizedTest.java new file mode 100644 index 0000000000..83b7620b42 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/pnfd/parser/PnfdConversionStrategyYamlParserParametrizedTest.java @@ -0,0 +1,68 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.openecomp.core.converter.impl.pnfd.parser; + +import static org.hamcrest.Matchers.instanceOf; +import static org.hamcrest.Matchers.is; +import static org.junit.Assert.assertThat; + +import java.util.Arrays; +import java.util.Collection; +import java.util.Map; +import java.util.Optional; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.junit.runners.Parameterized.Parameters; +import org.openecomp.core.converter.pnfd.strategy.PnfdConversionStrategy; +import org.openecomp.core.converter.impl.pnfd.strategy.ReplaceConversionStrategy; +import org.openecomp.core.util.YamlTestUtil; + +@RunWith(Parameterized.class) +public class PnfdConversionStrategyYamlParserParametrizedTest { + + private final String strategyYamlFilePath; + private final Class expectedStrategyClass; + + public PnfdConversionStrategyYamlParserParametrizedTest(final String strategyYamlFilePath, final Class expectedStrategyClass) { + this.strategyYamlFilePath = strategyYamlFilePath; + this.expectedStrategyClass = expectedStrategyClass; + } + + @Parameters(name = "Run {index} for {0}, expecting {1}") + public static Collection data() { + return Arrays.asList(new Object[][] { + {"transformation/strategy/replaceStrategy.yaml", ReplaceConversionStrategy.class} + }); + } + + @Test + public void shouldBuildTheExpectedStrategy() { + final Object replaceStrategyYaml = YamlTestUtil.readOrFail(strategyYamlFilePath); + final Optional actualStrategy = PnfdConversionStrategyYamlParser + .parse((Map) replaceStrategyYaml); + + assertThat("The strategy should have been built" + , actualStrategy.isPresent(), is(true)); + assertThat("The built strategy should be " + expectedStrategyClass.getName() + , actualStrategy.get(), instanceOf(expectedStrategyClass)); + } + +} \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/pnfd/parser/PnfdConversionStrategyYamlParserTest.java b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/pnfd/parser/PnfdConversionStrategyYamlParserTest.java new file mode 100644 index 0000000000..1eab214980 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/converter/impl/pnfd/parser/PnfdConversionStrategyYamlParserTest.java @@ -0,0 +1,53 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.openecomp.core.converter.impl.pnfd.parser; + +import static org.hamcrest.Matchers.is; +import static org.junit.Assert.assertThat; +import static org.junit.Assert.fail; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Map; +import java.util.Optional; +import org.junit.Test; +import org.openecomp.core.converter.pnfd.strategy.PnfdConversionStrategy; +import org.openecomp.core.util.TestResourcesUtil; +import org.openecomp.core.util.YamlTestUtil; + +public class PnfdConversionStrategyYamlParserTest { + + @Test + public void parseInvalidYamlObject() { + final Object replaceStrategyYaml; + final String strategyYamlFilePath = "transformation/strategy/strategyMissingStrategyAttribute.yaml"; + try (final InputStream resourceInputStream = TestResourcesUtil.getFileResourceAsStream(strategyYamlFilePath)) { + replaceStrategyYaml = YamlTestUtil.read(resourceInputStream); + } catch (final IOException e) { + fail(String.format("Could not load %s", strategyYamlFilePath)); + return; + } + final Optional actualStrategy = PnfdConversionStrategyYamlParser + .parse((Map) replaceStrategyYaml); + assertThat("The strategy should not have been built" + , actualStrategy.isPresent(), is(false)); + } + +} \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/impl/ToscaConverterImplTest.java b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/impl/ToscaConverterImplTest.java new file mode 100644 index 0000000000..3e4e62a0d1 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/impl/ToscaConverterImplTest.java @@ -0,0 +1,296 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.openecomp.core.impl; + +import org.apache.commons.collections.CollectionUtils; +import org.junit.Assert; +import org.junit.Test; +import org.onap.sdc.tosca.datatypes.model.*; +import org.onap.sdc.tosca.services.ToscaExtensionYamlUtil; +import org.onap.sdc.tosca.services.YamlUtil; +import org.openecomp.core.converter.ToscaConverter; +import org.openecomp.core.utilities.file.FileContentHandler; +import org.openecomp.core.utilities.file.FileUtils; +import org.openecomp.core.utilities.json.JsonUtil; +import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; +import java.nio.file.NotDirectoryException; +import java.util.*; + +import static org.junit.Assert.assertEquals; +import static org.openecomp.core.converter.datatypes.Constants.globalStName; +import static org.openecomp.core.converter.datatypes.Constants.mainStName; + +public class ToscaConverterImplTest { + + private static final ToscaConverter toscaConverter = new ToscaConverterImpl(); + private static final String VIRTUAL_LINK = "virtualLink"; + private static final String UNBOUNDED = "UNBOUNDED"; + private static final String BASE_DIR = "/mock/toscaConverter"; + + + @Test + public void testConvertMainSt() throws IOException { + String inputFilesPath = BASE_DIR + "/convertMainSt/in"; + String outputFilesPath = BASE_DIR + "/convertMainSt/out"; + + convertAndValidate(inputFilesPath, outputFilesPath); + } + + @Test + public void testNodesConversion() throws IOException { + String inputFilesPath = BASE_DIR + "/convertCsar/in"; + String outputFilesPath = BASE_DIR + "/convertCsar/out"; + + convertAndValidate(inputFilesPath, outputFilesPath); + } + + @Test + public void testParameterConversion() throws IOException { + String inputFilesPath = BASE_DIR + "/convertParameters/in"; + String outputFilesPath = BASE_DIR + "/convertParameters/out"; + + convertAndValidate(inputFilesPath, outputFilesPath); + } + + @Test + public void testConversionWithInt() throws IOException { + String inputFilesPath = BASE_DIR + "/conversionWithInt/in"; + String outputFilesPath = BASE_DIR + "/conversionWithInt/out"; + + convertAndValidate(inputFilesPath, outputFilesPath); + } + + @Test + public void testOccurrencesUpperString() { + Object[] occurrences = buildOccurrences("0", UNBOUNDED); + Assert.assertEquals(occurrences[0], 0); + Assert.assertEquals(occurrences[1], UNBOUNDED); + } + + @Test + public void testOccurrencesAsInts() { + Object[] occurrences = buildOccurrences("0", "1"); + Assert.assertEquals(occurrences[0], 0); + Assert.assertEquals(occurrences[1], 1); + } + + @Test + public void testOccurrencesAsStrings() { + String test = "TEST_A"; + Object[] occurrences = buildOccurrences(UNBOUNDED, test); + Assert.assertEquals(occurrences[0], UNBOUNDED); + Assert.assertEquals(occurrences[1], test); + } + + @Test + public void testOccurrencesLowerString() { + Object[] occurrences = buildOccurrences(UNBOUNDED, "100"); + Assert.assertEquals(occurrences[0], UNBOUNDED); + Assert.assertEquals(occurrences[1], 100); + } + + @Test + public void testOccurrencesEmpty() { + Object[] occurrences = buildOccurrences(); + Assert.assertEquals(occurrences.length, 0); + } + + @Test + public void testOccurrencesMany() { + String test = "TEST_B"; + Object[] occurrences = buildOccurrences("1", "2", test); + Assert.assertEquals(occurrences[0], 1); + Assert.assertEquals(occurrences[1], 2); + Assert.assertEquals(occurrences[2], test); + } + + @Test + public void testDefaultOccurrences() { + Object[] occurrences = buildOccurrences((List) null); + Assert.assertEquals(1, occurrences[0]); + Assert.assertEquals(1, occurrences[1]); + } + + private Object[] buildOccurrences(String... bounds) { + return buildOccurrences(Arrays.asList(bounds)); + } + + private void convertAndValidate(String inputFilesPath, String outputFilesPath) + throws IOException { + FileContentHandler fileContentHandler = + createFileContentHandlerFromInput(inputFilesPath); + + ToscaServiceModel toscaServiceModel = toscaConverter.convert(fileContentHandler); + validateConvertorOutput(outputFilesPath, toscaServiceModel); + } + + private void validateConvertorOutput(String outputFilesPath, ToscaServiceModel toscaServiceModel) + throws IOException { + ServiceTemplate mainSt = toscaServiceModel.getServiceTemplates().get(mainStName); + Map expectedOutserviceTemplates = new HashMap<>(); + loadServiceTemplates(outputFilesPath, new ToscaExtensionYamlUtil(), + expectedOutserviceTemplates); + + checkSTResults(expectedOutserviceTemplates, null, mainSt); + } + + private Object[] buildOccurrences(List bounds) { + NodeType nodeType = JsonUtil.json2Object("{derived_from=tosca.nodes.Root, description=MME_VFC, " + + "properties={vendor={type=string, default=ERICSSON}, " + + "csarVersion={type=string, default=v1.0}, csarProvider={type=string, default=ERICSSON}, " + + "id={type=string, default=vMME}, version={type=string, default=v1.0}, csarType={type=string, default=NFAR}}, " + + "requirements=[{virtualLink={" + + (bounds == null ? "" : "occurrences=[" + String.join(", ", bounds) + "], ") + + "capability=tosca.capabilities.network.Linkable}}]}", NodeType.class); + List> requirements = nodeType.getRequirements(); + return requirements.get(0).get(VIRTUAL_LINK).getOccurrences(); + } + + private FileContentHandler createFileContentHandlerFromInput(String inputFilesPath) + throws IOException { + URL inputFilesUrl = this.getClass().getResource(inputFilesPath); + String path = inputFilesUrl.getPath(); + File directory = new File(path); + File[] listFiles = directory.listFiles(); + + FileContentHandler fileContentHandler = new FileContentHandler(); + insertFilesIntoFileContentHandler(listFiles, fileContentHandler); + return fileContentHandler; + } + + private void insertFilesIntoFileContentHandler(File[] listFiles, + FileContentHandler fileContentHandler) + throws IOException { + byte[] fileContent; + if(CollectionUtils.isEmpty(fileContentHandler.getFileList())) { + fileContentHandler.setFiles(new HashMap<>()); + } + + for (File file : listFiles) { + if(!file.isDirectory()) { + try (FileInputStream fis = new FileInputStream(file)) { + fileContent = FileUtils.toByteArray(fis); + fileContentHandler.addFile(file.getPath(), fileContent); + } + }else{ + File[] currFileList = file.listFiles(); + insertFilesIntoFileContentHandler(currFileList, fileContentHandler); + } + + } + } + + private void checkSTResults( + Map expectedOutserviceTemplates, + ServiceTemplate gloablSubstitutionServiceTemplate, ServiceTemplate mainServiceTemplate) { + YamlUtil yamlUtil = new YamlUtil(); + if (Objects.nonNull(gloablSubstitutionServiceTemplate)) { + assertEquals("difference global substitution service template: ", + yamlUtil.objectToYaml(expectedOutserviceTemplates.get(globalStName)), + yamlUtil.objectToYaml(gloablSubstitutionServiceTemplate)); + } + if (Objects.nonNull(mainServiceTemplate)) { + assertEquals("difference main service template: ", + yamlUtil.objectToYaml(expectedOutserviceTemplates.get(mainStName)), + yamlUtil.objectToYaml(mainServiceTemplate)); + } + } + + public static void loadServiceTemplates(String serviceTemplatesPath, + ToscaExtensionYamlUtil toscaExtensionYamlUtil, + Map serviceTemplates) + throws IOException { + URL urlFile = ToscaConverterImplTest.class.getResource(serviceTemplatesPath); + if (urlFile != null) { + File pathFile = new File(urlFile.getFile()); + File[] files = pathFile.listFiles(); + if (files != null) { + addServiceTemplateFiles(serviceTemplates, files, toscaExtensionYamlUtil); + } else { + throw new NotDirectoryException(serviceTemplatesPath); + } + } else { + throw new NotDirectoryException(serviceTemplatesPath); + } + } + + private static void addServiceTemplateFiles(Map serviceTemplates, + File[] files, + ToscaExtensionYamlUtil toscaExtensionYamlUtil) throws IOException { + + for (File file : files) { + + try (InputStream yamlFile = new FileInputStream(file)) { + ServiceTemplate serviceTemplateFromYaml = + toscaExtensionYamlUtil.yamlToObject(yamlFile, ServiceTemplate.class); + createConcreteRequirementObjectsInServiceTemplate(serviceTemplateFromYaml, toscaExtensionYamlUtil); + serviceTemplates.put(file.getName(), serviceTemplateFromYaml); + } + } + } + + private static void createConcreteRequirementObjectsInServiceTemplate(ServiceTemplate + serviceTemplateFromYaml, + ToscaExtensionYamlUtil + toscaExtensionYamlUtil) { + + if (serviceTemplateFromYaml == null + || serviceTemplateFromYaml.getTopology_template() == null + || serviceTemplateFromYaml.getTopology_template().getNode_templates() == null) { + return; + } + + //Creating concrete objects + Map nodeTemplates = + serviceTemplateFromYaml.getTopology_template().getNode_templates(); + for (Map.Entry entry : nodeTemplates.entrySet()) { + NodeTemplate nodeTemplate = entry.getValue(); + List> requirements = nodeTemplate.getRequirements(); + List> concreteRequirementList = new ArrayList<>(); + if (requirements != null) { + ListIterator> reqListIterator = requirements + .listIterator(); + while (reqListIterator.hasNext()){ + Map requirement = reqListIterator.next(); + Map concreteRequirement = new HashMap<>(); + for (Map.Entry reqEntry : requirement.entrySet()) { + RequirementAssignment requirementAssignment = (toscaExtensionYamlUtil + .yamlToObject(toscaExtensionYamlUtil.objectToYaml(reqEntry.getValue()), + RequirementAssignment.class)); + concreteRequirement.put(reqEntry.getKey(), requirementAssignment); + concreteRequirementList.add(concreteRequirement); + reqListIterator.remove(); + } + } + requirements.clear(); + requirements.addAll(concreteRequirementList); + nodeTemplate.setRequirements(requirements); + } + System.out.println(); + //toscaExtensionYamlUtil.yamlToObject(nodeTemplate, NodeTemplate.class); + } + } +} diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/impl/ToscaConvertorDefinitionsTest.java b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/impl/ToscaConvertorDefinitionsTest.java new file mode 100644 index 0000000000..b978b7db99 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/impl/ToscaConvertorDefinitionsTest.java @@ -0,0 +1,77 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.openecomp.core.impl; + +import org.apache.commons.io.IOUtils; +import org.junit.Ignore; +import org.junit.Test; +import org.onap.sdc.tosca.datatypes.model.ServiceTemplate; +import org.openecomp.core.utilities.file.FileContentHandler; +import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum; +import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel; + +import java.net.URL; +import java.util.Map; +import java.util.Set; + +import static org.junit.Assert.*; +import static org.openecomp.core.converter.datatypes.Constants.ONAP_INDEX; +import static org.openecomp.core.impl.GlobalSubstitutionServiceTemplate.*; +import static org.openecomp.sdc.common.utils.CommonUtil.validateAndUploadFileContent; +public class ToscaConvertorDefinitionsTest { + + + @Ignore + @Test + public void loadCsar() throws Exception { + URL resource = ToscaConvertorDefinitionsTest.class.getResource("/csar/vCSCF.csar"); + byte[] bytes = IOUtils.toByteArray(resource); + assertNotNull(bytes); + FileContentHandler contentMap = validateAndUploadFileContent(OnboardingTypesEnum.CSAR, bytes); + ToscaConverterImpl toscaConverter = new ToscaConverterImpl(); + ToscaServiceModel convert = toscaConverter.convert(contentMap); + Map serviceTemplates = convert.getServiceTemplates(); + assertTrue(serviceTemplates.containsKey(GLOBAL_SUBSTITUTION_SERVICE_FILE_NAME)); + ServiceTemplate serviceTemplate = serviceTemplates.get(GLOBAL_SUBSTITUTION_SERVICE_FILE_NAME); + + assertNotNull(serviceTemplate); + assertTrue(serviceTemplate instanceof GlobalSubstitutionServiceTemplate); + + assertNotNull(serviceTemplate.getMetadata()); + assertFalse(serviceTemplate.getMetadata().isEmpty()); + assertTrue(serviceTemplate.getMetadata().containsKey(TEMPLATE_NAME_PROPERTY)); + + assertNotNull(serviceTemplate.getImports()); + assertFalse(serviceTemplate.getImports().isEmpty()); + assertEquals(1 ,serviceTemplate.getImports().size()); + assertTrue(((Map) serviceTemplate.getImports().get(0)).containsKey(HEAT_INDEX)); + assertTrue(((Map) serviceTemplate.getImports().get(0)).containsKey(ONAP_INDEX)); + + assertEquals(DEFININTION_VERSION, serviceTemplate.getTosca_definitions_version()); + + + assertNotNull(serviceTemplate.getNode_types()); + assertEquals(1, serviceTemplate.getNode_types().size()); + Set keys = serviceTemplate.getNode_types().keySet(); + assertTrue(keys.contains("tosca.nodes.nfv.ext.zte.VNF.vCSCF")); + } + + +} diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/impl/ToscaSolConverterPnfMultipleNodeTemplatesTest.java b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/impl/ToscaSolConverterPnfMultipleNodeTemplatesTest.java deleted file mode 100644 index 21394c9c47..0000000000 --- a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/impl/ToscaSolConverterPnfMultipleNodeTemplatesTest.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * - - * * ============LICENSE_START======================================================= - * * Copyright (C) 2019 Nordix Foundation. - * * ================================================================================ - * * 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. - * * - * * SPDX-License-Identifier: Apache-2.0 - * * ============LICENSE_END========================================================= - * - */ - -package org.openecomp.core.impl; - -import org.apache.commons.io.IOUtils; -import org.junit.Test; -import org.onap.sdc.tosca.datatypes.model.NodeTemplate; -import org.onap.sdc.tosca.datatypes.model.ServiceTemplate; -import org.openecomp.core.converter.ServiceTemplateReaderService; -import org.openecomp.core.impl.services.ServiceTemplateReaderServiceImpl; - -import java.io.IOException; -import java.io.InputStream; -import java.util.Map; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -public class ToscaSolConverterPnfMultipleNodeTemplatesTest { - - private static final String PNF_EXT_CP_1 = "pnfExtCp_1"; - private static final String PNF_EXT_CP_2 = "pnfExtCp_2"; - - @Test - public void testGivenDescriptorWithPnfAndTwoPnfExts_WhenConvertTopologyTemplate_ThenTwoExtCpsInOutput() throws IOException { - // Added this as separate test as data-driven tests compare strings and as order of nodeTemplates - // can be different in hashMap and hence test may fail - final byte[] descriptor = getFileResource("pnfDescriptor/other/pnfDescriptor_PnfAnd2ExtCps.yaml"); - ServiceTemplateReaderService serviceTemplateReaderService = new ServiceTemplateReaderServiceImpl(descriptor); - ServiceTemplate serviceTemplate = new ServiceTemplate(); - ToscaSolConverterPnf toscaSolConverter = new ToscaSolConverterPnf(); - toscaSolConverter.convertTopologyTemplate(serviceTemplate, serviceTemplateReaderService); - Map nodeTemplates = serviceTemplate.getTopology_template().getNode_templates(); - assertEquals(2, nodeTemplates.size()); - - nodeTemplates.entrySet().stream() - .map(Map.Entry::getKey) - .forEach((key -> assertTrue(getErrorString(), hasCorrectName(key)))); - } - - private byte[] getFileResource(String filePath) throws IOException { - try (InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(filePath)) { - return IOUtils.toByteArray(inputStream); - } - } - - private boolean hasCorrectName(String name) { - return PNF_EXT_CP_1.equals(name) || PNF_EXT_CP_2.equals(name); - } - - private String getErrorString() { - return "node template name should be either " + PNF_EXT_CP_1 + " or " + PNF_EXT_CP_2; - } -} diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/impl/ToscaSolConverterPnfTest.java b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/impl/ToscaSolConverterPnfTest.java deleted file mode 100644 index 4d59d6bfe9..0000000000 --- a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/impl/ToscaSolConverterPnfTest.java +++ /dev/null @@ -1,125 +0,0 @@ -/* - * - - * * ============LICENSE_START======================================================= - * * Copyright (C) 2019 Nordix Foundation. - * * ================================================================================ - * * 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. - * * - * * SPDX-License-Identifier: Apache-2.0 - * * ============LICENSE_END========================================================= - * - */ - -package org.openecomp.core.impl; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.equalTo; -import static org.junit.Assert.fail; - -import java.io.IOException; -import java.io.InputStream; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.Collection; -import java.util.stream.Collectors; -import java.util.stream.Stream; -import org.apache.commons.io.IOUtils; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; -import org.onap.sdc.tosca.datatypes.model.ServiceTemplate; -import org.onap.sdc.tosca.services.ToscaExtensionYamlUtil; -import org.onap.sdc.tosca.services.YamlUtil; -import org.openecomp.core.converter.ServiceTemplateReaderService; -import org.openecomp.core.impl.services.ServiceTemplateReaderServiceImpl; - -@RunWith(Parameterized.class) -public class ToscaSolConverterPnfTest { - - private static final String INPUT_DIR = "pnfDescriptor/in/"; - private static final String OUTPUT_DIR = "pnfDescriptor/out/"; - private String inputFilename; - private YamlUtil yamlUtil = new YamlUtil(); - private ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil(); - - public ToscaSolConverterPnfTest(String inputFilename) { - this.inputFilename = inputFilename; - } - - @Parameterized.Parameters(name = "{index}: {0}") - public static Collection input() throws IOException { - try (Stream files = Files.list(getPathFromClasspath(INPUT_DIR))) { - return files.map(path -> path.getFileName().toString()) - .collect(Collectors.toList()); - } - } - - @Test - public void testTopologyTemplateConversions() { - final byte[] descriptor = getInputFileResource(inputFilename); - final ServiceTemplateReaderService serviceTemplateReaderService = - new ServiceTemplateReaderServiceImpl(descriptor); - final ServiceTemplate serviceTemplate = new ServiceTemplate(); - final ToscaSolConverterPnf toscaSolConverter = new ToscaSolConverterPnf(); - toscaSolConverter.convertTopologyTemplate(serviceTemplate, serviceTemplateReaderService); - - final String actualYaml = yamlUtil.objectToYaml(serviceTemplate); - final String expectedYaml = getExpectedResultFor(inputFilename); - assertThat("Converted PNF descriptor should be the same as the expected topology template", actualYaml, - equalTo(expectedYaml)); - } - - private String getExpectedResultFor(final String inputFilename) { - try (final InputStream inputStream = getOutputFileResourceCorrespondingTo(inputFilename)) { - final ServiceTemplate serviceTemplate = toscaExtensionYamlUtil.yamlToObject(inputStream, ServiceTemplate.class); - return yamlUtil.objectToYaml(serviceTemplate); - } catch (final IOException e) { - fail(String.format("Could not find file '%s'", inputFilename)); - } - - return null; - } - - private static Path getPathFromClasspath(final String location) { - return Paths.get(Thread.currentThread().getContextClassLoader().getResource(location).getPath()); - } - - private byte[] getInputFileResource(final String inputFilename) { - return getFileResource(INPUT_DIR + inputFilename); - } - - private InputStream getOutputFileResourceCorrespondingTo(final String inputFilename) { - final String outputFilename = getOutputFilenameFrom(inputFilename); - return getFileResourceAsInputStream(OUTPUT_DIR + outputFilename); - } - - private String getOutputFilenameFrom(final String inputFilename) { - return inputFilename.replace("pnfDescriptor", "topologyTemplate"); - } - - private byte[] getFileResource(final String filePath) { - try (InputStream inputStream = getFileResourceAsInputStream(filePath)) { - return IOUtils.toByteArray(inputStream); - } catch (final IOException e) { - fail(String.format("Could not find file '%s'", filePath)); - } - - return null; - } - - private InputStream getFileResourceAsInputStream(final String filePath) { - return Thread.currentThread().getContextClassLoader().getResourceAsStream(filePath); - } - -} \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/util/TestResourcesUtil.java b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/util/TestResourcesUtil.java index 34559f5386..7d89bb3eab 100644 --- a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/util/TestResourcesUtil.java +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/util/TestResourcesUtil.java @@ -23,6 +23,7 @@ import static org.junit.Assert.fail; import java.io.IOException; import java.io.InputStream; +import java.net.URL; import org.apache.commons.io.IOUtils; import org.openecomp.sdc.logging.api.Logger; import org.openecomp.sdc.logging.api.LoggerFactory; @@ -47,7 +48,7 @@ public class TestResourcesUtil { * @throws IOException * When the file was not found or the input stream could not be opened */ - public static byte[] getFileResource(final String resourcePath) throws IOException { + public static byte[] getFileResourceBytes(final String resourcePath) throws IOException { try(final InputStream inputStream = ClassLoader.class.getResourceAsStream(resourcePath)) { if (inputStream == null) { throw new IOException(String.format("Could not find the resource on path \"%s\"", resourcePath)); @@ -67,7 +68,7 @@ public class TestResourcesUtil { */ public static byte[] getResourceBytesOrFail(final String resourcePath) { try { - return getFileResource(resourcePath); + return getFileResourceBytes(resourcePath); } catch (final IOException e) { final String errorMsg = String.format("Could not load resource '%s'", resourcePath); LOGGER.error(errorMsg, e); @@ -77,4 +78,26 @@ public class TestResourcesUtil { return null; } + /** + * Gets the input stream of a resource file + * + * @param resourcePath The resource file path + * @return + * The resource input stream + */ + public static InputStream getFileResourceAsStream(final String resourcePath) { + return Thread.currentThread().getContextClassLoader().getResourceAsStream(resourcePath); + } + + /** + * Gets the input stream of a resource file + * + * @param resourcePath The resource file path + * @return + * The resource input stream + */ + public static URL getFileUrl(final String resourcePath) { + return Thread.currentThread().getContextClassLoader().getResource(resourcePath); + } + } diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/util/YamlTestUtil.java b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/util/YamlTestUtil.java new file mode 100644 index 0000000000..b095d13ed7 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/java/org/openecomp/core/util/YamlTestUtil.java @@ -0,0 +1,67 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.openecomp.core.util; + +import static org.junit.Assert.fail; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import org.onap.sdc.tosca.services.YamlUtil; + +public class YamlTestUtil { + + private YamlTestUtil() { + } + + /** + * Reads the description file that has the required YAML format. + * + * @param yamlFile The yaml file + * @return The yaml parsed to Object + */ + public static Object read(final File yamlFile) throws IOException { + try (final InputStream fileInputStream = new FileInputStream(yamlFile)) { + return read(fileInputStream); + } + } + + public static Object read(final String yamlFilePath) throws IOException { + try (final InputStream resourceInputStream = TestResourcesUtil.getFileResourceAsStream(yamlFilePath)) { + return read(resourceInputStream); + } + } + + public static Object read(final InputStream yamlFileInputStream) { + return YamlUtil.read(yamlFileInputStream); + } + + public static Object readOrFail(final String yamlFilePath) { + try { + return read(yamlFilePath); + } catch (final IOException ignored) { + fail(String.format("Could not load '%s'", yamlFilePath)); + return null; + } + } + + +} diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/model-driven-conversion.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/model-driven-conversion.yaml new file mode 100644 index 0000000000..4d1500169e --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/model-driven-conversion.yaml @@ -0,0 +1,69 @@ +- transformation-for: nodeTemplate #or "region: nodeTemplate"; or "object: nodeTemplate" + name: PnfExtCp transformation + description: converts any node template that has a type tosca.nodes.nfv.PnfExtCp + query: #or "find:" + #currently we only support a single attribute and value search. Can be hierarchical like "properties: layer_protocols:". + #must have the same structure in the original node_template declaration, otherwise the attribute will not be found. + type: tosca.nodes.nfv.PnfExtCp + conversions: + - query: #attribute query + #must have the same structure in the original node_template declaration, otherwise the attribute will not be found. + #the value does not matter as we are going to convert it. + type: + to-name: type #new attribute name. We could have a default strategy to copy the original name (in the query) if this entry is not provided. + to-value: + strategy: replace + from: tosca.nodes.nfv.PnfExtCp #could be ignored + to: org.openecomp.resource.cp.v2.extCP + - query: + properties: + layer_protocols: + to-name: ip_requirements + to-value: + strategy: replaceInList + list: + - from: ipv4 + to: + assingment_method: dhcp + ip_version: 4 + - from: ipv6 + to: + assingment_method: dhcp + ip_version: 6 + to-get-input: ipRequirements +- transformation-for: getInputFunction + name: ipRequirements + description: converts IpRequirements inputs when called by a get_input TOSCA function + conversions: + - query: + type: + to-name: type + to-value: + strategy: copy + - query: + description: + to-name: description + to-value: + strategy: copy + - query: + entry_schema: + type: + to-name: type + to-value: + strategy: replace + from: string + to: org.openecomp.datatypes.network.IpRequirements + - query: + default: + to-name: default + to-value: + strategy: replaceInList + list: + - from: ipv4 + to: + assingment_method: dhcp + ip_version: 4 + - from: ipv6 + to: + assingment_method: dhcp + ip_version: 6 \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/pnfDescriptor/in/pnfDescriptor_withLayerProtocolsAndDuplicatedGetInput.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/pnfDescriptor/in/pnfDescriptor_withLayerProtocolsAndDuplicatedGetInput.yaml index 8549da09b2..8867cd46f8 100644 --- a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/pnfDescriptor/in/pnfDescriptor_withLayerProtocolsAndDuplicatedGetInput.yaml +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/pnfDescriptor/in/pnfDescriptor_withLayerProtocolsAndDuplicatedGetInput.yaml @@ -42,4 +42,4 @@ topology_template: role: leaf description: External connection point to access Acme myPnf requirements: - - dependency: myPnf + - dependency: myPnf \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/pnfDescriptor/other/pnfDescriptor_PnfAnd2ExtCps.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/pnfDescriptor/other/pnfDescriptor_PnfAnd2ExtCps.yaml deleted file mode 100644 index b37334496c..0000000000 --- a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/pnfDescriptor/other/pnfDescriptor_PnfAnd2ExtCps.yaml +++ /dev/null @@ -1,44 +0,0 @@ -tosca_definitions_version: tosca_simple_yaml_1_1 - -description: service template of a PNF - -topology_template: - inputs: - role: - type: string - description: Role - default: leaf - layer_protocols: - type: list - description: IP protocols - entry_schema: - type: string - default: [ipv4, ipv6, otherProtocol] - node_templates: - pnf_mainPart: - type: tosca.nodes.nfv.PNF - properties: - descriptor_id: b1bb0ce7-ebca-4fa7-95ed-4840d70a2233 - function_description: an example PNF - provider: Mycompany - version: 1.0 - descriptor_invariant_id: 1111-2222-ccaa-bbdd - name: ExamplePnf - requirements: - - virtual_link: - capability: tosca.capabilities.nfv.VirtualLinkable - node: pnfExtCp_1 - pnfExtCp_1: - type: tosca.nodes.nfv.PnfExtCp - properties: - trunk_mode: false - layer_protocols: [ ipv4, ipv6, otherProtocol ] - role: leaf - description: External connection point to access this pnf - pnfExtCp_2: - type: tosca.nodes.nfv.PnfExtCp - properties: - trunk_mode: false - layer_protocols: {get_input: layer_protocols} - role: {get_input: role} - description: External connection point to access this pnf \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/conversionDefinition/conversionDefinitionWithReplaceStrategy.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/conversionDefinition/conversionDefinitionWithReplaceStrategy.yaml new file mode 100644 index 0000000000..cc365b7a71 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/conversionDefinition/conversionDefinitionWithReplaceStrategy.yaml @@ -0,0 +1,7 @@ +query: + type: +to-name: type +to-value: + strategy: replace + from: tosca.nodes.nfv.PnfExtCp + to: org.openecomp.resource.cp.v2.extCP \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/nodeTemplate/nodeTemplate.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/nodeTemplate/nodeTemplate.yaml new file mode 100644 index 0000000000..fd4bb5a7b8 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/nodeTemplate/nodeTemplate.yaml @@ -0,0 +1,7 @@ +type: org.openecomp.resource.cp.v2.extCP +properties: + ip_requirements: + - assingment_method: dhcp + ip_version: 4 + - assingment_method: dhcp + ip_version: 6 \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/expectedOutput/convertTwoAttributesSameLevel.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/expectedOutput/convertTwoAttributesSameLevel.yaml new file mode 100644 index 0000000000..8ec436ed9f --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/expectedOutput/convertTwoAttributesSameLevel.yaml @@ -0,0 +1,11 @@ +topology_template: + node_templates: + pnfExtCp_1: + type: org.openecomp.resource.cp.v2.extCP + properties: + ip_requirements: + - assingment_method: dhcp + ip_version: 4 + - assingment_method: dhcp + ip_version: 6 + description_converted: External connection point to access this pnf \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/expectedOutput/copyListAttribute.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/expectedOutput/copyListAttribute.yaml new file mode 100644 index 0000000000..55c5f52851 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/expectedOutput/copyListAttribute.yaml @@ -0,0 +1,8 @@ +topology_template: + node_templates: + pnfExtCp_1: + properties: + layer_protocols_copy: + - ipv4 + - ipv6 + - otherProtocol \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/expectedOutput/copyObjectAttribute.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/expectedOutput/copyObjectAttribute.yaml new file mode 100644 index 0000000000..fe832edc14 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/expectedOutput/copyObjectAttribute.yaml @@ -0,0 +1,6 @@ +topology_template: + node_templates: + pnfExtCp_1: + properties: + anObjectAttribute_copy: + anyAttribute: anyAttributeValue \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/expectedOutput/copyScalarAttribute.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/expectedOutput/copyScalarAttribute.yaml new file mode 100644 index 0000000000..e2684d4c0a --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/expectedOutput/copyScalarAttribute.yaml @@ -0,0 +1,5 @@ +topology_template: + node_templates: + pnfExtCp_1: + properties: + trunk_mode_copy: false \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/expectedOutput/defaultOutput.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/expectedOutput/defaultOutput.yaml new file mode 100644 index 0000000000..d47ce66ace --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/expectedOutput/defaultOutput.yaml @@ -0,0 +1,2 @@ +topology_template: + node_templates: {} \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/expectedOutput/invalidAndValidAttributeQuery.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/expectedOutput/invalidAndValidAttributeQuery.yaml new file mode 100644 index 0000000000..90164839a4 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/expectedOutput/invalidAndValidAttributeQuery.yaml @@ -0,0 +1,4 @@ +topology_template: + node_templates: + pnfExtCp_1: + type: tosca.nodes.nfv.PnfExtCp \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/expectedOutput/replaceInListAttribute.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/expectedOutput/replaceInListAttribute.yaml new file mode 100644 index 0000000000..6086d5e14d --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/expectedOutput/replaceInListAttribute.yaml @@ -0,0 +1,9 @@ +topology_template: + node_templates: + pnfExtCp_1: + properties: + ip_requirements: + - assingment_method: dhcp + ip_version: 4 + - assingment_method: dhcp + ip_version: 6 \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/expectedOutput/replaceInListAttributeWithNonExistentAndNonExistentFromValues.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/expectedOutput/replaceInListAttributeWithNonExistentAndNonExistentFromValues.yaml new file mode 100644 index 0000000000..8dfc98149a --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/expectedOutput/replaceInListAttributeWithNonExistentAndNonExistentFromValues.yaml @@ -0,0 +1,8 @@ +topology_template: + node_templates: + pnfExtCp_1: + properties: + ip_requirements: + - assingment_method: dhcp + ip_version: 4 + - anyStringValue \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/expectedOutput/replaceScalarAttributeToList.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/expectedOutput/replaceScalarAttributeToList.yaml new file mode 100644 index 0000000000..35139472c3 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/expectedOutput/replaceScalarAttributeToList.yaml @@ -0,0 +1,8 @@ +topology_template: + node_templates: + pnfExtCp_1: + properties: + trunk_mode_replaced: + - my + - replaced + - list \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/expectedOutput/replaceScalarAttributeToObject.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/expectedOutput/replaceScalarAttributeToObject.yaml new file mode 100644 index 0000000000..0e82ea33e3 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/expectedOutput/replaceScalarAttributeToObject.yaml @@ -0,0 +1,6 @@ +topology_template: + node_templates: + pnfExtCp_1: + properties: + trunk_mode_replaced: + myObjectReplaced: myObjectReplacedValue \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/expectedOutput/replaceScalarAttributeToScalar.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/expectedOutput/replaceScalarAttributeToScalar.yaml new file mode 100644 index 0000000000..03492963ac --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/expectedOutput/replaceScalarAttributeToScalar.yaml @@ -0,0 +1,5 @@ +topology_template: + node_templates: + pnfExtCp_1: + properties: + trunk_mode_replaced: myReplacedValue \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/pnfAndExtCpWithInput.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/pnfAndExtCpWithInput.yaml new file mode 100644 index 0000000000..1e11d3833b --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/pnfAndExtCpWithInput.yaml @@ -0,0 +1,39 @@ +tosca_definitions_version: tosca_simple_yaml_1_1 + +description: service template of a PNF + +topology_template: + inputs: + role: + type: string + description: Role + default: leaf + layer_protocols: + type: list + description: IP protocols + entry_schema: + type: string + default: [ipv4, ipv6, otherProtocol] + node_templates: + pnf_mainPart: + type: tosca.nodes.nfv.PNF + properties: + descriptor_id: b1bb0ce7-ebca-4fa7-95ed-4840d70a2233 + function_description: an example PNF + provider: Mycompany + version: 1.0 + descriptor_invariant_id: 1111-2222-ccaa-bbdd + name: ExamplePnf + requirements: + - virtual_link: + capability: tosca.capabilities.nfv.VirtualLinkable + node: pnfExtCp_1 + pnfExtCp_1: + type: tosca.nodes.nfv.PnfExtCp + properties: + trunk_mode: false + layer_protocols: [ ipv4, ipv6, otherProtocol ] + role: leaf + description: External connection point to access this pnf + anObjectAttribute: + anyAttribute: anyAttributeValue \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/attributeQueryWithMoreThanOneAttribute.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/attributeQueryWithMoreThanOneAttribute.yaml new file mode 100644 index 0000000000..fda5646d63 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/attributeQueryWithMoreThanOneAttribute.yaml @@ -0,0 +1,13 @@ +- transformation-for: nodeTemplate + query: + type: tosca.nodes.nfv.PnfExtCp + conversions: + - query: #more than one attribute is not allowed here + type: tosca.nodes.nfv.PnfExtCp + properties: + trunk_mode: false + to-name: type + to-value: + strategy: replace + from: tosca.nodes.nfv.PnfExtCp + to: org.openecomp.resource.cp.v2.extCP \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/convertTwoAttributesSameLevel.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/convertTwoAttributesSameLevel.yaml new file mode 100644 index 0000000000..421fef587b --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/convertTwoAttributesSameLevel.yaml @@ -0,0 +1,32 @@ +- transformation-for: nodeTemplate + query: + type: tosca.nodes.nfv.PnfExtCp + conversions: + - query: + type: + to-name: type + to-value: + strategy: replace + from: tosca.nodes.nfv.PnfExtCp + to: org.openecomp.resource.cp.v2.extCP + - query: + properties: + layer_protocols: + to-name: ip_requirements + to-value: + strategy: replaceInList + list: + - from: ipv4 + to: + assingment_method: dhcp + ip_version: 4 + - from: ipv6 + to: + assingment_method: dhcp + ip_version: 6 + - query: + properties: + description: + to-name: description_converted + to-value: + strategy: copy \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/copyListAttribute.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/copyListAttribute.yaml new file mode 100644 index 0000000000..7e6e475c1c --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/copyListAttribute.yaml @@ -0,0 +1,17 @@ +- transformation-for: nodeTemplate + query: + type: tosca.nodes.nfv.PnfExtCp + conversions: + - query: #attribute query: this attribute does not exists + type1: + to-name: type + to-value: + strategy: replace + from: tosca.nodes.nfv.PnfExtCp + to: org.openecomp.resource.cp.v2.extCP + - query: #attribute query: this attribute exists + properties: + layer_protocols: + to-name: layer_protocols_copy + to-value: + strategy: copy \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/copyObjectAttribute.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/copyObjectAttribute.yaml new file mode 100644 index 0000000000..019d5f2e7b --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/copyObjectAttribute.yaml @@ -0,0 +1,10 @@ +- transformation-for: nodeTemplate + query: + type: tosca.nodes.nfv.PnfExtCp + conversions: + - query: + properties: + anObjectAttribute: + to-name: anObjectAttribute_copy + to-value: + strategy: copy \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/copyScalarAttribute.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/copyScalarAttribute.yaml new file mode 100644 index 0000000000..6b28f9603d --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/copyScalarAttribute.yaml @@ -0,0 +1,10 @@ +- transformation-for: nodeTemplate + query: + type: tosca.nodes.nfv.PnfExtCp + conversions: + - query: + properties: + trunk_mode: + to-name: trunk_mode_copy + to-value: + strategy: copy \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/emptyDescriptor.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/emptyDescriptor.yaml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/invalidAndValidAttributeQuery.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/invalidAndValidAttributeQuery.yaml new file mode 100644 index 0000000000..bdd7437892 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/invalidAndValidAttributeQuery.yaml @@ -0,0 +1,16 @@ +- transformation-for: nodeTemplate + query: + type: tosca.nodes.nfv.PnfExtCp + conversions: + - query: #attribute query: this attribute does not exists + type1: + to-name: type + to-value: + strategy: replace + from: tosca.nodes.nfv.PnfExtCp + to: org.openecomp.resource.cp.v2.extCP + - query: #attribute query: this attribute exists + type: + to-name: type + to-value: + strategy: copy \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/invalidAttributeQuery.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/invalidAttributeQuery.yaml new file mode 100644 index 0000000000..a1fe0ce95d --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/invalidAttributeQuery.yaml @@ -0,0 +1,11 @@ +- transformation-for: nodeTemplate + query: + type: tosca.nodes.nfv.PnfExtCp + conversions: + - query: #attribute query: this attribute does not exists + type1: + to-name: type + to-value: + strategy: replace + from: tosca.nodes.nfv.PnfExtCp + to: org.openecomp.resource.cp.v2.extCP \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/invalidBlock.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/invalidBlock.yaml new file mode 100644 index 0000000000..069096a705 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/invalidBlock.yaml @@ -0,0 +1,4 @@ +#this block, nodeTemplate1, is invalid +- transformation-for: nodeTemplate1 + query: + type: tosca.nodes.nfv.PnfExtCp \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/invalidBlockQueries.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/invalidBlockQueries.yaml new file mode 100644 index 0000000000..e18c69094e --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/invalidBlockQueries.yaml @@ -0,0 +1,10 @@ +- transformation-for: nodeTemplate + query: #this attribute value does not exists + type: tosca.nodes.nfv.PnfExtCp1 +- transformation-for: nodeTemplate + query: #this attribute does not exists + type1: tosca.nodes.nfv.PnfExtCp +- transformation-for: nodeTemplate + query: + type: + non-existent-lvl: #this attribute does not exists \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/invalidBlockQuery.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/invalidBlockQuery.yaml new file mode 100644 index 0000000000..6b612093a9 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/invalidBlockQuery.yaml @@ -0,0 +1,6 @@ +- transformation-for: nodeTemplate + query: #this type does not exists + type: tosca.nodes.nfv.PnfExtCp1 +- transformation-for: nodeTemplate + query: #this attribute does not exists + type1: tosca.nodes.nfv.PnfExtCp \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/listAsAnAttributeQuery.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/listAsAnAttributeQuery.yaml new file mode 100644 index 0000000000..f99abe7107 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/listAsAnAttributeQuery.yaml @@ -0,0 +1,16 @@ +- transformation-for: nodeTemplate + query: + type: tosca.nodes.nfv.PnfExtCp + conversions: + - query: + - list + - as + - query + - does + - not + - work + to-name: type + to-value: + strategy: replace + from: tosca.nodes.nfv.PnfExtCp + to: org.openecomp.resource.cp.v2.extCP \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/noConversions.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/noConversions.yaml new file mode 100644 index 0000000000..e11071cddc --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/noConversions.yaml @@ -0,0 +1,7 @@ +- transformation-for: nodeTemplate + query: + type: tosca.nodes.nfv.PnfExtCp + conversions: +- transformation-for: nodeTemplate + query: + type: tosca.nodes.nfv.PnfExtCp \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/pnfAndExtCpWithInput-validBlockButNoQuery.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/pnfAndExtCpWithInput-validBlockButNoQuery.yaml new file mode 100644 index 0000000000..fc70960b6a --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/pnfAndExtCpWithInput-validBlockButNoQuery.yaml @@ -0,0 +1 @@ +- transformation-for: nodeTemplate \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/queryNonExistentLvl.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/queryNonExistentLvl.yaml new file mode 100644 index 0000000000..0700c17fbc --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/queryNonExistentLvl.yaml @@ -0,0 +1,12 @@ +- transformation-for: nodeTemplate + query: + type: tosca.nodes.nfv.PnfExtCp + conversions: + - query: + type: + non-existent-lvl: #this lvl does not exists in the input file + to-name: type + to-value: + strategy: replace + from: tosca.nodes.nfv.PnfExtCp + to: org.openecomp.resource.cp.v2.extCP \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/replaceInListAttribute.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/replaceInListAttribute.yaml new file mode 100644 index 0000000000..077c95c409 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/replaceInListAttribute.yaml @@ -0,0 +1,19 @@ +- transformation-for: nodeTemplate + query: + type: tosca.nodes.nfv.PnfExtCp + conversions: + - query: + properties: + layer_protocols: + to-name: ip_requirements + to-value: + strategy: replaceInList + list: + - from: ipv4 + to: + assingment_method: dhcp + ip_version: 4 + - from: ipv6 + to: + assingment_method: dhcp + ip_version: 6 \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/replaceInListAttributeWithNonExistentAndNonExistentFromValues.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/replaceInListAttributeWithNonExistentAndNonExistentFromValues.yaml new file mode 100644 index 0000000000..3f835bd5e2 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/replaceInListAttributeWithNonExistentAndNonExistentFromValues.yaml @@ -0,0 +1,25 @@ +- transformation-for: nodeTemplate + query: + type: tosca.nodes.nfv.PnfExtCp + conversions: + - query: + properties: + layer_protocols: + to-name: ip_requirements + to-value: + strategy: replaceInList + list: + - from: ipv4 + to: + assingment_method: dhcp + ip_version: 4 + - from: ipv6 + to: anyStringValue + - from: ipv2 + to: + assingment_method: dhcp + ip_version: 2 + - from: ipv3 + to: + assingment_method: dhcp + ip_version: 3 \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/replaceInListAttributeWithNonExistentFromValues.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/replaceInListAttributeWithNonExistentFromValues.yaml new file mode 100644 index 0000000000..5fbf9d6e7e --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/replaceInListAttributeWithNonExistentFromValues.yaml @@ -0,0 +1,19 @@ +- transformation-for: nodeTemplate + query: + type: tosca.nodes.nfv.PnfExtCp + conversions: + - query: + properties: + layer_protocols: + to-name: ip_requirements + to-value: + strategy: replaceInList + list: + - from: ipv2 + to: + assingment_method: dhcp + ip_version: 2 + - from: ipv3 + to: + assingment_method: dhcp + ip_version: 3 \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/replaceScalarAttributeToList.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/replaceScalarAttributeToList.yaml new file mode 100644 index 0000000000..b4f95a9adb --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/replaceScalarAttributeToList.yaml @@ -0,0 +1,15 @@ +- transformation-for: nodeTemplate + query: + type: tosca.nodes.nfv.PnfExtCp + conversions: + - query: + properties: + trunk_mode: + to-name: trunk_mode_replaced + to-value: + strategy: replace + from: false + to: + - my + - replaced + - list \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/replaceScalarAttributeToObject.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/replaceScalarAttributeToObject.yaml new file mode 100644 index 0000000000..34a0344957 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/replaceScalarAttributeToObject.yaml @@ -0,0 +1,13 @@ +- transformation-for: nodeTemplate + query: + type: tosca.nodes.nfv.PnfExtCp + conversions: + - query: + properties: + trunk_mode: + to-name: trunk_mode_replaced + to-value: + strategy: replace + from: false + to: + myObjectReplaced: myObjectReplacedValue \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/replaceScalarAttributeToScalar.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/replaceScalarAttributeToScalar.yaml new file mode 100644 index 0000000000..6cbb08e828 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/replaceScalarAttributeToScalar.yaml @@ -0,0 +1,12 @@ +- transformation-for: nodeTemplate + query: + type: tosca.nodes.nfv.PnfExtCp + conversions: + - query: + properties: + trunk_mode: + to-name: trunk_mode_replaced + to-value: + strategy: replace + from: false + to: myReplacedValue \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/stringAsAnAttributeQuery.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/stringAsAnAttributeQuery.yaml new file mode 100644 index 0000000000..7836b97386 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfAndExtCpWithInput/transformationDescriptor/stringAsAnAttributeQuery.yaml @@ -0,0 +1,10 @@ +- transformation-for: nodeTemplate + query: + type: tosca.nodes.nfv.PnfExtCp + conversions: + - query: anyStringHere #query for a string does not work as it is meant to find a yaml attribute + to-name: type + to-value: + strategy: replace + from: tosca.nodes.nfv.PnfExtCp + to: org.openecomp.resource.cp.v2.extCP \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/expectedOutput/defaultOutput.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/expectedOutput/defaultOutput.yaml new file mode 100644 index 0000000000..d47ce66ace --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/expectedOutput/defaultOutput.yaml @@ -0,0 +1,2 @@ +topology_template: + node_templates: {} \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/expectedOutput/fullTransformation.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/expectedOutput/fullTransformation.yaml new file mode 100644 index 0000000000..4f9af4d7d2 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/expectedOutput/fullTransformation.yaml @@ -0,0 +1,36 @@ +topology_template: + inputs: + role1: + type: string + description: Role + default: leaf + layer_protocols: + type: list + description: IP protocols + entry_schema: + type: org.openecomp.datatypes.network.IpRequirements + default: + - assingment_method: dhcp + ip_version: 4 + - assingment_method: dhcp + ip_version: 6 + role: + type: string + description: Role + default: leaf + node_templates: + pnfExtCp_3: + properties: + role: {get_input: role1} + pnfExtCp_2: + properties: + ip_requirements: {get_input: layer_protocols} + role: {get_input: role} + pnfExtCp_1: + properties: + ip_requirements: + - assingment_method: dhcp + ip_version: 4 + - assingment_method: dhcp + ip_version: 6 + role: leaf \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/expectedOutput/inputQueryWithMoreThanOneAttribute.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/expectedOutput/inputQueryWithMoreThanOneAttribute.yaml new file mode 100644 index 0000000000..a55692cac9 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/expectedOutput/inputQueryWithMoreThanOneAttribute.yaml @@ -0,0 +1,21 @@ +topology_template: + inputs: + role1: + description: Role + default: leaf + role: + description: Role + default: leaf + node_templates: + pnfExtCp_3: + properties: + trunk_mode_copy: false + role: {get_input: role1} + pnfExtCp_2: + properties: + trunk_mode_copy: false + role: {get_input: role} + pnfExtCp_1: + properties: + trunk_mode_copy: false + role: leaf \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/expectedOutput/moreThanOneTransformationWithSameBlockQuery.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/expectedOutput/moreThanOneTransformationWithSameBlockQuery.yaml new file mode 100644 index 0000000000..0ae58056eb --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/expectedOutput/moreThanOneTransformationWithSameBlockQuery.yaml @@ -0,0 +1,11 @@ +topology_template: + node_templates: + pnfExtCp_3: + properties: + trunk_mode_copy: false + pnfExtCp_2: + properties: + trunk_mode_copy: false + pnfExtCp_1: + properties: + trunk_mode_copy: false \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/expectedOutput/nodeTemplateQueryWithMoreThanOneAttribute.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/expectedOutput/nodeTemplateQueryWithMoreThanOneAttribute.yaml new file mode 100644 index 0000000000..4a23ac3b2e --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/expectedOutput/nodeTemplateQueryWithMoreThanOneAttribute.yaml @@ -0,0 +1,8 @@ +topology_template: + node_templates: + pnfExtCp_3: + type: org.openecomp.resource.cp.v2.extCP + pnfExtCp_2: + type: org.openecomp.resource.cp.v2.extCP + pnfExtCp_1: + type: org.openecomp.resource.cp.v2.extCP \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/expectedOutput/wrongGetInputTransformationName.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/expectedOutput/wrongGetInputTransformationName.yaml new file mode 100644 index 0000000000..45e0bbb85e --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/expectedOutput/wrongGetInputTransformationName.yaml @@ -0,0 +1,14 @@ +topology_template: + node_templates: + pnfExtCp_3: + properties: + trunk_mode_copy: false + role: {get_input: role1} + pnfExtCp_2: + properties: + trunk_mode_copy: false + role: {get_input: role} + pnfExtCp_1: + properties: + trunk_mode_copy: false + role: leaf \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/expectedOutput/wrongTransformationBlock.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/expectedOutput/wrongTransformationBlock.yaml new file mode 100644 index 0000000000..0ae58056eb --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/expectedOutput/wrongTransformationBlock.yaml @@ -0,0 +1,11 @@ +topology_template: + node_templates: + pnfExtCp_3: + properties: + trunk_mode_copy: false + pnfExtCp_2: + properties: + trunk_mode_copy: false + pnfExtCp_1: + properties: + trunk_mode_copy: false \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/pnfWithGetInput.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/pnfWithGetInput.yaml new file mode 100644 index 0000000000..1b89d15293 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/pnfWithGetInput.yaml @@ -0,0 +1,61 @@ +tosca_definitions_version: tosca_simple_yaml_1_1 + +description: service template of a PNF + +topology_template: + inputs: + role: + type: string + description: Role + default: leaf + role1: + type: string + description: Role + default: leaf + layer_protocols: + type: list + description: IP protocols + entry_schema: + type: string + default: [ipv4, ipv6, otherProtocol] + node_templates: + notToBeConvertedNode: + type: tosca.nodes.nfv.PNF + properties: + descriptor_id: b1bb0ce7-ebca-4fa7-95ed-4840d70a2233 + function_description: an example PNF + provider: Mycompany + version: 1.0 + descriptor_invariant_id: 1111-2222-ccaa-bbdd + name: ExamplePnf + requirements: + - virtual_link: + capability: tosca.capabilities.nfv.VirtualLinkable + node: pnfExtCp_1 + pnfExtCp_1: + type: tosca.nodes.nfv.PnfExtCp + properties: + trunk_mode: false + layer_protocols: [ipv4, ipv6, otherProtocol] + role: leaf + description: External connection point to access this pnf + anObjectAttribute: + anyAttribute: anyAttributeValue + pnfExtCp_2: + type: tosca.nodes.nfv.PnfExtCp + properties: + trunk_mode: false + layer_protocols: + get_input: layer_protocols + role: {get_input: role} + description: External connection point to access this pnf + anObjectAttribute: + anyAttribute: anyAttributeValue + pnfExtCp_3: + type: tosca.nodes.nfv.PnfExtCp + properties: + trunk_mode: false + description: External connection point to access this pnf + anObjectAttribute: + anyAttribute: anyAttributeValue + role: {get_input: role1} \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/transformationDescriptor/fullTransformation.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/transformationDescriptor/fullTransformation.yaml new file mode 100644 index 0000000000..4772bfe4f9 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/transformationDescriptor/fullTransformation.yaml @@ -0,0 +1,84 @@ +- transformation-for: nodeTemplate + name: PnfExtCp transformation + description: converts any node template that has a type tosca.nodes.nfv.PnfExtCp + query: + type: tosca.nodes.nfv.PnfExtCp + conversions: + - query: + properties: + layer_protocols: + to-name: ip_requirements + to-value: + strategy: replaceInList + list: + - from: ipv4 + to: + assingment_method: dhcp + ip_version: 4 + - from: ipv6 + to: + assingment_method: dhcp + ip_version: 6 + to-get-input: ipRequirements + - query: + properties: + role: + to-name: role + to-value: + strategy: copy + to-get-input: stringTransformation +- transformation-for: getInputFunction + name: ipRequirements + description: converts IpRequirements inputs when called by a get_input TOSCA function + conversions: + - query: + type: + to-name: type + to-value: + strategy: copy + - query: + description: + to-name: description + to-value: + strategy: copy + - query: + entry_schema: + type: + to-name: type + to-value: + strategy: replace + from: string + to: org.openecomp.datatypes.network.IpRequirements + - query: + default: + to-name: default + to-value: + strategy: replaceInList + list: + - from: ipv4 + to: + assingment_method: dhcp + ip_version: 4 + - from: ipv6 + to: + assingment_method: dhcp + ip_version: 6 +- transformation-for: getInputFunction + name: stringTransformation + description: converts a string input + conversions: + - query: + type: + to-name: type + to-value: + strategy: copy + - query: + description: + to-name: description + to-value: + strategy: copy + - query: + default: + to-name: default + to-value: + strategy: copy \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/transformationDescriptor/inputQueryWithMoreThanOneAttribute.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/transformationDescriptor/inputQueryWithMoreThanOneAttribute.yaml new file mode 100644 index 0000000000..1655ca4880 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/transformationDescriptor/inputQueryWithMoreThanOneAttribute.yaml @@ -0,0 +1,39 @@ +- transformation-for: nodeTemplate + name: PnfExtCp transformation + description: converts any node template that has a type tosca.nodes.nfv.PnfExtCp + query: + type: tosca.nodes.nfv.PnfExtCp + conversions: + - query: + properties: + trunk_mode: + to-name: trunk_mode_copy + to-value: + strategy: copy + - query: + properties: + role: + to-name: role + to-value: + strategy: copy + to-get-input: stringTransformation +- transformation-for: getInputFunction + name: stringTransformation + description: converts a string input + conversions: + - query: + type: + invalid-another-attribute: #cannot have two attributes in the attribute query + to-name: type + to-value: + strategy: copy + - query: + description: + to-name: description + to-value: + strategy: copy + - query: + default: + to-name: default + to-value: + strategy: copy \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/transformationDescriptor/moreThanOneTransformationWithSameBlockQuery.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/transformationDescriptor/moreThanOneTransformationWithSameBlockQuery.yaml new file mode 100644 index 0000000000..aa05627da2 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/transformationDescriptor/moreThanOneTransformationWithSameBlockQuery.yaml @@ -0,0 +1,37 @@ +#just one of the transformations will be considered +- transformation-for: nodeTemplate #same time + name: PnfExtCp transformation + description: converts any node template that has a type tosca.nodes.nfv.PnfExtCp + query: #same block query + type: tosca.nodes.nfv.PnfExtCp + conversions: + - query: + properties: + trunk_mode: + to-name: trunk_mode_copy + to-value: + strategy: copy +- transformation-for: nodeTemplate #same time + name: PnfExtCp transformation + description: converts any node template that has a type tosca.nodes.nfv.PnfExtCp + query: #same block query + type: tosca.nodes.nfv.PnfExtCp + conversions: + - query: + properties: + role: + to-name: role + to-value: + strategy: copy +- transformation-for: nodeTemplate #same time + name: PnfExtCp transformation + description: converts any node template that has a type tosca.nodes.nfv.PnfExtCp + query: #same block query + type: tosca.nodes.nfv.PnfExtCp + conversions: + - query: + properties: + trunk_mode: + to-name: trunk_mode_copy1 + to-value: + strategy: copy \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/transformationDescriptor/nodeTemplateQueryWithMoreThanOneAttribute.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/transformationDescriptor/nodeTemplateQueryWithMoreThanOneAttribute.yaml new file mode 100644 index 0000000000..b20f48eebd --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/transformationDescriptor/nodeTemplateQueryWithMoreThanOneAttribute.yaml @@ -0,0 +1,14 @@ +- transformation-for: nodeTemplate + query: + type: tosca.nodes.nfv.PnfExtCp + properties: + anObjectAttribute: + anyAttribute: anyAttributeValue + conversions: + - query: + type: + to-name: type + to-value: + strategy: replace + from: tosca.nodes.nfv.PnfExtCp + to: org.openecomp.resource.cp.v2.extCP \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/transformationDescriptor/wrongGetInputTransformationName.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/transformationDescriptor/wrongGetInputTransformationName.yaml new file mode 100644 index 0000000000..fd5133cb91 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/transformationDescriptor/wrongGetInputTransformationName.yaml @@ -0,0 +1,39 @@ +- transformation-for: nodeTemplate + name: PnfExtCp transformation + description: converts any node template that has a type tosca.nodes.nfv.PnfExtCp + query: + type: tosca.nodes.nfv.PnfExtCp + conversions: + - query: + properties: + trunk_mode: + to-name: trunk_mode_copy + to-value: + strategy: copy + - query: + properties: + role: + to-name: role + to-value: + strategy: copy + to-get-input: stringTransformation1 +- transformation-for: getInputFunction + name: stringTransformation + description: converts a string input + conversions: + - query: + type: + invalid-another-attribute: #cannot have two attributes in the attribute query + to-name: type + to-value: + strategy: copy + - query: + description: + to-name: description + to-value: + strategy: copy + - query: + default: + to-name: default + to-value: + strategy: copy \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/transformationDescriptor/wrongTransformationBlock.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/transformationDescriptor/wrongTransformationBlock.yaml new file mode 100644 index 0000000000..0559b02642 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/pnfParseEngine/pnfWithGetInput/transformationDescriptor/wrongTransformationBlock.yaml @@ -0,0 +1,24 @@ +- transformation-for: nodeTemplate + name: PnfExtCp transformation + description: converts any node template that has a type tosca.nodes.nfv.PnfExtCp + query: + type: tosca.nodes.nfv.PnfExtCp + conversions: + - query: + properties: + trunk_mode: + to-name: trunk_mode_copy + to-value: + strategy: copy +- transformation-for: wrongBlock + name: PnfExtCp transformation + description: converts any node template that has a type tosca.nodes.nfv.PnfExtCp + query: + type: tosca.nodes.nfv.PnfExtCp + conversions: + - query: + properties: + role: + to-name: role + to-value: + strategy: copy \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/strategy/replaceStrategy.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/strategy/replaceStrategy.yaml new file mode 100644 index 0000000000..f60655c5ca --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/strategy/replaceStrategy.yaml @@ -0,0 +1,3 @@ +strategy: replace +from: tosca.nodes.nfv.PnfExtCp +to: org.openecomp.resource.cp.v2.extCP \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/strategy/strategyMissingStrategyAttribute.yaml b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/strategy/strategyMissingStrategyAttribute.yaml new file mode 100644 index 0000000000..40200cecb0 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-converter-lib/openecomp-tosca-converter-core/src/test/resources/transformation/strategy/strategyMissingStrategyAttribute.yaml @@ -0,0 +1,2 @@ +from: tosca.nodes.nfv.PnfExtCp +to: org.openecomp.resource.cp.v2.extCP \ No newline at end of file -- cgit 1.2.3-korg