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