2f519802d278604038dbcb892f1e7ec670fec6ec
[ccsdk/cds.git] /
1 /*\r
2  * Copyright © 2017-2018 AT&T Intellectual Property.\r
3  * Modifications Copyright © 2018 IBM.\r
4  *\r
5  * Licensed under the Apache License, Version 2.0 (the "License");\r
6  * you may not use this file except in compliance with the License.\r
7  * You may obtain a copy of the License at\r
8  *\r
9  *     http://www.apache.org/licenses/LICENSE-2.0\r
10  *\r
11  * Unless required by applicable law or agreed to in writing, software\r
12  * distributed under the License is distributed on an "AS IS" BASIS,\r
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
14  * See the License for the specific language governing permissions and\r
15  * limitations under the License.\r
16  */\r
17 \r
18 package org.onap.ccsdk.apps.controllerblueprints.core.service\r
19 \r
20 import com.att.eelf.configuration.EELFLogger\r
21 import com.att.eelf.configuration.EELFManager\r
22 import com.fasterxml.jackson.databind.JsonNode\r
23 import com.fasterxml.jackson.databind.node.NullNode\r
24 import org.junit.Test\r
25 import org.onap.ccsdk.apps.controllerblueprints.core.BluePrintConstants\r
26 import org.onap.ccsdk.apps.controllerblueprints.core.asJsonPrimitive\r
27 import org.onap.ccsdk.apps.controllerblueprints.core.utils.BluePrintMetadataUtils\r
28 import org.onap.ccsdk.apps.controllerblueprints.core.utils.BluePrintRuntimeUtils\r
29 import org.onap.ccsdk.apps.controllerblueprints.core.utils.JacksonUtils.jsonNodeFromFile\r
30 import org.onap.ccsdk.apps.controllerblueprints.core.utils.JacksonUtils.jsonNodeFromObject\r
31 import kotlin.test.assertEquals\r
32 import kotlin.test.assertNotNull\r
33 \r
34 /**\r
35  *\r
36  *\r
37  * @author Brinda Santh\r
38  */\r
39 class BluePrintRuntimeServiceTest {\r
40     private val log: EELFLogger = EELFManager.getInstance().getLogger(this::class.toString())\r
41 \r
42     @Test\r
43     fun testResolveNodeTemplateProperties() {\r
44         log.info("************************ testResolveNodeTemplateProperties **********************")\r
45 \r
46         val bluePrintRuntimeService = getBluePrintRuntimeService()\r
47 \r
48         val inputDataPath = "src/test/resources/data/default-context.json"\r
49 \r
50         val inputNode: JsonNode = jsonNodeFromFile(inputDataPath)\r
51         bluePrintRuntimeService.assignInputs(inputNode)\r
52 \r
53         val propContext: MutableMap<String, JsonNode> = bluePrintRuntimeService.resolveNodeTemplateProperties("activate-process")\r
54 \r
55         assertNotNull(propContext, "Failed to populate interface property values")\r
56         assertEquals(propContext["process-name"], jsonNodeFromObject("sample-action"), "Failed to populate parameter process-name")\r
57         assertEquals(propContext["version"], jsonNodeFromObject("sample-action"), "Failed to populate parameter version")\r
58     }\r
59 \r
60     @Test\r
61     fun testResolveNodeTemplateInterfaceOperationInputs() {\r
62         log.info("************************ testResolveNodeTemplateInterfaceOperationInputs **********************")\r
63 \r
64         val bluePrintRuntimeService = getBluePrintRuntimeService()\r
65 \r
66         val executionContext = bluePrintRuntimeService.getExecutionContext()\r
67 \r
68         BluePrintRuntimeUtils.assignInputsFromClassPathFile(bluePrintRuntimeService.bluePrintContext(),\r
69                 "data/default-context.json", executionContext)\r
70 \r
71         val inContext: MutableMap<String, JsonNode> = bluePrintRuntimeService.resolveNodeTemplateInterfaceOperationInputs("resource-assignment",\r
72                 "ResourceAssignmentComponent", "process")\r
73 \r
74         assertNotNull(inContext, "Failed to populate interface input property values")\r
75         assertEquals(inContext["action-name"], jsonNodeFromObject("sample-action"), "Failed to populate parameter action-name")\r
76         assertEquals(inContext["request-id"], jsonNodeFromObject("12345"), "Failed to populate parameter action-name")\r
77         assertEquals(inContext["template-content"], jsonNodeFromObject("This is Sample Velocity Template"), "Failed to populate parameter action-name")\r
78     }\r
79 \r
80     @Test\r
81     fun testResolveNodeTemplateInterfaceOperationOutputs() {\r
82         log.info("************************ testResolveNodeTemplateInterfaceOperationOutputs **********************")\r
83 \r
84         val bluePrintRuntimeService = getBluePrintRuntimeService()\r
85 \r
86         bluePrintRuntimeService.setNodeTemplateAttributeValue("resource-assignment", "assignment-params", NullNode.getInstance())\r
87 \r
88         bluePrintRuntimeService.resolveNodeTemplateInterfaceOperationOutputs("resource-assignment",\r
89                 "ResourceAssignmentComponent", "process")\r
90 \r
91         val outputStatus = bluePrintRuntimeService.getNodeTemplateOperationOutputValue("resource-assignment",\r
92                 "ResourceAssignmentComponent", "process", "status")\r
93         assertEquals("success".asJsonPrimitive(), outputStatus, "Failed to get operation property status")\r
94 \r
95         val outputParams = bluePrintRuntimeService.getNodeTemplateOperationOutputValue("resource-assignment",\r
96                 "ResourceAssignmentComponent", "process", "resource-assignment-params")\r
97         assertEquals(NullNode.getInstance(), outputParams, "Failed to get operation property resource-assignment-params")\r
98 \r
99     }\r
100 \r
101     @Test\r
102     fun testNodeTemplateContextProperty() {\r
103         log.info("************************ testNodeTemplateContextProperty **********************")\r
104         val bluePrintRuntimeService = getBluePrintRuntimeService()\r
105 \r
106         bluePrintRuntimeService.setNodeTemplateAttributeValue("resource-assignment-ra-component", "context1",\r
107                 jsonNodeFromObject("context1-value"))\r
108         bluePrintRuntimeService.setNodeTemplateAttributeValue("resource-assignment-ra-component", "context2",\r
109                 jsonNodeFromObject("context2-value"))\r
110 \r
111         val keys = listOf("context1", "context2")\r
112 \r
113         val jsonValueNode = bluePrintRuntimeService.getJsonForNodeTemplateAttributeProperties("resource-assignment-ra-component", keys)\r
114         assertNotNull(jsonValueNode, "Failed to get Json for Node Template Context Properties")\r
115         log.info("JSON Prepared Value Context {}", jsonValueNode)\r
116 \r
117     }\r
118 \r
119     private fun getBluePrintRuntimeService(): BluePrintRuntimeService<MutableMap<String, JsonNode>> {\r
120         val blueprintBasePath: String = ("./../model-catalog/blueprint-model/starter-blueprint/baseconfiguration")\r
121         val blueprintRuntime = BluePrintMetadataUtils.getBluePrintRuntime("1234", blueprintBasePath)\r
122         val checkBasePath = blueprintRuntime.get(BluePrintConstants.PROPERTY_BLUEPRINT_BASE_PATH)\r
123 \r
124         assertEquals(blueprintBasePath.asJsonPrimitive(), checkBasePath, "Failed to get base path after runtime creation")\r
125 \r
126         return blueprintRuntime\r
127     }\r
128 \r
129 }