37a5b4b8069fa4b3b514f395cf603d48a9ad87b7
[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 import static org.junit.Assert.assertEquals;\r
24 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockAAIVfModule;\r
25 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDBUpdateVfModule;\r
26 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfById_404;\r
27 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetServiceInstance;\r
28 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockNodeQueryServiceInstanceById;\r
29 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchGenericVnf;\r
30 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchVfModuleId;\r
31 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutGenericVnf;\r
32 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockSDNCAdapterVfModule;\r
33 import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;\r
34 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockVNFAdapterRestVfModule;\r
35 import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;\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.Ignore;\r
45 import org.junit.Test;\r
46 import org.openecomp.mso.bpmn.common.BPMNUtil;\r
47 import org.openecomp.mso.bpmn.common.WorkflowTest;\r
48 import org.openecomp.mso.bpmn.core.domain.ModelInfo;\r
49 import org.openecomp.mso.bpmn.core.domain.ModuleResource;\r
50 import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition;\r
51 import org.openecomp.mso.bpmn.core.domain.VnfResource;\r
52 import org.openecomp.mso.bpmn.mock.FileUtil;\r
53 \r
54 /**\r
55  * Unit Test for the DoCreateVnfAndModules Flow\r
56  */\r
57 public class DoCreateVnfAndModulesTest extends WorkflowTest {\r
58 \r
59     private final CallbackSet callbacks = new CallbackSet();\r
60 \r
61     public DoCreateVnfAndModulesTest() throws IOException {\r
62 \r
63         callbacks.put("assign", FileUtil.readResourceFile(\r
64                 "__files/VfModularity/SDNCTopologyAssignCallback.xml"));\r
65         callbacks.put("activate", FileUtil.readResourceFile(\r
66                 "__files/VfModularity/SDNCTopologyActivateCallback.xml"));\r
67         callbacks.put("query", FileUtil.readResourceFile(\r
68                 "__files/VfModularity/SDNCTopologyQueryCallback.xml"));\r
69         callbacks.put("queryVnf", FileUtil.readResourceFile(\r
70                 "__files/VfModularity/SDNCTopologyQueryCallbackVnf.xml"));\r
71         callbacks.put("queryModuleNoVnf", FileUtil.readResourceFile(\r
72                 "__files/VfModularity/SDNCTopologyQueryCallbackVfModuleNoVnf.xml"));\r
73         callbacks.put("queryModule", FileUtil.readResourceFile(\r
74                 "__files/VfModularity/SDNCTopologyQueryCallbackVfModule.xml"));\r
75         callbacks.put("vnfCreate", FileUtil.readResourceFile(\r
76                 "__files/VfModularity/VNFAdapterRestCreateCallback.xml"));\r
77     }\r
78 \r
79     @Test\r
80     @Ignore // IGNORED FOR 1710 MERGE TO ONAP\r
81     @Deployment(resources = {"subprocess/GenericGetService.bpmn",\r
82             "subprocess/GenericGetVnf.bpmn",\r
83             "subprocess/GenericPutVnf.bpmn",\r
84             "subprocess/SDNCAdapterV1.bpmn",\r
85             "subprocess/DoCreateVnf.bpmn",\r
86             "subprocess/GenerateVfModuleName.bpmn",\r
87             "subprocess/DoCreateVfModule.bpmn",\r
88             "subprocess/DoCreateVnfAndModules.bpmn",\r
89             "subprocess/GenericGetVnf.bpmn",\r
90             "subprocess/SDNCAdapterV1.bpmn",\r
91             "subprocess/VnfAdapterRestV1.bpmn",\r
92             "subprocess/ConfirmVolumeGroupTenant.bpmn",\r
93             "subprocess/ConfirmVolumeGroupName.bpmn",\r
94             "subprocess/CreateAAIVfModule.bpmn",\r
95             "subprocess/UpdateAAIVfModule.bpmn",\r
96             "subprocess/CreateAAIVfModuleVolumeGroup.bpmn",\r
97             "subprocess/UpdateAAIGenericVnf.bpmn",\r
98             "subprocess/DoCreateVnfAndModulesRollback.bpmn"})\r
99     public void testDoCreateVnfAndModulesBaseOnly_success() throws Exception {\r
100 \r
101         MockNodeQueryServiceInstanceById("MIS%2F1604%2F0026%2FSW_INTERNET", "GenericFlows/getSIUrlByIdVipr.xml");\r
102         MockGetServiceInstance("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "GenericFlows/getServiceInstance.xml");\r
103         MockGetGenericVnfById_404("testVnfId");\r
104         MockPutGenericVnf(".*");\r
105         MockAAIVfModule();\r
106         MockPatchGenericVnf("skask");\r
107         MockPatchVfModuleId("skask", ".*");\r
108         mockSDNCAdapter("VfModularity/StandardSDNCSynchResponse.xml");\r
109         MockVNFAdapterRestVfModule();\r
110         MockDBUpdateVfModule();\r
111 \r
112         mockSDNCAdapter("VfModularity/StandardSDNCSynchResponse.xml");\r
113         mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");\r
114 \r
115         String businessKey = UUID.randomUUID().toString();\r
116         Map<String, Object> variables = new HashMap<>();\r
117         setVariablesSuccess(variables, "", "testRequestId123", "MIS%2F1604%2F0026%2FSW_INTERNET");\r
118         invokeSubProcess("DoCreateVnfAndModules", businessKey, variables);\r
119 \r
120         injectSDNCCallbacks(callbacks, "assign");\r
121         injectSDNCCallbacks(callbacks, "query");\r
122         injectSDNCCallbacks(callbacks, "activate");\r
123         injectSDNCCallbacks(callbacks, "queryVnf");\r
124         injectSDNCCallbacks(callbacks, "assign, queryModuleNoVnf");\r
125         injectVNFRestCallbacks(callbacks, "vnfCreate");\r
126         injectSDNCCallbacks(callbacks, "activate");\r
127         waitForProcessEnd(businessKey, 10000);\r
128 \r
129         Assert.assertTrue(isProcessEnded(businessKey));\r
130         assertVariables("true", "true", "false", "true", "Success", null);\r
131 \r
132     }\r
133 \r
134     @Test\r
135     @Ignore // IGNORED FOR 1710 MERGE TO ONAP\r
136     @Deployment(resources = {"subprocess/GenericGetService.bpmn",\r
137             "subprocess/GenericGetVnf.bpmn",\r
138             "subprocess/GenericPutVnf.bpmn",\r
139             "subprocess/SDNCAdapterV1.bpmn",\r
140             "subprocess/DoCreateVnf.bpmn",\r
141             "subprocess/GenerateVfModuleName.bpmn",\r
142             "subprocess/DoCreateVfModule.bpmn",\r
143             "subprocess/DoCreateVnfAndModules.bpmn",\r
144             "subprocess/GenericGetVnf.bpmn",\r
145             "subprocess/SDNCAdapterV1.bpmn",\r
146             "subprocess/VnfAdapterRestV1.bpmn",\r
147             "subprocess/ConfirmVolumeGroupTenant.bpmn",\r
148             "subprocess/ConfirmVolumeGroupName.bpmn",\r
149             "subprocess/CreateAAIVfModule.bpmn",\r
150             "subprocess/UpdateAAIVfModule.bpmn",\r
151             "subprocess/CreateAAIVfModuleVolumeGroup.bpmn",\r
152             "subprocess/UpdateAAIGenericVnf.bpmn",\r
153             "subprocess/DoCreateVnfAndModulesRollback.bpmn"})\r
154     public void testDoCreateVnfAndModulesWithAddon_success() throws Exception {\r
155 \r
156         MockNodeQueryServiceInstanceById("MIS%2F1604%2F0026%2FSW_INTERNET", "GenericFlows/getSIUrlByIdVipr.xml");\r
157         MockGetServiceInstance("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "GenericFlows/getServiceInstance.xml");\r
158         MockGetGenericVnfById_404("testVnfId");\r
159         MockPutGenericVnf(".*");\r
160         MockAAIVfModule();\r
161         MockPatchGenericVnf("skask");\r
162         MockPatchVfModuleId("skask", ".*");\r
163         mockSDNCAdapter("VfModularity/StandardSDNCSynchResponse.xml");\r
164         MockVNFAdapterRestVfModule();\r
165         MockDBUpdateVfModule();\r
166         mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");\r
167         mockSDNCAdapter("VfModularity/StandardSDNCSynchResponse.xml");\r
168 \r
169         String businessKey = UUID.randomUUID().toString();\r
170         Map<String, Object> variables = new HashMap<>();\r
171         setVariablesAddonSuccess(variables, "", "testRequestId123", "MIS%2F1604%2F0026%2FSW_INTERNET");\r
172         invokeSubProcess("DoCreateVnfAndModules", businessKey, variables);\r
173 \r
174         injectSDNCCallbacks(callbacks, "assign");\r
175         injectSDNCCallbacks(callbacks, "query");\r
176         injectSDNCCallbacks(callbacks, "activate");\r
177         injectSDNCCallbacks(callbacks, "queryVnf");\r
178         injectSDNCCallbacks(callbacks, "assign, queryModuleNoVnf");\r
179         injectVNFRestCallbacks(callbacks, "vnfCreate");\r
180         injectSDNCCallbacks(callbacks, "activate");\r
181         injectSDNCCallbacks(callbacks, "queryVnf");\r
182         injectSDNCCallbacks(callbacks, "assign, queryModuleNoVnf");\r
183         injectVNFRestCallbacks(callbacks, "vnfCreate");\r
184         injectSDNCCallbacks(callbacks, "activate");\r
185         waitForProcessEnd(businessKey, 10000);\r
186 \r
187         Assert.assertTrue(isProcessEnded(businessKey));\r
188         assertVariables("true", "true", "false", "true", "Success", null);\r
189 \r
190     }\r
191 \r
192     private void assertVariables(String exSIFound, String exSISucc, String exVnfFound, String exVnfSucc, String exResponse, String exWorkflowException) {\r
193 \r
194         String siFound = BPMNUtil.getVariable(processEngineRule, "DoCreateVnf", "GENGS_FoundIndicator");\r
195         String siSucc = BPMNUtil.getVariable(processEngineRule, "DoCreateVnf", "GENGS_SuccessIndicator");\r
196         String vnfFound = BPMNUtil.getVariable(processEngineRule, "DoCreateVnf", "GENGV_FoundIndicator");\r
197         String vnfSucc = BPMNUtil.getVariable(processEngineRule, "DoCreateVnf", "GENGV_SuccessIndicator");\r
198         String response = BPMNUtil.getVariable(processEngineRule, "DoCreateVnf", "WorkflowResponse");\r
199         String workflowException = BPMNUtil.getVariable(processEngineRule, "DoCreateVnf", "SavedWorkflowException1");\r
200 \r
201         //assertEquals(exSIFound, siFound);\r
202         //assertEquals(exSISucc, siSucc);\r
203         //assertEquals(exVnfFound, vnfFound);\r
204         //assertEquals(exVnfSucc, vnfSucc);\r
205         //assertEquals(exResponse, response);\r
206         assertEquals(exWorkflowException, workflowException);\r
207     }\r
208 \r
209     private void setVariables(Map<String, String> variables, String request, String requestId, String siId) {\r
210         variables.put("isDebugLogEnabled", "true");\r
211         variables.put("bpmnRequest", request);\r
212         variables.put("mso-request-id", requestId);\r
213         variables.put("serviceInstanceId", siId);\r
214         variables.put("testVnfId", "testVnfId123");\r
215         variables.put("vnfType", "STMTN");\r
216     }\r
217 \r
218     private void setVariablesSuccess(Map<String, Object> variables, String request, String requestId, String siId) {\r
219         variables.put("isDebugLogEnabled", "true");\r
220         variables.put("mso-request-id", requestId);\r
221         variables.put("requestId", requestId);\r
222         variables.put("msoRequestId", requestId);\r
223         variables.put("serviceInstanceId", siId);\r
224         variables.put("disableRollback", "true");\r
225         //variables.put("testVnfId","testVnfId123");\r
226         variables.put("vnfType", "STMTN");\r
227 \r
228         String serviceModelInfo = "{ " + "\"modelType\": \"service\"," +\r
229                 "\"modelInvariantUuid\": \"995256d2-5a33-55df-13ab-12abad84e7ff\"," +\r
230                 "\"modelUuid\": \"ab6478e5-ea33-3346-ac12-ab121484a3fe\"," +\r
231                 "\"modelName\": \"ServicevSAMP12\"," +\r
232                 "\"modelVersion\": \"1.0\"," +\r
233                 "}";\r
234         variables.put("serviceModelInfo", serviceModelInfo);\r
235         variables.put("productFamilyId", "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb");\r
236         String vnfModelInfo = "{" + "\"modelType\": \"vnf\"," +\r
237                 "\"modelInvariantUuid\": \"ff5256d2-5a33-55df-13ab-12abad84e7ff\"," +\r
238                 "\"modelUuid\": \"fe6478e5-ea33-3346-ac12-ab121484a3fe\"," +\r
239                 "\"modelName\": \"vSAMP12\"," +\r
240                 "\"modelVersion\": \"1.0\"," +\r
241                 "\"modelCustomizationUuid\": \"MODEL-ID-1234\"" + "}";\r
242         variables.put("vnfModelInfo", vnfModelInfo);\r
243 \r
244         String cloudConfiguration = "{" + "\"cloudConfiguration\": { " +\r
245                 "\"lcpCloudRegionId\": \"mdt1\"," +\r
246                 "\"tenantId\": \"88a6ca3ee0394ade9403f075db23167e\"" + "}}";\r
247         variables.put("cloudConfiguration", cloudConfiguration);\r
248         variables.put("sdncVersion", "1707");\r
249         variables.put("globalSubscriberId", "subscriber123");\r
250 \r
251         try {\r
252             String serviceDecomposition = FileUtil.readResourceFile("__files/VIPR/serviceDecompositionATMFW.json");\r
253             ServiceDecomposition sd = new ServiceDecomposition();\r
254             ModelInfo serviceModel = new ModelInfo();\r
255             serviceModel.setModelName("servicewithVNFs");\r
256             sd.setModelInfo(serviceModel);\r
257             VnfResource vr = new VnfResource();\r
258             ModelInfo mvr = new ModelInfo();\r
259             mvr.setModelName("vSAMP12");\r
260             mvr.setModelInstanceName("v123");\r
261             mvr.setModelInvariantUuid("");\r
262             mvr.setModelVersion("1.0");\r
263             mvr.setModelCustomizationUuid("MODEL-ID-1234");\r
264             vr.setModelInfo(mvr);\r
265             vr.constructVnfType("vnf1");\r
266             vr.setNfType("somenftype");\r
267             vr.setNfRole("somenfrole");\r
268             vr.setNfFunction("somenffunction");\r
269             vr.setNfNamingCode("somenamingcode");\r
270             ModuleResource mr = new ModuleResource();\r
271             ModelInfo mvmr = new ModelInfo();\r
272             mvmr.setModelInvariantUuid("ff5256d2-5a33-55df-13ab-12abad84e7ff");\r
273             mvmr.setModelName("STMTN5MMSC21-MMSC::model-1-0");\r
274             mvmr.setModelVersion("1");\r
275             mvmr.setModelCustomizationUuid("MODEL-123");\r
276             mr.setModelInfo(mvmr);\r
277             mr.setIsBase(true);\r
278             mr.setVfModuleLabel("MODULELABEL");\r
279             vr.addVfModule(mr);\r
280             sd.addVnfResource(vr);\r
281 \r
282             variables.put("serviceDecomposition", sd);\r
283             variables.put("isTest", true);\r
284         } catch (Exception e) {\r
285 \r
286         }\r
287 \r
288     }\r
289 \r
290     private void setVariablesAddonSuccess(Map<String, Object> variables, String request, String requestId, String siId) {\r
291         variables.put("isDebugLogEnabled", "true");\r
292         variables.put("mso-request-id", requestId);\r
293         variables.put("requestId", requestId);\r
294         variables.put("msoRequestId", requestId);\r
295         variables.put("serviceInstanceId", siId);\r
296         variables.put("disableRollback", "true");\r
297         //variables.put("testVnfId","testVnfId123");\r
298         variables.put("vnfType", "STMTN");\r
299 \r
300         String serviceModelInfo = "{ " + "\"modelType\": \"service\"," +\r
301                 "\"modelInvariantUuid\": \"995256d2-5a33-55df-13ab-12abad84e7ff\"," +\r
302                 "\"modelUuid\": \"ab6478e5-ea33-3346-ac12-ab121484a3fe\"," +\r
303                 "\"modelName\": \"ServicevSAMP12\"," +\r
304                 "\"modelVersion\": \"1.0\"," +\r
305                 "}";\r
306         variables.put("serviceModelInfo", serviceModelInfo);\r
307         variables.put("productFamilyId", "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb");\r
308         String vnfModelInfo = "{" + "\"modelType\": \"vnf\"," +\r
309                 "\"modelInvariantUuid\": \"ff5256d2-5a33-55df-13ab-12abad84e7ff\"," +\r
310                 "\"modelUuid\": \"fe6478e5-ea33-3346-ac12-ab121484a3fe\"," +\r
311                 "\"modelName\": \"vSAMP12\"," +\r
312                 "\"modelVersion\": \"1.0\"," +\r
313                 "\"modelCustomizationUuid\": \"MODEL-ID-1234\"" + "}";\r
314         variables.put("vnfModelInfo", vnfModelInfo);\r
315 \r
316         String cloudConfiguration = "{" + "\"cloudConfiguration\": { " +\r
317                 "\"lcpCloudRegionId\": \"mdt1\"," +\r
318                 "\"tenantId\": \"88a6ca3ee0394ade9403f075db23167e\"" + "}}";\r
319         variables.put("cloudConfiguration", cloudConfiguration);\r
320         variables.put("sdncVersion", "1707");\r
321         variables.put("globalSubscriberId", "subscriber123");\r
322 \r
323         try {\r
324             String serviceDecomposition = FileUtil.readResourceFile("__files/VIPR/serviceDecompositionATMFW.json");\r
325             ServiceDecomposition sd = new ServiceDecomposition();\r
326             ModelInfo serviceModel = new ModelInfo();\r
327             serviceModel.setModelName("servicewithVNFs");\r
328             sd.setModelInfo(serviceModel);\r
329             VnfResource vr = new VnfResource();\r
330             ModelInfo mvr = new ModelInfo();\r
331             mvr.setModelName("vSAMP12");\r
332             mvr.setModelInstanceName("v123");\r
333             mvr.setModelInvariantUuid("");\r
334             mvr.setModelVersion("1.0");\r
335             mvr.setModelCustomizationUuid("MODEL-ID-1234");\r
336             vr.setModelInfo(mvr);\r
337             vr.setNfType("somenftype");\r
338             vr.setNfRole("somenfrole");\r
339             vr.setNfFunction("somenffunction");\r
340             vr.setNfNamingCode("somenamingcode");\r
341             ModuleResource mr = new ModuleResource();\r
342             ModelInfo mvmr = new ModelInfo();\r
343             mvmr.setModelInvariantUuid("ff5256d2-5a33-55df-13ab-12abad84e7ff");\r
344             mvmr.setModelName("STMTN5MMSC21-MMSC::model-1-0");\r
345             mvmr.setModelVersion("1");\r
346             mvmr.setModelCustomizationUuid("MODEL-123");\r
347             mr.setModelInfo(mvmr);\r
348             mr.setIsBase(true);\r
349             mr.setVfModuleLabel("MODULELABEL");\r
350             vr.addVfModule(mr);\r
351             ModuleResource mr1 = new ModuleResource();\r
352             ModelInfo mvmr1 = new ModelInfo();\r
353             mvmr1.setModelInvariantUuid("ff5256d2-5a33-55df-13ab-12abad84e7ff");\r
354             mvmr1.setModelName("STMTN5MMSC21-MMSC::model-1-0");\r
355             mvmr1.setModelVersion("1");\r
356             mvmr1.setModelCustomizationUuid("MODEL-123");\r
357             mr1.setModelInfo(mvmr1);\r
358             mr1.setIsBase(false);\r
359             mr1.setVfModuleLabel("MODULELABEL");\r
360             mr1.setInitialCount(1);\r
361             vr.addVfModule(mr1);\r
362 \r
363             sd.addVnfResource(vr);\r
364 \r
365             variables.put("serviceDecomposition", sd);\r
366             variables.put("isTest", true);\r
367         } catch (Exception e) {\r
368 \r
369 \r
370         }\r
371     }\r
372 }\r