02c8a984018b41d6433ebc216f644067b61c0642
[so.git] /
1 /*- \r
2  * ============LICENSE_START======================================================= \r
3  * ONAP - SO \r
4  * ================================================================================ \r
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. \r
6  * ================================================================================ \r
7  * Licensed under the Apache License, Version 2.0 (the "License"); \r
8  * you may not use this file except in compliance with the License. \r
9  * You may obtain a copy of the License at \r
10  * \r
11  *      http://www.apache.org/licenses/LICENSE-2.0 \r
12  * \r
13  * Unless required by applicable law or agreed to in writing, software \r
14  * distributed under the License is distributed on an "AS IS" BASIS, \r
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. \r
16  * See the License for the specific language governing permissions and \r
17  * limitations under the License. \r
18  * ============LICENSE_END========================================================= \r
19  */\r
20 \r
21 package org.openecomp.mso.bpmn.infrastructure;\r
22 \r
23 \r
24 import static org.openecomp.mso.bpmn.common.BPMNUtil.getRawVariable;\r
25 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockAAIVfModule;\r
26 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfByIdWithDepth;\r
27 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfByIdWithPriority;\r
28 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchGenericVnf;\r
29 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchVfModuleId;\r
30 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutGenericVnf;\r
31 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutNetwork;\r
32 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutVfModuleIdNoResponse;\r
33 import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;\r
34 import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;\r
35 import static org.openecomp.mso.bpmn.mock.StubResponseVNFAdapter.mockVNFPost;\r
36 \r
37 import java.io.IOException;\r
38 import java.util.HashMap;\r
39 import java.util.Map;\r
40 import java.util.UUID;\r
41 \r
42 import org.camunda.bpm.engine.test.Deployment;\r
43 import org.junit.Assert;\r
44 import org.junit.Test;\r
45 import org.openecomp.mso.bpmn.common.WorkflowTest;\r
46 import org.openecomp.mso.bpmn.mock.FileUtil;\r
47 \r
48 /**\r
49  * Unit tests for DoCreateVfModuleTest.bpmn.\r
50  */\r
51 public class DoCreateVfModuleTest extends WorkflowTest {\r
52 \r
53     private final CallbackSet callbacks = new CallbackSet();\r
54 \r
55     public DoCreateVfModuleTest() throws IOException {\r
56         callbacks.put("assign", FileUtil.readResourceFile(\r
57                 "__files/VfModularity/SDNCTopologyAssignCallback.xml"));\r
58         callbacks.put("query", FileUtil.readResourceFile(\r
59                 "__files/VfModularity/SDNCTopologyQueryCallback.xml"));\r
60         callbacks.put("queryVnf", FileUtil.readResourceFile(\r
61                 "__files/VfModularity/SDNCTopologyQueryCallbackVnf.xml"));\r
62         callbacks.put("queryModuleNoVnf", FileUtil.readResourceFile(\r
63                 "__files/VfModularity/SDNCTopologyQueryCallbackVfModuleNoVnf.xml"));\r
64         callbacks.put("queryModule", FileUtil.readResourceFile(\r
65                 "__files/VfModularity/SDNCTopologyQueryCallbackVfModule.xml"));\r
66         callbacks.put("activate", FileUtil.readResourceFile(\r
67                 "__files/VfModularity/SDNCTopologyActivateCallback.xml"));\r
68         callbacks.put("vnfCreate", FileUtil.readResourceFile(\r
69                 "__files/VfModularity/VNFAdapterRestCreateCallback.xml"));\r
70     }\r
71 \r
72     /**\r
73      * Test the sunny day scenario.\r
74      */\r
75     @Test\r
76 \r
77     @Deployment(resources = {\r
78             "subprocess/DoCreateVfModule.bpmn",\r
79             "subprocess/SDNCAdapterV1.bpmn",\r
80             "subprocess/GenericGetVnf.bpmn",\r
81             "subprocess/VnfAdapterRestV1.bpmn",\r
82             "subprocess/ConfirmVolumeGroupTenant.bpmn",\r
83             "subprocess/ConfirmVolumeGroupName.bpmn",\r
84             "subprocess/CreateAAIVfModule.bpmn",\r
85             "subprocess/UpdateAAIVfModule.bpmn",\r
86             "subprocess/CreateAAIVfModuleVolumeGroup.bpmn",\r
87             "subprocess/UpdateAAIGenericVnf.bpmn"\r
88     })\r
89     public void sunnyDay() throws IOException {\r
90 \r
91         logStart();\r
92 \r
93         MockAAIVfModule();\r
94         MockPatchGenericVnf("skask");\r
95         MockPatchVfModuleId("skask", ".*");\r
96         mockSDNCAdapter("VfModularity/StandardSDNCSynchResponse.xml");\r
97         mockVNFPost("", 202, "skask");\r
98         mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");\r
99 \r
100         String businessKey = UUID.randomUUID().toString();\r
101         //RuntimeService runtimeService = processEngineRule.getRuntimeService();\r
102 \r
103         Map<String, Object> variables = setupVariablesSunnyDayBuildingBlocks();\r
104         //runtimeService.startProcessInstanceByKey("DoCreateVfModule", variables);\r
105         invokeSubProcess("DoCreateVfModule", businessKey, variables);\r
106 \r
107         injectSDNCCallbacks(callbacks, "queryVnf");\r
108         injectSDNCCallbacks(callbacks, "assign, queryModuleNoVnf");\r
109         injectVNFRestCallbacks(callbacks, "vnfCreate");\r
110         injectSDNCCallbacks(callbacks, "activate");\r
111 \r
112         waitForProcessEnd(businessKey, 10000);\r
113 \r
114         Assert.assertTrue(isProcessEnded(businessKey));\r
115         Assert.assertTrue((boolean) getRawVariable(processEngineRule, "DoCreateVfModule", "DCVFM_SuccessIndicator"));\r
116 \r
117         logEnd();\r
118     }\r
119 \r
120     /**\r
121      * Test the sunny day scenario with 1702 SDNC interaction.\r
122      */\r
123     @Test\r
124 \r
125     @Deployment(resources = {\r
126             "subprocess/DoCreateVfModule.bpmn",\r
127             "subprocess/GenericGetVnf.bpmn",\r
128             "subprocess/SDNCAdapterV1.bpmn",\r
129             "subprocess/VnfAdapterRestV1.bpmn",\r
130             "subprocess/ConfirmVolumeGroupTenant.bpmn",\r
131             "subprocess/ConfirmVolumeGroupName.bpmn",\r
132             "subprocess/CreateAAIVfModule.bpmn",\r
133             "subprocess/UpdateAAIVfModule.bpmn",\r
134             "subprocess/CreateAAIVfModuleVolumeGroup.bpmn",\r
135             "subprocess/UpdateAAIGenericVnf.bpmn"\r
136     })\r
137     public void sunnyDay_1702() throws IOException {\r
138 \r
139         logStart();\r
140 \r
141         MockGetGenericVnfByIdWithPriority("skask", ".*", 200, "VfModularity/VfModule-new.xml", 5);\r
142         MockGetGenericVnfByIdWithDepth("skask", 1, "VfModularity/GenericVnf.xml");\r
143         MockPutVfModuleIdNoResponse("skask", "PCRF", ".*");\r
144         MockPutNetwork(".*", "VfModularity/AddNetworkPolicy_AAIResponse_Success.xml", 200);\r
145         MockPutGenericVnf("skask");\r
146         mockSDNCAdapter("/SDNCAdapter", "vnf-type>STMTN", 200, "VfModularity/StandardSDNCSynchResponse.xml");\r
147         mockSDNCAdapter("/SDNCAdapter", "SvcAction>query", 200, "VfModularity/StandardSDNCSynchResponse.xml");\r
148         mockVNFPost("", 202, "skask");\r
149         mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");\r
150         MockPatchGenericVnf("skask");\r
151         MockPatchVfModuleId("skask", ".*");\r
152 \r
153         String businessKey = UUID.randomUUID().toString();\r
154         //RuntimeService runtimeService = processEngineRule.getRuntimeService();\r
155 \r
156         Map<String, Object> variables = setupVariablesSunnyDayBuildingBlocks();\r
157         variables.put("sdncVersion", "1702");\r
158         //runtimeService.startProcessInstanceByKey("DoCreateVfModule", variables);\r
159         invokeSubProcess("DoCreateVfModule", businessKey, variables);\r
160 \r
161 \r
162         injectSDNCCallbacks(callbacks, "assign, queryModule");\r
163         injectVNFRestCallbacks(callbacks, "vnfCreate");\r
164         injectSDNCCallbacks(callbacks, "activate");\r
165 \r
166         waitForProcessEnd(businessKey, 10000);\r
167 \r
168         Assert.assertTrue(isProcessEnded(businessKey));\r
169         Assert.assertTrue((boolean) getRawVariable(processEngineRule, "DoCreateVfModule", "DCVFM_SuccessIndicator"));\r
170 \r
171         logEnd();\r
172     }\r
173 \r
174     /**\r
175      * Test the sunny day scenario.\r
176      */\r
177     @Test\r
178 \r
179     @Deployment(resources = {\r
180             "subprocess/DoCreateVfModule.bpmn",\r
181             "subprocess/GenerateVfModuleName.bpmn",\r
182             "subprocess/GenericGetVnf.bpmn",\r
183             "subprocess/SDNCAdapterV1.bpmn",\r
184             "subprocess/VnfAdapterRestV1.bpmn",\r
185             "subprocess/ConfirmVolumeGroupTenant.bpmn",\r
186             "subprocess/ConfirmVolumeGroupName.bpmn",\r
187             "subprocess/CreateAAIVfModule.bpmn",\r
188             "subprocess/UpdateAAIVfModule.bpmn",\r
189             "subprocess/CreateAAIVfModuleVolumeGroup.bpmn",\r
190             "subprocess/UpdateAAIGenericVnf.bpmn"\r
191     })\r
192     public void sunnyDay_withVfModuleNameGeneration() throws IOException {\r
193 \r
194         logStart();\r
195 \r
196         MockGetGenericVnfByIdWithPriority("skask", ".*", 200, "VfModularity/VfModule-new.xml", 5);\r
197         MockGetGenericVnfByIdWithDepth("skask", 1, "VfModularity/GenericVnf.xml");\r
198         MockPutVfModuleIdNoResponse("skask", "PCRF", ".*");\r
199         MockPutNetwork(".*", "VfModularity/AddNetworkPolicy_AAIResponse_Success.xml", 200);\r
200         MockPutGenericVnf("skask");\r
201         MockAAIVfModule();\r
202         mockSDNCAdapter("/SDNCAdapter", "vnf-type>STMTN", 200, "VfModularity/StandardSDNCSynchResponse.xml");\r
203         mockSDNCAdapter("/SDNCAdapter", "SvcAction>query", 200, "VfModularity/StandardSDNCSynchResponse.xml");\r
204         mockVNFPost("", 202, "skask");\r
205         mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");\r
206         MockPatchGenericVnf("skask");\r
207         MockPatchVfModuleId("skask", ".*");\r
208 \r
209         String businessKey = UUID.randomUUID().toString();\r
210         //RuntimeService runtimeService = processEngineRule.getRuntimeService();\r
211 \r
212         Map<String, Object> variables = setupVariablesSunnyDayBuildingBlocks();\r
213         variables.put("vfModuleName", null);\r
214         variables.put("vfModuleLabel", "MODULELABEL");\r
215         variables.put("sdncVersion", "1702");\r
216         //runtimeService.startProcessInstanceByKey("DoCreateVfModule", variables);\r
217         invokeSubProcess("DoCreateVfModule", businessKey, variables);\r
218 \r
219         injectSDNCCallbacks(callbacks, "assign, query");\r
220         injectVNFRestCallbacks(callbacks, "vnfCreate");\r
221         injectSDNCCallbacks(callbacks, "activate");\r
222 \r
223         waitForProcessEnd(businessKey, 10000);\r
224 \r
225         Assert.assertTrue(isProcessEnded(businessKey));\r
226         Assert.assertTrue((boolean) getRawVariable(processEngineRule, "DoCreateVfModule", "DCVFM_SuccessIndicator"));\r
227 \r
228         logEnd();\r
229     }\r
230 \r
231 \r
232     private Map<String, Object> setupVariablesSunnyDayBuildingBlocks() {\r
233         Map<String, Object> variables = new HashMap<>();\r
234         //try {\r
235         //      variables.put("bpmnRequest", FileUtil.readResourceFile("__files/CreateVfModule_VID_request.json"));\r
236         //}\r
237         //catch (Exception e) {\r
238 \r
239         //}\r
240 \r
241         variables.put("mso-request-id", "testRequestId");\r
242 \r
243         variables.put("msoRequestId", "testRequestId");\r
244         variables.put("isBaseVfModule", false);\r
245         variables.put("isDebugLogEnabled", "true");\r
246         variables.put("disableRollback", "true");\r
247         //variables.put("recipeTimeout", "0");\r
248         //variables.put("requestAction", "CREATE_VF_MODULE");\r
249         variables.put("serviceInstanceId", "f70e927b-6087-4974-9ef8-c5e4d5847ca4");\r
250         variables.put("vnfId", "skask");\r
251         variables.put("vnfName", "vnfname");\r
252         variables.put("vfModuleName", "PCRF::module-0-2");\r
253         variables.put("vnfType", "vSAMP12");\r
254         variables.put("vfModuleId", "");\r
255         variables.put("volumeGroupId", "");\r
256         variables.put("serviceType", "MOG");\r
257         variables.put("vfModuleType", "");\r
258         variables.put("isVidRequest", "true");\r
259         variables.put("asdcServiceModelVersion", "1.0");\r
260         variables.put("usePreload", true);\r
261 \r
262         String vfModuleModelInfo = "{ " + "\"modelType\": \"vfModule\"," +\r
263                 "\"modelInvariantUuid\": \"ff5256d2-5a33-55df-13ab-12abad84e7ff\"," +\r
264                 "\"modelUuid\": \"fe6478e5-ea33-3346-ac12-ab121484a3fe\"," +\r
265                 "\"modelName\": \"STMTN5MMSC21-MMSC::model-1-0\"," +\r
266                 "\"modelVersion\": \"1\"," +\r
267                 "\"modelCustomizationUuid\": \"MODEL-123\"" + "}";\r
268         variables.put("vfModuleModelInfo", vfModuleModelInfo);\r
269 \r
270         variables.put("sdncVersion", "1707");\r
271 \r
272         variables.put("lcpCloudRegionId", "MDTWNJ21");\r
273         variables.put("tenantId", "fba1bd1e195a404cacb9ce17a9b2b421");\r
274 \r
275         String serviceModelInfo = "{ " + "\"modelType\": \"service\"," +\r
276                 "\"modelInvariantUuid\": \"aa5256d2-5a33-55df-13ab-12abad84e7ff\"," +\r
277                 "\"modelUuid\": \"bb6478e5-ea33-3346-ac12-ab121484a3fe\"," +\r
278                 "\"modelName\": \"SVC-STMTN5MMSC21-MMSC::model-1-0\"," +\r
279                 "\"modelVersion\": \"1\"," +\r
280                 "}";\r
281         variables.put("serviceModelInfo", serviceModelInfo);\r
282 \r
283         String vnfModelInfo = "{ " + "\"modelType\": \"vnf\"," +\r
284                 "\"modelInvariantUuid\": \"445256d2-5a33-55df-13ab-12abad84e7ff\"," +\r
285                 "\"modelUuid\": \"f26478e5-ea33-3346-ac12-ab121484a3fe\"," +\r
286                 "\"modelName\": \"VNF-STMTN5MMSC21-MMSC::model-1-0\"," +\r
287                 "\"modelVersion\": \"1\"," +\r
288                 "\"modelCustomizationUuid\": \"VNF-MODEL-123\"" + "}";\r
289         variables.put("vnfModelInfo", vnfModelInfo);\r
290 \r
291         variables.put("vnfQueryPath", "/restconf/vnfQueryPath");\r
292 \r
293         return variables;\r
294 \r
295     }\r
296 }