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
57 public class DoCreateVnfAndModulesTest extends WorkflowTest {
\r
59 private final CallbackSet callbacks = new CallbackSet();
\r
61 public DoCreateVnfAndModulesTest() throws IOException {
\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
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
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
106 MockPatchGenericVnf("skask");
\r
107 MockPatchVfModuleId("skask", ".*");
\r
108 mockSDNCAdapter("VfModularity/StandardSDNCSynchResponse.xml");
\r
109 MockVNFAdapterRestVfModule();
\r
110 MockDBUpdateVfModule();
\r
112 mockSDNCAdapter("VfModularity/StandardSDNCSynchResponse.xml");
\r
113 mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
\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
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
129 Assert.assertTrue(isProcessEnded(businessKey));
\r
130 assertVariables("true", "true", "false", "true", "Success", null);
\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
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
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
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
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
187 Assert.assertTrue(isProcessEnded(businessKey));
\r
188 assertVariables("true", "true", "false", "true", "Success", null);
\r
192 private void assertVariables(String exSIFound, String exSISucc, String exVnfFound, String exVnfSucc, String exResponse, String exWorkflowException) {
\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
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
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
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
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
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
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
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
282 variables.put("serviceDecomposition", sd);
\r
283 variables.put("isTest", true);
\r
284 } catch (Exception e) {
\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
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
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
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
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
363 sd.addVnfResource(vr);
\r
365 variables.put("serviceDecomposition", sd);
\r
366 variables.put("isTest", true);
\r
367 } catch (Exception e) {
\r