summaryrefslogtreecommitdiffstats
path: root/appc-config/appc-config-params/provider/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'appc-config/appc-config-params/provider/src/test')
-rw-r--r--appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/parser/TestPropertyDefinitionNode.java131
-rw-r--r--appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/transformer/tosca/TestArtifactProcessor.java104
-rw-r--r--appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/transformer/tosca/TestGenerateArtifactObject.java265
-rw-r--r--appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/transformer/tosca/TestGenerateArtifactString.java156
-rw-r--r--appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/transformer/tosca/TestPropertyQueryString.java170
-rw-r--r--appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/transformer/tosca/TestReadArtifact.java107
-rw-r--r--appc-config/appc-config-params/provider/src/test/resources/parser/merge-param.json26
-rw-r--r--appc-config/appc-config-params/provider/src/test/resources/parser/pd.yaml75
-rw-r--r--appc-config/appc-config-params/provider/src/test/resources/parser/request-param.json27
-rw-r--r--appc-config/appc-config-params/provider/src/test/resources/parser/system-param.json25
-rw-r--r--appc-config/appc-config-params/provider/src/test/resources/tosca/ExamplePropertyDefinition.yml21
-rw-r--r--appc-config/appc-config-params/provider/src/test/resources/tosca/ExamplePropertyDefinition2.yml21
-rw-r--r--appc-config/appc-config-params/provider/src/test/resources/tosca/ExamplePropertyDefinition3.yml21
-rw-r--r--appc-config/appc-config-params/provider/src/test/resources/tosca/ExamplePropertyDefinition4.yml21
-rw-r--r--appc-config/appc-config-params/provider/src/test/resources/tosca/ExpectedTosca.yml75
-rw-r--r--appc-config/appc-config-params/provider/src/test/resources/tosca/ReadArtifactNegetiveInputTosca.yml47
-rw-r--r--appc-config/appc-config-params/provider/src/test/resources/tosca/ReadArtifactPositiveInputTosca.yml47
17 files changed, 1339 insertions, 0 deletions
diff --git a/appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/parser/TestPropertyDefinitionNode.java b/appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/parser/TestPropertyDefinitionNode.java
new file mode 100644
index 000000000..81f4a6685
--- /dev/null
+++ b/appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/parser/TestPropertyDefinitionNode.java
@@ -0,0 +1,131 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP : APPC
+ * ================================================================================
+ * Copyright (C) 2017 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.
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.sdnc.config.params.parser;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.File;
+import java.nio.charset.Charset;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.nio.file.attribute.BasicFileAttributes;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.commons.io.IOUtils;
+import org.junit.Test;
+import org.junit.Ignore;
+import org.openecomp.sdnc.config.params.ParamsHandlerConstant;
+import org.openecomp.sdnc.config.params.data.PropertyDefinition;
+import org.openecomp.sdnc.config.params.parser.PropertyDefinitionNode;
+import org.openecomp.sdnc.config.params.transformer.ArtificatTransformer;
+
+import org.openecomp.sdnc.sli.SvcLogicContext;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+public class TestPropertyDefinitionNode {
+
+@Ignore
+ public void testProcessMissingParamKeys() throws Exception {
+ PropertyDefinitionNode propertyDefinitionNode = new PropertyDefinitionNode();
+ Map<String, String> inParams = new HashMap<String, String>();
+ inParams.put(ParamsHandlerConstant.INPUT_PARAM_RESPONSE_PRIFIX, "test");
+
+ String yamlData = IOUtils.toString(TestPropertyDefinitionNode.class.getClassLoader().getResourceAsStream("parser/pd.yaml"), Charset.defaultCharset());
+ inParams.put(ParamsHandlerConstant.INPUT_PARAM_PD_CONTENT, yamlData);
+
+ String jsonData = IOUtils.toString(TestPropertyDefinitionNode.class.getClassLoader().getResourceAsStream("parser/request-param.json"), Charset.defaultCharset());
+ inParams.put(ParamsHandlerConstant.INPUT_PARAM_JSON_DATA, jsonData);
+
+ SvcLogicContext ctx = new SvcLogicContext();
+ propertyDefinitionNode.processMissingParamKeys(inParams, ctx);
+ assertEquals(ctx.getAttribute("test."+ParamsHandlerConstant.OUTPUT_PARAM_STATUS), ParamsHandlerConstant.OUTPUT_STATUS_SUCCESS);
+
+ }
+
+ public void testProcessExternalSystemParamKeys() throws Exception {
+ PropertyDefinitionNode propertyDefinitionNode = new PropertyDefinitionNode();
+ Map<String, String> inParams = new HashMap<String, String>();
+ inParams.put(ParamsHandlerConstant.INPUT_PARAM_RESPONSE_PRIFIX, "test");
+
+ String yamlData = IOUtils.toString(TestPropertyDefinitionNode.class.getClassLoader().getResourceAsStream("parser/pd.yaml"), Charset.defaultCharset());
+ inParams.put(ParamsHandlerConstant.INPUT_PARAM_PD_CONTENT, yamlData);
+
+ String jsonData = IOUtils.toString(TestPropertyDefinitionNode.class.getClassLoader().getResourceAsStream("parser/request-param.json"), Charset.defaultCharset());
+ inParams.put(ParamsHandlerConstant.INPUT_PARAM_JSON_DATA, jsonData);
+
+ inParams.put(ParamsHandlerConstant.INPUT_PARAM_SYSTEM_NAME, "INSTAR");
+
+ SvcLogicContext ctx = new SvcLogicContext();
+ propertyDefinitionNode.processExternalSystemParamKeys(inParams, ctx);
+ assertEquals(ctx.getAttribute("test."+ParamsHandlerConstant.OUTPUT_PARAM_STATUS), ParamsHandlerConstant.OUTPUT_STATUS_SUCCESS);
+
+ System.out.println("Result: " + ctx.getAttributeKeySet());
+ System.out.println("INSTAR.keys : " + ctx.getAttribute("INSTAR.keys"));
+ System.out.println("INSTAR.LOCAL_CORE_ALT_IP_ADDR.request-logic : " + ctx.getAttribute("INSTAR.LOCAL_ACCESS_IP_ADDR"));
+ System.out.println("INSTAR.LOCAL_CORE_ALT_IP_ADDR.request-logic : " + ctx.getAttribute("INSTAR.LOCAL_CORE_ALT_IP_ADDR"));
+
+ }
+
+ public void mergeJsonData() throws Exception {
+ PropertyDefinitionNode propertyDefinitionNode = new PropertyDefinitionNode();
+ Map<String, String> inParams = new HashMap<String, String>();
+ inParams.put(ParamsHandlerConstant.INPUT_PARAM_RESPONSE_PRIFIX, "test");
+
+ String jsonData = IOUtils.toString(TestPropertyDefinitionNode.class.getClassLoader().getResourceAsStream("parser/request-param.json"), Charset.defaultCharset());
+ inParams.put(ParamsHandlerConstant.INPUT_PARAM_JSON_DATA, jsonData);
+
+ String mergeJsonData = IOUtils.toString(TestPropertyDefinitionNode.class.getClassLoader().getResourceAsStream("parser/merge-param.json"), Charset.defaultCharset());
+ inParams.put(ParamsHandlerConstant.INPUT_PARAM_MERGE__JSON_DATA, mergeJsonData);
+
+ SvcLogicContext ctx = new SvcLogicContext();
+ propertyDefinitionNode.mergeJsonData(inParams, ctx);
+ assertEquals(ctx.getAttribute("test."+ParamsHandlerConstant.OUTPUT_PARAM_STATUS), ParamsHandlerConstant.OUTPUT_STATUS_SUCCESS);
+
+ System.out.println("Result: " + ctx.getAttributeKeySet());
+ System.out.println("Merged Value : " + ctx.getAttribute("test." +ParamsHandlerConstant.OUTPUT_PARAM_CONFIGURATION_PARAMETER) );
+
+
+ }
+
+// @Test
+ public void testArtificatTransformer() throws Exception {
+ ArtificatTransformer transformer = new ArtificatTransformer();
+ String yamlData = IOUtils.toString(TestPropertyDefinitionNode.class.getClassLoader().getResourceAsStream("parser/pd.yaml"), Charset.defaultCharset());
+
+ PropertyDefinition propertyDefinition = transformer.convertYAMLToPD(yamlData);
+
+ // String json = transformer.transformYamlToJson(yamlData);
+ // System.out.println("TestPropertyDefinitionNode.testArtificatTransformer()" + json);
+ String yaml = transformer.convertPDToYaml(propertyDefinition);
+ System.out.println("TestPropertyDefinitionNode.testArtificatTransformer():\n" + yaml);
+
+ }
+
+
+
+
+}
diff --git a/appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/transformer/tosca/TestArtifactProcessor.java b/appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/transformer/tosca/TestArtifactProcessor.java
new file mode 100644
index 000000000..5a8930fa7
--- /dev/null
+++ b/appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/transformer/tosca/TestArtifactProcessor.java
@@ -0,0 +1,104 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP : APPC
+ * ================================================================================
+ * Copyright (C) 2017 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.
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.sdnc.config.params.transformer.tosca;
+
+import org.junit.Assert;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
+import org.openecomp.sdnc.config.params.transformer.tosca.exceptions.ArtifactProcessorException;
+
+import java.io.*;
+
+public class TestArtifactProcessor{
+ @Rule
+ public TemporaryFolder temporaryFolder = new TemporaryFolder();
+
+// @Test
+ public void testArtifactProcessor() throws IOException, ArtifactProcessorException {
+
+ ArtifactProcessor arp = ArtifactProcessorFactory.getArtifactProcessor();
+
+ String pdString = getFileContent("tosca/ExamplePropertyDefinition.yml");
+ OutputStream outstream=null;
+
+ File tempFile = temporaryFolder.newFile("TestTosca.yml");
+ outstream = new FileOutputStream(tempFile);
+ arp.generateArtifact(pdString,outstream);
+ outstream.flush();
+ outstream.close();
+
+ String expectedTosca = getFileContent("tosca/ExpectedTosca.yml");
+ String toscaString = getFileContent(tempFile);
+ Assert.assertEquals(expectedTosca,toscaString);
+ }
+
+ // @Test
+ public void testArtifactProcessorWithStringOutput() throws IOException, ArtifactProcessorException {
+
+ ArtifactProcessor arp = ArtifactProcessorFactory.getArtifactProcessor();
+
+ String pdString = getFileContent("tosca/ExamplePropertyDefinition.yml");
+ OutputStream outstream=null;
+
+ outstream = new ByteArrayOutputStream();
+ arp.generateArtifact(pdString,outstream);
+ outstream.flush();
+ outstream.close();
+
+ String expectedTosca = getFileContent("tosca/ExpectedTosca.yml");
+ String toscaString = outstream.toString();
+ Assert.assertEquals(expectedTosca,toscaString);
+ }
+
+ private String getFileContent(String fileName) throws IOException{
+ ClassLoader classLoader = new TestArtifactProcessor().getClass().getClassLoader();
+ InputStream is = new FileInputStream(classLoader.getResource(fileName).getFile());
+ BufferedReader buf = new BufferedReader(new InputStreamReader(is));
+ String line = buf.readLine();
+ StringBuilder sb = new StringBuilder();
+
+ while (line != null) {
+ sb.append(line).append("\n");
+ line = buf.readLine();
+ }
+ String fileString = sb.toString();
+ is.close();
+ return fileString;
+ }
+
+ private String getFileContent(File file) throws IOException{
+ InputStream is = new FileInputStream(file);
+ BufferedReader buf = new BufferedReader(new InputStreamReader(is));
+ String line = buf.readLine();
+ StringBuilder sb = new StringBuilder();
+
+ while (line != null) {
+ sb.append(line).append("\n");
+ line = buf.readLine();
+ }
+ String fileString = sb.toString();
+ is.close();
+ return fileString;
+ }
+}
diff --git a/appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/transformer/tosca/TestGenerateArtifactObject.java b/appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/transformer/tosca/TestGenerateArtifactObject.java
new file mode 100644
index 000000000..8fe8dc73a
--- /dev/null
+++ b/appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/transformer/tosca/TestGenerateArtifactObject.java
@@ -0,0 +1,265 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP : APPC
+ * ================================================================================
+ * Copyright (C) 2017 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.
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.sdnc.config.params.transformer.tosca;
+
+import org.junit.Assert;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
+import org.openecomp.sdnc.config.params.data.Parameter;
+import org.openecomp.sdnc.config.params.data.PropertyDefinition;
+import org.openecomp.sdnc.config.params.data.RequestKey;
+import org.openecomp.sdnc.config.params.data.ResponseKey;
+import org.openecomp.sdnc.config.params.transformer.tosca.exceptions.ArtifactProcessorException;
+
+import java.io.*;
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ * Created by pranavdi on 3/15/2017.
+ */
+public class TestGenerateArtifactObject
+{
+ @Rule
+ public TemporaryFolder temporaryFolder = new TemporaryFolder();
+
+ @Test
+ public void testObjectArtifactProcessor() throws IOException, ArtifactProcessorException {
+
+ String expectedTosca="node_types:\n" +
+ " VNF:\n" +
+ " derived_from: org.openecomp.genericvnf\n" +
+ " version: V1\n" +
+ " description: ''\n" +
+ " properties:\n" +
+ " LOCAL_ACCESS_IP_ADDR:\n" +
+ " type: string\n" +
+ " required: false\n" +
+ " default: 192.168.30.1\n" +
+ " status: SUPPORTED\n" +
+ " LOCAL_CORE_ALT_IP_ADDR:\n" +
+ " type: String\n" +
+ " required: false\n" +
+ " default: fd00:f4d5:ea06:1:0:110:254\n" +
+ " status: SUPPORTED\n" +
+ "topology_template:\n" +
+ " node_templates:\n" +
+ " VNF_Template:\n" +
+ " type: VNF\n" +
+ " properties:\n" +
+ " LOCAL_ACCESS_IP_ADDR: <rule-type = myRule1> <response-keys = > <source-system = INSTAR> <request-keys = class-type:interface-ip-address , address_fqdn:someVal , address_type:v4>\n" +
+ " LOCAL_CORE_ALT_IP_ADDR: <rule-type = myRule2> <response-keys = name1:value1:field1> <source-system = INSTAR> <request-keys = >\n";
+ //Create object
+ PropertyDefinition pd = new PropertyDefinition();
+ pd.setKind("VNF");
+ pd.setVersion("V1");
+ pd.setParameters(createParameters());
+
+ //Call ArtifactProcessor
+ OutputStream outstream=null;
+
+ File toscaFile =temporaryFolder.newFile("TestTosca.yml");
+ outstream = new FileOutputStream(toscaFile);
+ ArtifactProcessorImpl arp = new ArtifactProcessorImpl();
+ arp.generateArtifact(pd,outstream);
+ outstream.flush();
+ outstream.close();
+
+ String toscaString = getFileContent(toscaFile);
+ Assert.assertEquals(expectedTosca,toscaString);
+
+ }
+
+// @Test
+ public void testPDpropertiesSetNull() throws IOException, ArtifactProcessorException {
+ String expectedTosca = "node_types:\n" +
+ " PropertyDefinition:\n" +
+ " derived_from: org.openecomp.genericvnf\n" +
+ " version: V1\n" +
+ " description: ''\n" +
+ "topology_template:\n" +
+ " node_templates:\n" +
+ " PropertyDefinition_Template:\n" +
+ " type: PropertyDefinition\n";
+ //Create object
+ PropertyDefinition pd = new PropertyDefinition();
+ pd.setKind("PropertyDefinition");
+ pd.setVersion("V1");
+// pd.setParameters(createParameters());
+
+ //Call ArtifactProcessor
+ OutputStream outstream=null;
+
+ File toscaFile =temporaryFolder.newFile("TestTosca.yml");
+ outstream = new FileOutputStream(toscaFile);
+
+ ArtifactProcessorImpl arp = new ArtifactProcessorImpl();
+ arp.generateArtifact(pd,outstream);
+ outstream.flush();
+ outstream.close();
+
+ String toscaString = getFileContent(toscaFile);
+ Assert.assertEquals(expectedTosca,toscaString);
+ }
+
+ // @Test
+ public void testArtifactGeneratorInvalidStream() throws IOException {
+ String expectedMsg = "java.io.IOException: Stream Closed";
+ PropertyDefinition pd = new PropertyDefinition();
+ pd.setKind("VNF");
+ pd.setVersion("V1");
+ pd.setParameters(createParameters());
+
+ //Call ArtifactProcessor
+ OutputStream outstream=null;
+ try {
+ File toscaFile =temporaryFolder.newFile("TestTosca.yml");
+ outstream = new FileOutputStream(toscaFile);
+ outstream.close();
+ ArtifactProcessorImpl arp = new ArtifactProcessorImpl();
+ arp.generateArtifact(pd,outstream);
+ Assert.fail();
+ }
+ catch (ArtifactProcessorException e)
+ {
+ Assert.assertEquals(expectedMsg,e.getMessage());
+ }
+ }
+
+ private List<Parameter> createParameters()
+ {
+ //Create single Parameter object 1
+ Parameter singleParameter1 = new Parameter();
+ singleParameter1.setName("LOCAL_ACCESS_IP_ADDR");
+// singleParameter1.setList(false);
+ singleParameter1.setRequired(false);
+ singleParameter1.setSource("INSTAR");
+ singleParameter1.setDefaultValue("192.168.30.1");
+ singleParameter1.setRuleType("myRule1");
+ singleParameter1.setRequestKeys(createRequestKeys());
+
+ //Create single Parameter object 2
+ Parameter singleParameter2 = new Parameter();
+ singleParameter2.setName("LOCAL_CORE_ALT_IP_ADDR");
+ singleParameter2.setType("String");
+// singleParameter2.setList(false);
+ singleParameter2.setRequired(false);
+ singleParameter2.setSource("INSTAR");
+ singleParameter2.setDefaultValue("fd00:f4d5:ea06:1:0:110:254");
+ singleParameter2.setRuleType("myRule2");
+ singleParameter2.setResponseKeys(createResponseKeys());
+
+
+ //Add the Parameter objects to the List
+ List<Parameter> parameterList = new ArrayList<Parameter>();
+ parameterList.add(singleParameter1);
+ parameterList.add(singleParameter2);
+ return parameterList;
+ }
+
+ private List<RequestKey> createRequestKeys()
+ {
+ //Create RequestKey object 1
+ RequestKey requestKey1 = new RequestKey();
+ requestKey1.setKeyName("class-type");
+ requestKey1.setKeyValue("interface-ip-address");
+
+ //Create RequestKey object 2
+ RequestKey requestKey2 = new RequestKey();
+ requestKey2.setKeyName("address_fqdn");
+ requestKey2.setKeyValue("someVal");
+
+ //Create RequestKey object 3
+ RequestKey requestKey3 = new RequestKey();
+ requestKey3.setKeyName("address_type");
+ requestKey3.setKeyValue("v4");
+
+ //Add the RequestKey Objects to the List
+ List<RequestKey> requestKeyList = new ArrayList<RequestKey>();
+ requestKeyList.add(requestKey1);
+ requestKeyList.add(requestKey2);
+ requestKeyList.add(requestKey3);
+ return requestKeyList;
+ }
+
+ private List<ResponseKey> createResponseKeys()
+ {
+ //Create RequestKey object 1
+ ResponseKey responseKey1 = new ResponseKey();
+
+ responseKey1.setUniqueKeyName("name1");
+ responseKey1.setUniqueKeyValue("value1");
+ responseKey1.setFieldKeyName("field1");
+
+ //Add the RequestKey Objects to the List
+ List<ResponseKey> responseKeyList = new ArrayList<ResponseKey>();
+ responseKeyList.add(responseKey1);
+
+ return responseKeyList;
+ }
+
+ private Parameter createParameter()
+ {
+ Parameter singleParameter1 = new Parameter();
+ singleParameter1.setName("LOCAL_ACCESS_IP_ADDR");
+ //singleParameter1.setList(false);
+ singleParameter1.setRequired(false);
+ singleParameter1.setSource("INSTAR");
+ singleParameter1.setDefaultValue("192.168.30.1");
+ singleParameter1.setRequestKeys(createRequestKeys());
+ singleParameter1.setResponseKeys(createResponseKeys());
+ return singleParameter1;
+ }
+
+ //@Test
+ public void testPDnull() throws IOException, ArtifactProcessorException {
+ PropertyDefinition pd = null;
+ OutputStream outstream=null;
+
+ outstream = new FileOutputStream(".\\TestTosca.yml");
+ ArtifactProcessorImpl arp = new ArtifactProcessorImpl();
+ arp.generateArtifact(pd,outstream);
+ outstream.flush();
+ outstream.close();
+
+
+ }
+
+ private String getFileContent(File file) throws IOException
+ {
+ InputStream is = new FileInputStream(file);
+ BufferedReader buf = new BufferedReader(new InputStreamReader(is));
+ String line = buf.readLine();
+ StringBuilder sb = new StringBuilder();
+
+ while (line != null) {
+ sb.append(line).append("\n");
+ line = buf.readLine();
+ }
+ String fileString = sb.toString();
+ is.close();
+ return fileString;
+ }
+}
diff --git a/appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/transformer/tosca/TestGenerateArtifactString.java b/appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/transformer/tosca/TestGenerateArtifactString.java
new file mode 100644
index 000000000..51c458cff
--- /dev/null
+++ b/appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/transformer/tosca/TestGenerateArtifactString.java
@@ -0,0 +1,156 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP : APPC
+ * ================================================================================
+ * Copyright (C) 2017 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.
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.sdnc.config.params.transformer.tosca;
+
+import org.junit.Assert;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
+import org.openecomp.sdnc.config.params.transformer.tosca.exceptions.ArtifactProcessorException;
+
+import java.io.*;
+import java.net.URL;
+
+/**
+ * Created by pranavdi on 3/21/2017.
+ */
+public class TestGenerateArtifactString{
+
+ @Rule
+ public TemporaryFolder temporaryFolder = new TemporaryFolder();
+
+// @Test
+ public void testStringArtifactGenerator() throws IOException, ArtifactProcessorException {
+
+ String pdString = getFileContent("tosca/ExamplePropertyDefinition.yml");
+ OutputStream outstream=null;
+
+ File tempFile = temporaryFolder.newFile("TestTosca.yml");
+ outstream = new FileOutputStream(tempFile);
+ ArtifactProcessorImpl arp = new ArtifactProcessorImpl();
+ arp.generateArtifact(pdString,outstream);
+ outstream.flush();
+ outstream.close();
+
+ String expectedTosca = getFileContent("tosca/ExpectedTosca.yml");
+ String toscaString = getFileContent(tempFile);
+ Assert.assertEquals(expectedTosca,toscaString);
+
+ }
+
+ // @Test
+ public void testArtifactGeneratorWithParameterNameBlank() throws IOException, ArtifactProcessorException {
+
+ String pdString = getFileContent("tosca/ExamplePropertyDefinition2.yml");
+ OutputStream outstream=null;
+ String expectedMsg ="Parameter name is empty,null or contains whitespace";
+
+ File tempFile = temporaryFolder.newFile("TestTosca.yml");
+ outstream = new FileOutputStream(tempFile);
+ ArtifactProcessorImpl arp = new ArtifactProcessorImpl();
+ try {
+ arp.generateArtifact(pdString, outstream);
+ }
+ catch (ArtifactProcessorException e)
+ {
+ Assert.assertEquals(expectedMsg,e.getMessage());
+ }
+ outstream.flush();
+ outstream.close();
+ }
+
+ // @Test
+ public void testArtifactGeneratorWithParameterNameNull() throws IOException, ArtifactProcessorException {
+
+ String pdString = getFileContent("tosca/ExamplePropertyDefinition3.yml");
+ OutputStream outstream=null;
+ String expectedMsg ="Parameter name is empty,null or contains whitespace";
+
+ File tempFile = temporaryFolder.newFile("TestTosca.yml");
+ outstream = new FileOutputStream(tempFile);
+ ArtifactProcessorImpl arp = new ArtifactProcessorImpl();
+ try {
+ arp.generateArtifact(pdString, outstream);
+ }
+ catch (ArtifactProcessorException e)
+ {
+ Assert.assertEquals(expectedMsg,e.getMessage());
+ }
+ outstream.flush();
+ outstream.close();
+ }
+
+ // @Test
+ public void testArtifactGeneratorWithKindNull() throws IOException, ArtifactProcessorException {
+
+ String pdString = getFileContent("tosca/ExamplePropertyDefinition4.yml");
+ OutputStream outstream=null;
+ String expectedMsg ="Kind in PropertyDefinition is blank or null";
+
+ File tempFile = temporaryFolder.newFile("TestTosca.yml");
+ outstream = new FileOutputStream(tempFile);
+ ArtifactProcessorImpl arp = new ArtifactProcessorImpl();
+ try {
+ arp.generateArtifact(pdString, outstream);
+ }
+ catch (ArtifactProcessorException e)
+ {
+ Assert.assertEquals(expectedMsg,e.getMessage());
+ }
+ outstream.flush();
+ outstream.close();
+ }
+
+ private String getFileContent(String fileName) throws IOException
+ {
+ ClassLoader classLoader = new TestGenerateArtifactString().getClass().getClassLoader();
+ InputStream is = new FileInputStream(classLoader.getResource(fileName).getFile());
+ BufferedReader buf = new BufferedReader(new InputStreamReader(is));
+ String line = buf.readLine();
+ StringBuilder sb = new StringBuilder();
+
+ while (line != null) {
+ sb.append(line).append("\n");
+ line = buf.readLine();
+ }
+ String fileString = sb.toString();
+ is.close();
+ return fileString;
+ }
+
+ private String getFileContent(File file) throws IOException
+ {
+ InputStream is = new FileInputStream(file);
+ BufferedReader buf = new BufferedReader(new InputStreamReader(is));
+ String line = buf.readLine();
+ StringBuilder sb = new StringBuilder();
+
+ while (line != null) {
+ sb.append(line).append("\n");
+ line = buf.readLine();
+ }
+ String fileString = sb.toString();
+ is.close();
+ return fileString;
+ }
+}
diff --git a/appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/transformer/tosca/TestPropertyQueryString.java b/appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/transformer/tosca/TestPropertyQueryString.java
new file mode 100644
index 000000000..438884350
--- /dev/null
+++ b/appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/transformer/tosca/TestPropertyQueryString.java
@@ -0,0 +1,170 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP : APPC
+ * ================================================================================
+ * Copyright (C) 2017 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.
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.sdnc.config.params.transformer.tosca;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openecomp.sdnc.config.params.data.RequestKey;
+import org.openecomp.sdnc.config.params.data.ResponseKey;
+
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+public class TestPropertyQueryString
+{
+ // @Test
+ public void testBuildResponseKeys()
+ {
+ ArtifactProcessorImpl arp = new ArtifactProcessorImpl();
+ String properties= arp.buildResponseKeyExpression(createResponseKeys());
+ Assert.assertEquals("<response-keys = address-fqdn:000000000000000000000:ipaddress-v4 , key2:value2:field2>",properties);
+ }
+
+ //@Test
+ public void testBuildRequestKeys()
+ {
+ ArtifactProcessorImpl arp = new ArtifactProcessorImpl();
+ String properties= arp.buildRequestKeyExpression(createRequestKeys());
+ Assert.assertEquals("<request-keys = class-type:interface-ip-address , address_fqdn:m001dbj001p1n004v006 , address_type:v4>",properties);
+ }
+
+ //@Test
+ public void testEncoding()
+ {
+ ArtifactProcessorImpl arp = new ArtifactProcessorImpl();
+
+ String expected1 = "&lt;class-type&gt;";
+ String encoded1 = arp.encode("<class-type>");
+ Assert.assertEquals(expected1,encoded1);
+
+ String expected2 = "&lt;&lt;&lt;metallica&lt;&gt;iron_maiden&gt;&gt;&gt;";
+ String encoded2 = arp.encode("<<<metallica<>iron_maiden>>>");
+ Assert.assertEquals(expected2,encoded2);
+
+ String expected3 = "band-list&colon;metallica&comma;ironmaiden";
+ String encoded3 = arp.encode("band-list:metallica,ironmaiden");
+ Assert.assertEquals(expected3,encoded3);
+
+ String expected4 = "motorhead&equals;lemmy";
+ String encoded4 = arp.encode("motorhead=lemmy");
+ Assert.assertEquals(expected4,encoded4);
+
+ String expected5 = "DreamTheater";
+ String encoded5 = arp.encode(" DreamTheater ");
+ Assert.assertEquals(expected5,encoded5);
+ }
+
+ //@Test
+ public void testBuildRuleType()
+ {
+ ArtifactProcessorImpl arp = new ArtifactProcessorImpl();
+ String input = "IPV4";
+ String expected = "<rule-type = IPV4>";
+ Assert.assertEquals(expected,arp.buildRuleType(input));
+ }
+
+ // @Test
+ public void testRuleTypeSetNull()
+ {
+ ArtifactProcessorImpl arp = new ArtifactProcessorImpl();
+ String expected = "<rule-type = >";
+ Assert.assertEquals(expected,arp.buildRuleType(null));
+ }
+
+ //@Test
+ public void testBuildRequestKeysWithKeyNull()
+ {
+ ArtifactProcessorImpl arp = new ArtifactProcessorImpl();
+ List<RequestKey> requestKeyList = new ArrayList<RequestKey>();
+ requestKeyList.add(null);
+ String properties= arp.buildRequestKeyExpression(requestKeyList);
+ Assert.assertEquals("<request-keys = >",properties);
+ }
+
+ //@Test
+ public void testBuildResponseKeysWithKeyNull()
+ {
+ ArtifactProcessorImpl arp = new ArtifactProcessorImpl();
+ List<ResponseKey> responseKeyList = new ArrayList<ResponseKey>();
+ responseKeyList.add(null);
+ String properties= arp.buildResponseKeyExpression(responseKeyList);
+ Assert.assertEquals("<response-keys = >",properties);
+ }
+
+ //@Test
+ public void testBuildSourceSystem()
+ {
+ ArtifactProcessorImpl arp = new ArtifactProcessorImpl();
+ Assert.assertEquals("<source-system = INSTAR>",arp.buildSourceSystem("INSTAR"));
+ }
+ //@Test
+ private List<RequestKey> createRequestKeys()
+ {
+ //Create RequestKey object 1
+ RequestKey requestKey1 = new RequestKey();
+ requestKey1.setKeyName("class-type");
+ requestKey1.setKeyValue("interface-ip-address");
+
+ //Create RequestKey object 2
+ RequestKey requestKey2 = new RequestKey();
+ requestKey2.setKeyName("address_fqdn");
+ requestKey2.setKeyValue("00000000000000");
+
+ //Create RequestKey object 3
+ RequestKey requestKey3 = new RequestKey();
+ requestKey3.setKeyName("address_type");
+ requestKey3.setKeyValue("v4");
+
+ //Add the RequestKey Objects to the List
+ List<RequestKey> requestKeyList = new ArrayList<RequestKey>();
+ requestKeyList.add(requestKey1);
+ requestKeyList.add(requestKey2);
+ requestKeyList.add(requestKey3);
+ return requestKeyList;
+ }
+ //@Test
+ private List<ResponseKey> createResponseKeys()
+ {
+ //Create RequestKey object 1
+ ResponseKey responseKey1 = new ResponseKey();
+
+ responseKey1.setUniqueKeyName("address-fqdn");
+ responseKey1.setUniqueKeyValue("0000000000000");
+ responseKey1.setFieldKeyName("ipaddress-v4");
+
+ ResponseKey responseKey2 = new ResponseKey();
+ responseKey2.setUniqueKeyName("key2");
+ responseKey2.setUniqueKeyValue("value2");
+ responseKey2.setFieldKeyName("field2");
+
+
+ //Add the RequestKey Objects to the List
+ List<ResponseKey> responseKeyList = new ArrayList<ResponseKey>();
+ responseKeyList.add(responseKey1);
+ responseKeyList.add(responseKey2);
+
+ return responseKeyList;
+ }
+}
diff --git a/appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/transformer/tosca/TestReadArtifact.java b/appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/transformer/tosca/TestReadArtifact.java
new file mode 100644
index 000000000..654b4c1b3
--- /dev/null
+++ b/appc-config/appc-config-params/provider/src/test/java/org/openecomp/sdnc/config/params/transformer/tosca/TestReadArtifact.java
@@ -0,0 +1,107 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP : APPC
+ * ================================================================================
+ * Copyright (C) 2017 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.
+ *
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.sdnc.config.params.transformer.tosca;
+
+//import static org.junit.Assert;
+import org.junit.Assert;
+import org.junit.Test;
+import org.openecomp.sdnc.config.params.data.PropertyDefinition;
+import org.openecomp.sdnc.config.params.transformer.tosca.exceptions.ArtifactProcessorException;
+
+import java.io.*;
+
+
+/**
+ * @author thakkerp
+ * @since March 23,2017
+ */
+public class TestReadArtifact {
+// @Test
+ public void testReadArtifactPositive() throws ArtifactProcessorException, IOException {
+
+ String toscaArtifact = getFileContent("tosca/ReadArtifactPositiveInputTosca.yml");
+ ArtifactProcessorImpl artifact = new ArtifactProcessorImpl();
+ PropertyDefinition ouptPD = artifact.readArtifact(toscaArtifact);
+ Assert.assertEquals(ouptPD.getKind(),"Property Definition");
+ Assert.assertEquals(ouptPD.getVersion(),"V1");
+
+ Assert.assertEquals(ouptPD.getParameters().get(0).getDefaultValue(),"0.0.0.0");
+ Assert.assertEquals(ouptPD.getParameters().get(0).getName(),"abc");
+ Assert.assertEquals(ouptPD.getParameters().get(0).getSource(),"INSTAR");
+ Assert.assertEquals(ouptPD.getParameters().get(0).getRuleType(),"interface-ip-address");
+ Assert.assertEquals(ouptPD.getParameters().get(0).getDescription(),"param_desc");
+ Assert.assertEquals(ouptPD.getParameters().get(0).getType(),"param1_type");
+ Assert.assertEquals(ouptPD.getParameters().get(1).getRequestKeys().get(0).getKeyName(),"address_fqdn");
+ Assert.assertEquals(ouptPD.getParameters().get(1).getRequestKeys().get(0).getKeyValue(),"000000000");
+ Assert.assertEquals(ouptPD.getParameters().get(1).getRequestKeys().get(0).getKeyName(),"address_fqdn");
+ Assert.assertEquals(ouptPD.getParameters().get(1).getRequestKeys().get(0).getKeyValue(),"000000000");
+ Assert.assertEquals(ouptPD.getParameters().get(0).getResponseKeys().get(0).getUniqueKeyName(),"address-fqdn");
+ //Assert.assertEquals(ouptPD.getParameters().get(0).getResponseKeys().get(0).getUniqueKeyValue(),"000000000");
+ Assert.assertEquals(ouptPD.getParameters().get(0).getResponseKeys().get(0).getFieldKeyName(),"ipaddress-v4");
+
+ Assert.assertEquals(ouptPD.getParameters().get(1).getDefaultValue(),"0:0:0:0:0:0:0:0");
+ Assert.assertEquals(ouptPD.getParameters().get(1).getName(),"param 2");
+ Assert.assertEquals(ouptPD.getParameters().get(1).getSource(),"INSTAR");
+ Assert.assertEquals(ouptPD.getParameters().get(1).getRuleType(),"interface-ip-address");
+ Assert.assertEquals(ouptPD.getParameters().get(1).getDescription(),"param2");
+ Assert.assertEquals(ouptPD.getParameters().get(1).getType(),"param2 type");
+ Assert.assertEquals(ouptPD.getParameters().get(1).getRequestKeys().get(0).getKeyName(),"address_fqdn");
+ Assert.assertEquals(ouptPD.getParameters().get(1).getRequestKeys().get(0).getKeyValue(),"000000000");
+ Assert.assertEquals(ouptPD.getParameters().get(1).getRequestKeys().get(1).getKeyName(),"address_type");
+ Assert.assertEquals(ouptPD.getParameters().get(1).getRequestKeys().get(1).getKeyValue(),"v4");
+ Assert.assertEquals(ouptPD.getParameters().get(1).getResponseKeys().get(0).getUniqueKeyName(),"address-fqdn");
+ Assert.assertEquals(ouptPD.getParameters().get(1).getResponseKeys().get(0).getUniqueKeyValue(),"000000000");
+ Assert.assertEquals(ouptPD.getParameters().get(1).getResponseKeys().get(0).getFieldKeyName(),"ipaddress-v4");
+
+ }
+//@Test
+ public void testReadArtifactNegetive() throws IOException {
+
+ String toscaArtifact = getFileContent("tosca/ReadArtifactNegetiveInputTosca.yml");
+ ArtifactProcessorImpl artifact = new ArtifactProcessorImpl();
+ try {
+ PropertyDefinition ouptPD = artifact.readArtifact(toscaArtifact);
+ } catch (ArtifactProcessorException e) {
+ Assert.assertNotNull(e);
+ Assert.assertEquals(e.getMessage(),"Invalid input found <> source1 <reqk1:reqv1 , reqk2:reqv2>");
+ }
+ }
+
+ private String getFileContent(String fileName) throws IOException
+ {
+ ClassLoader classLoader = new TestReadArtifact().getClass().getClassLoader();
+ InputStream is = new FileInputStream(classLoader.getResource(fileName).getFile());
+ BufferedReader buf = new BufferedReader(new InputStreamReader(is));
+ String line = buf.readLine();
+ StringBuilder sb = new StringBuilder();
+
+ while (line != null) {
+ sb.append(line).append("\n");
+ line = buf.readLine();
+ }
+ String fileString = sb.toString();
+ is.close();
+ return fileString;
+ }
+
+}
diff --git a/appc-config/appc-config-params/provider/src/test/resources/parser/merge-param.json b/appc-config/appc-config-params/provider/src/test/resources/parser/merge-param.json
new file mode 100644
index 000000000..e610d079a
--- /dev/null
+++ b/appc-config/appc-config-params/provider/src/test/resources/parser/merge-param.json
@@ -0,0 +1,26 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP : APP-C
+ * ================================================================================
+ * Copyright (C) 2017 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=========================================================
+ */
+
+ {
+ "Additional1": "XX.XX.XX",
+ "Additional2": "XXXXXX",
+ "Additiona3": "00",
+ "Additional": "00"
+}
diff --git a/appc-config/appc-config-params/provider/src/test/resources/parser/pd.yaml b/appc-config/appc-config-params/provider/src/test/resources/parser/pd.yaml
new file mode 100644
index 000000000..868665fb4
--- /dev/null
+++ b/appc-config/appc-config-params/provider/src/test/resources/parser/pd.yaml
@@ -0,0 +1,75 @@
+---
+kind: "Property Definition"
+version: "V1"
+vnf-parameter-list:
+- name: "LOCAL_ACCESS_IP_ADDR"
+ description: null
+ type: null
+ required: false
+ source: "INSTAR"
+ rule-type: "interface-ip-address"
+ default: "192.168.30.1"
+ request-keys:
+ - key-name: "address_fqdn"
+ key-value: "someValue"
+ - key-name: "address_type"
+ key-value: "v4"
+ response-keys: null
+- name: "LOCAL_CORE_ALT_IP_ADDR"
+ description: null
+ type: null
+ required: false
+ source: "INSTAR"
+ rule-type: null
+ default: "fd00:f4d5:ea06:1:0:110:136:254"
+ request-keys:
+ - key-name: "address_fqdn"
+ key-value: "someValue"
+ - key-name: "address_type"
+ key-value: "v4"
+ response-keys: null
+- name: "LOCAL_BILLING_IP_ADDR"
+ description: null
+ type: null
+ required: false
+ source: null
+ rule-type: null
+ default: "192.168.30.1"
+ request-keys: null
+ response-keys: null
+- name: "REMOTE_ACCESS_IP_ADDR"
+ description: null
+ type: null
+ required: false
+ source: null
+ rule-type: null
+ default: "192.168.30.1"
+ request-keys: null
+ response-keys: null
+- name: "REMOTE_CORE_ALT_IP_ADDR"
+ description: null
+ type: null
+ required: false
+ source: null
+ rule-type: null
+ default: "fd00:f4d5:ea06:1:0:110:136:254"
+ request-keys: null
+ response-keys: null
+- name: "REMOTE_BILLING_IP_ADDR"
+ description: null
+ type: null
+ required: false
+ source: "INSTAR"
+ rule-type: null
+ default: "192.168.30.1"
+ request-keys: null
+ response-keys: null
+- name: "CORE_NETWORK_PLEN"
+ description: null
+ type: null
+ required: false
+ source: null
+ rule-type: null
+ default: "32"
+ request-keys: null
+ response-keys: null
diff --git a/appc-config/appc-config-params/provider/src/test/resources/parser/request-param.json b/appc-config/appc-config-params/provider/src/test/resources/parser/request-param.json
new file mode 100644
index 000000000..f84141b1a
--- /dev/null
+++ b/appc-config/appc-config-params/provider/src/test/resources/parser/request-param.json
@@ -0,0 +1,27 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP : APP-C
+ * ================================================================================
+ * Copyright (C) 2017 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=========================================================
+ */
+
+ {
+ "LOCAL_BILLING_IP_ADDR": "192.168.30.1",
+ "REMOTE_CORE_ALT_IP_ADDR": "fd00:f4d5:ea06:1:0:110:136:254",
+ "REMOTE_BILLING_IP_ADDR": "192.168.30.1",
+ "CORE_NETWORK_PLEN": "32"
+}
+
diff --git a/appc-config/appc-config-params/provider/src/test/resources/parser/system-param.json b/appc-config/appc-config-params/provider/src/test/resources/parser/system-param.json
new file mode 100644
index 000000000..648abac30
--- /dev/null
+++ b/appc-config/appc-config-params/provider/src/test/resources/parser/system-param.json
@@ -0,0 +1,25 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP : APP-C
+ * ================================================================================
+ * Copyright (C) 2017 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=========================================================
+ */
+
+ {
+ "LOCAL_ACCESS_IP_ADDR": "XX.XX.XX",
+ "LOCAL_BILLING_IP_ADDR": "XXXXXX",
+ "CORE_NETWORK_PLEN": "00"
+}
diff --git a/appc-config/appc-config-params/provider/src/test/resources/tosca/ExamplePropertyDefinition.yml b/appc-config/appc-config-params/provider/src/test/resources/tosca/ExamplePropertyDefinition.yml
new file mode 100644
index 000000000..7c8b31d52
--- /dev/null
+++ b/appc-config/appc-config-params/provider/src/test/resources/tosca/ExamplePropertyDefinition.yml
@@ -0,0 +1,21 @@
+###
+# ============LICENSE_START=======================================================
+# ONAP : APPC
+# ================================================================================
+# Copyright (C) 2017 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.
+#
+# ECOMP is a trademark and service mark of AT&T Intellectual Property.
+# ============LICENSE_END=========================================================
+###
diff --git a/appc-config/appc-config-params/provider/src/test/resources/tosca/ExamplePropertyDefinition2.yml b/appc-config/appc-config-params/provider/src/test/resources/tosca/ExamplePropertyDefinition2.yml
new file mode 100644
index 000000000..7c8b31d52
--- /dev/null
+++ b/appc-config/appc-config-params/provider/src/test/resources/tosca/ExamplePropertyDefinition2.yml
@@ -0,0 +1,21 @@
+###
+# ============LICENSE_START=======================================================
+# ONAP : APPC
+# ================================================================================
+# Copyright (C) 2017 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.
+#
+# ECOMP is a trademark and service mark of AT&T Intellectual Property.
+# ============LICENSE_END=========================================================
+###
diff --git a/appc-config/appc-config-params/provider/src/test/resources/tosca/ExamplePropertyDefinition3.yml b/appc-config/appc-config-params/provider/src/test/resources/tosca/ExamplePropertyDefinition3.yml
new file mode 100644
index 000000000..7c8b31d52
--- /dev/null
+++ b/appc-config/appc-config-params/provider/src/test/resources/tosca/ExamplePropertyDefinition3.yml
@@ -0,0 +1,21 @@
+###
+# ============LICENSE_START=======================================================
+# ONAP : APPC
+# ================================================================================
+# Copyright (C) 2017 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.
+#
+# ECOMP is a trademark and service mark of AT&T Intellectual Property.
+# ============LICENSE_END=========================================================
+###
diff --git a/appc-config/appc-config-params/provider/src/test/resources/tosca/ExamplePropertyDefinition4.yml b/appc-config/appc-config-params/provider/src/test/resources/tosca/ExamplePropertyDefinition4.yml
new file mode 100644
index 000000000..7c8b31d52
--- /dev/null
+++ b/appc-config/appc-config-params/provider/src/test/resources/tosca/ExamplePropertyDefinition4.yml
@@ -0,0 +1,21 @@
+###
+# ============LICENSE_START=======================================================
+# ONAP : APPC
+# ================================================================================
+# Copyright (C) 2017 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.
+#
+# ECOMP is a trademark and service mark of AT&T Intellectual Property.
+# ============LICENSE_END=========================================================
+###
diff --git a/appc-config/appc-config-params/provider/src/test/resources/tosca/ExpectedTosca.yml b/appc-config/appc-config-params/provider/src/test/resources/tosca/ExpectedTosca.yml
new file mode 100644
index 000000000..d379c4730
--- /dev/null
+++ b/appc-config/appc-config-params/provider/src/test/resources/tosca/ExpectedTosca.yml
@@ -0,0 +1,75 @@
+###
+# ============LICENSE_START=======================================================
+# ONAP : APPC
+# ================================================================================
+# Copyright (C) 2017 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.
+#
+# ECOMP is a trademark and service mark of AT&T Intellectual Property.
+# ============LICENSE_END=========================================================
+###
+
+node_types:
+ Property Definition:
+ derived_from: org.openecomp.genericvnf
+ version: V1
+ description: ''
+ properties:
+ LOCAL_BILLING_IP_ADDR:
+ type: string
+ required: false
+ default: 192.168.30.1
+ status: SUPPORTED
+ LOCAL_ACCESS_IP_ADDR:
+ type: string
+ required: false
+ default: 192.168.30.1
+ status: SUPPORTED
+ LOCAL_CORE_ALT_IP_ADDR:
+ type: string
+ required: false
+ default: fd00:f4d5:ea06:1:0:110:136:254
+ status: SUPPORTED
+ CORE_NETWORK_PLEN:
+ type: string
+ required: false
+ default: '32'
+ status: SUPPORTED
+ REMOTE_CORE_ALT_IP_ADDR:
+ type: string
+ required: false
+ default: fd00:f4d5:ea06:1:0:110:136:254
+ status: SUPPORTED
+ REMOTE_ACCESS_IP_ADDR:
+ type: string
+ required: false
+ default: 192.168.30.1
+ status: SUPPORTED
+ REMOTE_BILLING_IP_ADDR:
+ type: string
+ required: false
+ default: 192.168.30.1
+ status: SUPPORTED
+topology_template:
+ node_templates:
+ Property Definition_Template:
+ type: Property Definition
+ properties:
+ LOCAL_BILLING_IP_ADDR: <rule-type = > <response-keys = > <source-system = > <request-keys = >
+ LOCAL_ACCESS_IP_ADDR: <rule-type = interface-ip-address> <response-keys = > <source-system = INSTAR> <request-keys = address_fqdn:someValue , address_type:v4>
+ LOCAL_CORE_ALT_IP_ADDR: <rule-type = > <response-keys = > <source-system = INSTAR> <request-keys = >
+ CORE_NETWORK_PLEN: <rule-type = > <response-keys = > <source-system = > <request-keys = >
+ REMOTE_CORE_ALT_IP_ADDR: <rule-type = > <response-keys = > <source-system = > <request-keys = >
+ REMOTE_ACCESS_IP_ADDR: <rule-type = > <response-keys = > <source-system = > <request-keys = >
+ REMOTE_BILLING_IP_ADDR: <rule-type = > <response-keys = > <source-system = INSTAR> <request-keys = >
diff --git a/appc-config/appc-config-params/provider/src/test/resources/tosca/ReadArtifactNegetiveInputTosca.yml b/appc-config/appc-config-params/provider/src/test/resources/tosca/ReadArtifactNegetiveInputTosca.yml
new file mode 100644
index 000000000..092575329
--- /dev/null
+++ b/appc-config/appc-config-params/provider/src/test/resources/tosca/ReadArtifactNegetiveInputTosca.yml
@@ -0,0 +1,47 @@
+###
+# ============LICENSE_START=======================================================
+# ONAP : APPC
+# ================================================================================
+# Copyright (C) 2017 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.
+#
+# ECOMP is a trademark and service mark of AT&T Intellectual Property.
+# ============LICENSE_END=========================================================
+###
+
+node_types:
+ Property Definition:
+ derived_from: org.openecomp.genericvnf
+ version: V1
+ description: ''
+ properties:
+ abc:
+ type: param1_type
+ description: param_desc
+ required: false
+ default: 192.168.30.1
+ status: SUPPORTED
+ param 2:
+ type: param2 type
+ description: param2
+ required: false
+ default: fd00:f4d5:ea06:1:0:110:136:254
+ status: SUPPORTED
+topology_template:
+ node_templates:
+ Property Definition_Template:
+ type: Property Definition
+ properties:
+ abc: <> source1 <reqk1:reqv1 , reqk2:reqv2>
+ param 2: <rule-type:rule 2> <> source2 <>
diff --git a/appc-config/appc-config-params/provider/src/test/resources/tosca/ReadArtifactPositiveInputTosca.yml b/appc-config/appc-config-params/provider/src/test/resources/tosca/ReadArtifactPositiveInputTosca.yml
new file mode 100644
index 000000000..6c1214206
--- /dev/null
+++ b/appc-config/appc-config-params/provider/src/test/resources/tosca/ReadArtifactPositiveInputTosca.yml
@@ -0,0 +1,47 @@
+###
+# ============LICENSE_START=======================================================
+# ONAP : APPC
+# ================================================================================
+# Copyright (C) 2017 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.
+#
+# ECOMP is a trademark and service mark of AT&T Intellectual Property.
+# ============LICENSE_END=========================================================
+###
+
+node_types:
+ Property Definition:
+ derived_from: org.openecomp.genericvnf
+ version: V1
+ description: ''
+ properties:
+ abc:
+ type: param1_type
+ description: param_desc
+ required: false
+ default: 0.0.0.0
+ status: SUPPORTED
+ param 2:
+ type: param2 type
+ description: param2
+ required: abc
+ default: 0:0:0:0:0:0:0:0
+ status: SUPPORTED
+topology_template:
+ node_templates:
+ Property Definition_Template:
+ type: Property Definition
+ properties:
+ abc: <rule-type = interface-ip-address> <response-keys = address-fqdn:000000000&equals;000000000:ipaddress-v4 > <source-system=INSTAR> <request-keys=address_fqdn:m001&colon;00000000 , address_type:v&comma;4>
+ param 2: <rule-type = interface-ip-address> <response-keys = address-fqdn:000000000:ipaddress-v4 > <source-system = INSTAR> <request-keys = address_fqdn:000000000 , address_type:v4>