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