Blueprint Processor Python Script Components
[ccsdk/cds.git] / components / core / src / test / kotlin / org / onap / ccsdk / apps / controllerblueprints / core / service / BluePrintRuntimeServiceTest.kt
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\r
30 import kotlin.test.assertEquals\r
31 import kotlin.test.assertNotNull\r
32 \r
33 /**\r
34  *\r
35  *\r
36  * @author Brinda Santh\r
37  */\r
38 class BluePrintRuntimeServiceTest {\r
39     private val log: EELFLogger = EELFManager.getInstance().getLogger(this::class.toString())\r
40 \r
41     @Test\r
42     fun `test Resolve NodeTemplate Properties`() {\r
43         log.info("************************ testResolveNodeTemplateProperties **********************")\r
44 \r
45         val bluePrintRuntimeService = getBluePrintRuntimeService()\r
46 \r
47         val inputDataPath = "src/test/resources/data/default-context.json"\r
48 \r
49         val inputNode: JsonNode = JacksonUtils.jsonNodeFromFile(inputDataPath)\r
50         bluePrintRuntimeService.assignInputs(inputNode)\r
51 \r
52         val propContext: MutableMap<String, JsonNode> = bluePrintRuntimeService\r
53                 .resolveNodeTemplateProperties("activate-process")\r
54 \r
55         assertNotNull(propContext, "Failed to populate interface property values")\r
56     }\r
57 \r
58     @Test\r
59     fun `test resolve NodeTemplate Capability Properties`() {\r
60         log.info("************************ testResolveNodeTemplateRequirementProperties **********************")\r
61         val bluePrintRuntimeService = getBluePrintRuntimeService()\r
62 \r
63         val executionContext = bluePrintRuntimeService.getExecutionContext()\r
64 \r
65         BluePrintRuntimeUtils.assignInputsFromClassPathFile(bluePrintRuntimeService.bluePrintContext(),\r
66                 "data/default-context.json", executionContext)\r
67 \r
68         val capProperties = bluePrintRuntimeService.resolveNodeTemplateCapabilityProperties("sample-netconf-device",\r
69                 "netconf")\r
70         assertNotNull(capProperties, "Failed to populate capability property values")\r
71         assertEquals(capProperties["target-ip-address"], JacksonUtils.jsonNodeFromObject("localhost"), "Failed to populate parameter target-ip-address")\r
72         assertEquals(capProperties["port-number"], JacksonUtils.jsonNodeFromObject(830), "Failed to populate parameter port-number")\r
73     }\r
74 \r
75     @Test\r
76     fun `test Resolve NodeTemplate Interface Operation Inputs`() {\r
77         log.info("************************ testResolveNodeTemplateInterfaceOperationInputs **********************")\r
78 \r
79         val bluePrintRuntimeService = getBluePrintRuntimeService()\r
80 \r
81         val executionContext = bluePrintRuntimeService.getExecutionContext()\r
82 \r
83         BluePrintRuntimeUtils.assignInputsFromClassPathFile(bluePrintRuntimeService.bluePrintContext(),\r
84                 "data/default-context.json", executionContext)\r
85 \r
86         val inContext: MutableMap<String, JsonNode> = bluePrintRuntimeService\r
87                 .resolveNodeTemplateInterfaceOperationInputs("resource-assignment",\r
88                         "ResourceAssignmentComponent", "process")\r
89 \r
90         assertNotNull(inContext, "Failed to populate interface input property values")\r
91         assertEquals(inContext["action-name"], JacksonUtils.jsonNodeFromObject("sample-action"), "Failed to populate parameter action-name")\r
92         assertEquals(inContext["request-id"], JacksonUtils.jsonNodeFromObject("12345"), "Failed to populate parameter action-name")\r
93     }\r
94 \r
95     @Test\r
96     fun `test Resolve NodeTemplate Interface Operation Outputs`() {\r
97         log.info("************************ testResolveNodeTemplateInterfaceOperationOutputs **********************")\r
98 \r
99         val bluePrintRuntimeService = getBluePrintRuntimeService()\r
100 \r
101         bluePrintRuntimeService.setNodeTemplateAttributeValue("resource-assignment", "assignment-params", NullNode.getInstance())\r
102 \r
103         bluePrintRuntimeService.resolveNodeTemplateInterfaceOperationOutputs("resource-assignment",\r
104                 "ResourceAssignmentComponent", "process")\r
105 \r
106         val outputStatus = bluePrintRuntimeService.getNodeTemplateOperationOutputValue("resource-assignment",\r
107                 "ResourceAssignmentComponent", "process", "status")\r
108         assertEquals("success".asJsonPrimitive(), outputStatus, "Failed to get operation property status")\r
109 \r
110         val outputParams = bluePrintRuntimeService.getNodeTemplateOperationOutputValue("resource-assignment",\r
111                 "ResourceAssignmentComponent", "process", "resource-assignment-params")\r
112         assertEquals(NullNode.getInstance(), outputParams, "Failed to get operation property resource-assignment-params")\r
113 \r
114     }\r
115 \r
116     @Test\r
117     fun `test NodeTemplate Context Property`() {\r
118         log.info("************************ testNodeTemplateContextProperty **********************")\r
119         val bluePrintRuntimeService = getBluePrintRuntimeService()\r
120 \r
121         bluePrintRuntimeService.setNodeTemplateAttributeValue("resource-assignment-ra-component", "context1",\r
122                 JacksonUtils.jsonNodeFromObject("context1-value"))\r
123         bluePrintRuntimeService.setNodeTemplateAttributeValue("resource-assignment-ra-component", "context2",\r
124                 JacksonUtils.jsonNodeFromObject("context2-value"))\r
125 \r
126         val keys = listOf("context1", "context2")\r
127 \r
128         val jsonValueNode = bluePrintRuntimeService.getJsonForNodeTemplateAttributeProperties("resource-assignment-ra-component", keys)\r
129         assertNotNull(jsonValueNode, "Failed to get Json for Node Template Context Properties")\r
130         log.info("JSON Prepared Value Context {}", jsonValueNode)\r
131 \r
132     }\r
133 \r
134     private fun getBluePrintRuntimeService(): BluePrintRuntimeService<MutableMap<String, JsonNode>> {\r
135         val blueprintBasePath: String = ("./../model-catalog/blueprint-model/starter-blueprint/baseconfiguration")\r
136         val blueprintRuntime = BluePrintMetadataUtils.getBluePrintRuntime("1234", blueprintBasePath)\r
137         val checkBasePath = blueprintRuntime.get(BluePrintConstants.PROPERTY_BLUEPRINT_BASE_PATH)\r
138 \r
139         assertEquals(blueprintBasePath.asJsonPrimitive(), checkBasePath, "Failed to get base path after runtime creation")\r
140 \r
141         return blueprintRuntime\r
142     }\r
143 \r
144 }