Change the header to SO
[so.git] / bpmn / MSOInfrastructureBPMN / src / test / java / org / openecomp / mso / bpmn / infrastructure / DoCreateVfModuleTest.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 \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<String, Object>();\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 }