2 * ============LICENSE_START=======================================================
\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
11 * http://www.apache.org/licenses/LICENSE-2.0
\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
21 package org.openecomp.mso.bpmn.infrastructure;
\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
37 import java.io.IOException;
\r
38 import java.util.HashMap;
\r
39 import java.util.Map;
\r
40 import java.util.UUID;
\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
55 * Unit Test for the DoCreateVnfAndModules Flow
\r
58 public class DoCreateVnfAndModulesTest extends WorkflowTest {
\r
60 private final CallbackSet callbacks = new CallbackSet();
\r
62 public DoCreateVnfAndModulesTest() throws IOException {
\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
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
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
107 MockPatchGenericVnf("skask");
\r
108 MockPatchVfModuleId("skask", ".*");
\r
109 mockSDNCAdapter("VfModularity/StandardSDNCSynchResponse.xml");
\r
110 MockVNFAdapterRestVfModule();
\r
111 MockDBUpdateVfModule();
\r
113 mockSDNCAdapter("VfModularity/StandardSDNCSynchResponse.xml");
\r
114 mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
\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
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
130 Assert.assertTrue(isProcessEnded(businessKey));
\r
131 assertVariables("true", "true", "false", "true", "Success", null);
\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
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
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
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
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
188 Assert.assertTrue(isProcessEnded(businessKey));
\r
189 assertVariables("true", "true", "false", "true", "Success", null);
\r
193 private void assertVariables(String exSIFound, String exSISucc, String exVnfFound, String exVnfSucc, String exResponse, String exWorkflowException) {
\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
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
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
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
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
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
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
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
283 variables.put("serviceDecomposition", sd);
\r
284 variables.put("isTest", true);
\r
285 } catch(Exception e) {
\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
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
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
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
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
364 sd.addVnfResource(vr);
\r
366 variables.put("serviceDecomposition", sd);
\r
367 variables.put("isTest", true);
\r
368 } catch(Exception e) {
\r