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 com.github.tomakehurst.wiremock.client.WireMock.aResponse;
\r
24 import static com.github.tomakehurst.wiremock.client.WireMock.containing;
\r
25 import static com.github.tomakehurst.wiremock.client.WireMock.delete;
\r
26 import static com.github.tomakehurst.wiremock.client.WireMock.post;
\r
27 import static com.github.tomakehurst.wiremock.client.WireMock.put;
\r
28 import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
\r
29 import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
\r
30 import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching;
\r
31 import static org.openecomp.mso.bpmn.common.DeleteAAIVfModuleTest.MockAAIDeleteGenericVnf;
\r
32 import static org.openecomp.mso.bpmn.common.DeleteAAIVfModuleTest.MockAAIDeleteVfModule;
\r
33 import static org.openecomp.mso.bpmn.common.DeleteAAIVfModuleTest.MockAAIGenericVnfSearch;
\r
34 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchVfModuleId;
\r
36 import java.io.IOException;
\r
37 import java.util.HashMap;
\r
38 import java.util.Map;
\r
39 import java.util.UUID;
\r
41 import org.camunda.bpm.engine.test.Deployment;
\r
42 import org.junit.Assert;
\r
43 import org.junit.Test;
\r
44 import org.openecomp.mso.bpmn.common.WorkflowTest;
\r
45 import org.openecomp.mso.bpmn.core.WorkflowException;
\r
46 import org.openecomp.mso.bpmn.mock.FileUtil;
\r
49 * Unit test for DoDeleteVfModule.bpmn.
\r
51 public class DoDeleteVfModuleTest extends WorkflowTest {
\r
52 private final CallbackSet callbacks = new CallbackSet();
\r
54 private static final String EOL = "\n";
\r
56 private final String vnfAdapterDeleteCallback =
\r
57 "<deleteVfModuleResponse>" + EOL +
\r
58 " <vnfId>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnfId>" + EOL +
\r
59 " <vfModuleId>973ed047-d251-4fb9-bf1a-65b8949e0a73</vfModuleId>" + EOL +
\r
60 " <vfModuleDeleted>true</vfModuleDeleted>" + EOL +
\r
61 " <messageId>{{MESSAGE-ID}}</messageId>" + EOL +
\r
62 "</deleteVfModuleResponse>" + EOL;
\r
64 private final String vnfAdapterDeleteCallbackFail =
\r
65 "<vfModuleException>" + EOL +
\r
66 " <message>Error processing request to VNF-Async. Not Found.</message>" + EOL +
\r
67 " <category>INTERNAL</category>" + EOL +
\r
68 " <rolledBack>false</rolledBack>" + EOL +
\r
69 " <messageId>{{MESSAGE-ID}}</messageId>" + EOL +
\r
70 "</vfModuleException>" + EOL;
\r
72 private final String sdncAdapterDeleteCallback =
\r
73 "<output xmlns=\"org:onap:sdnctl:l3api\">" + EOL +
\r
74 " <svc-request-id>{{REQUEST-ID}}</svc-request-id>" + EOL +
\r
75 " <ack-final-indicator>Y</ack-final-indicator>" + EOL +
\r
78 public DoDeleteVfModuleTest() throws IOException {
\r
79 callbacks.put("sdncChangeDelete", sdncAdapterDeleteCallback);
\r
80 callbacks.put("sdncDelete", sdncAdapterDeleteCallback);
\r
81 callbacks.put("vnfDelete", FileUtil.readResourceFile(
\r
82 "__files/DeleteVfModuleCallbackResponse.xml"));
\r
83 callbacks.put("vnfDeleteFail", vnfAdapterDeleteCallbackFail);
\r
86 private final String wfeString = "WorkflowException";
\r
89 @Deployment(resources = {
\r
90 "subprocess/DoDeleteVfModule.bpmn",
\r
91 "subprocess/PrepareUpdateAAIVfModule.bpmn",
\r
92 "subprocess/UpdateAAIVfModule.bpmn",
\r
93 "subprocess/UpdateAAIGenericVnf.bpmn",
\r
94 "subprocess/DeleteAAIVfModule.bpmn",
\r
95 "subprocess/SDNCAdapterV1.bpmn",
\r
96 "subprocess/VnfAdapterRestV1.bpmn"
\r
98 public void TestDoDeleteVfModuleSuccess() {
\r
99 // delete the Base Module and Generic Vnf
\r
100 // vnf-id=a27ce5a9-29c4-4c22-a017-6615ac73c721, vf-module-id=973ed047-d251-4fb9-bf1a-65b8949e0a73
\r
102 "<vnf-request xmlns=\"http://openecomp.org/mso/infra/vnf-request/v1\">" + EOL +
\r
103 " <request-info>" + EOL +
\r
104 " <action>DELETE_VF_MODULE</action>" + EOL +
\r
105 " <source>PORTAL</source>" + EOL +
\r
106 " </request-info>" + EOL +
\r
107 " <vnf-inputs>" + EOL +
\r
108 " <vnf-id>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnf-id>" + EOL +
\r
109 " <vnf-name>STMTN5MMSC21</vnf-name>" + EOL +
\r
110 " <vnf-type>asc_heat-int</vnf-type>" + EOL +
\r
111 " <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</vf-module-id>" + EOL +
\r
112 " <vf-module-name>STMTN5MMSC21-MMSC::module-0-0</vf-module-name>" + EOL +
\r
113 " <service-id>00000000-0000-0000-0000-000000000000</service-id>" + EOL +
\r
114 " <service-type>SDN-ETHERNET-INTERNET</service-type>" + EOL +
\r
115 " <tenant-id>fba1bd1e195a404cacb9ce17a9b2b421</tenant-id>" + EOL +
\r
116 " <orchestration-status>pending-delete</orchestration-status>" + EOL +
\r
117 " <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>" + EOL +
\r
118 " </vnf-inputs>" + EOL +
\r
119 " <vnf-params xmlns:tns=\"http://openecomp.org/mso/infra/vnf-request/v1\"/>" + EOL +
\r
120 "</vnf-request>" + EOL;
\r
122 MockDoDeleteVfModule_SDNCSuccess();
\r
123 MockDoDeleteVfModule_DeleteVNFSuccess();
\r
124 MockAAIGenericVnfSearch();
\r
125 MockAAIVfModulePUT(false);
\r
126 MockAAIDeleteGenericVnf();
\r
127 MockAAIDeleteVfModule();
\r
128 MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");
\r
130 String businessKey = UUID.randomUUID().toString();
\r
131 Map<String, Object> variables = new HashMap<>();
\r
132 variables.put("isDebugLogEnabled","true");
\r
133 variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r
134 variables.put("mso-service-instance-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r
135 variables.put("DoDeleteVfModuleRequest",request);
\r
136 variables.put("isVidRequest", "true");
\r
137 invokeSubProcess("DoDeleteVfModule", businessKey, variables);
\r
139 // "changedelete" operation not required for deleting a Vf Module
\r
140 // injectSDNCCallbacks(callbacks, "sdncChangeDelete");
\r
141 injectVNFRestCallbacks(callbacks, "vnfDelete");
\r
142 waitForRunningProcessCount("vnfAdapterDeleteV1", 0, 120000);
\r
143 injectSDNCCallbacks(callbacks, "sdncDelete");
\r
145 waitForProcessEnd(businessKey, 10000);
\r
146 WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, wfeString);
\r
147 checkVariable(businessKey, wfeString, null);
\r
149 System.out.println("TestDoDeleteVfModuleSuccess: ErrorCode=" + wfe.getErrorCode() +
\r
150 ", ErrorMessage=" + wfe.getErrorMessage());
\r
156 @Deployment(resources = {
\r
157 "subprocess/DoDeleteVfModule.bpmn",
\r
158 "subprocess/PrepareUpdateAAIVfModule.bpmn",
\r
159 "subprocess/UpdateAAIVfModule.bpmn",
\r
160 "subprocess/UpdateAAIGenericVnf.bpmn",
\r
161 "subprocess/DeleteAAIVfModule.bpmn",
\r
162 "subprocess/SDNCAdapterV1.bpmn",
\r
163 "subprocess/VnfAdapterRestV1.bpmn"
\r
165 public void TestDoDeleteVfModule_Building_Block_Success() {
\r
167 MockDoDeleteVfModule_SDNCSuccess();
\r
168 MockDoDeleteVfModule_DeleteVNFSuccess();
\r
169 MockAAIGenericVnfSearch();
\r
170 MockAAIVfModulePUT(false);
\r
171 MockAAIDeleteGenericVnf();
\r
172 MockAAIDeleteVfModule();
\r
173 MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");
\r
175 String businessKey = UUID.randomUUID().toString();
\r
176 Map<String, Object> variables = new HashMap<>();
\r
178 variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r
179 variables.put("requestId", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r
180 variables.put("isDebugLogEnabled","true");
\r
181 variables.put("vnfId", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r
182 variables.put("vfModuleId", "973ed047-d251-4fb9-bf1a-65b8949e0a73");
\r
183 variables.put("serviceInstanceId", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r
184 variables.put("vfModuleName", "STMTN5MMSC21-MMSC::module-0-0");
\r
185 variables.put("sdncVersion", "1610");
\r
186 variables.put("isVidRequest", "true");
\r
187 variables.put("retainResources", false);
\r
188 String vfModuleModelInfo = "{" + "\"modelType\": \"vnf\"," +
\r
189 "\"modelInvariantUuid\": \"ff5256d2-5a33-55df-13ab-12abad84e7ff\"," +
\r
190 "\"modelUuid\": \"fe6478e5-ea33-3346-ac12-ab121484a3fe\"," +
\r
191 "\"modelName\": \"vSAMP12\"," +
\r
192 "\"modelVersion\": \"1.0\"," +
\r
193 "\"modelCustomizationUuid\": \"MODEL-ID-1234\"," +
\r
195 variables.put("vfModuleModelInfo", vfModuleModelInfo);
\r
197 String cloudConfiguration = "{" +
\r
198 "\"lcpCloudRegionId\": \"RDM2WAGPLCP\"," +
\r
199 "\"tenantId\": \"fba1bd1e195a404cacb9ce17a9b2b421\"" + "}";
\r
200 variables.put("cloudConfiguration", cloudConfiguration);
\r
203 invokeSubProcess("DoDeleteVfModule", businessKey, variables);
\r
205 // "changedelete" operation not required for deleting a Vf Module
\r
206 // injectSDNCCallbacks(callbacks, "sdncChangeDelete");
\r
207 injectVNFRestCallbacks(callbacks, "vnfDelete");
\r
208 waitForRunningProcessCount("vnfAdapterDeleteV1", 0, 120000);
\r
209 injectSDNCCallbacks(callbacks, "sdncDelete");
\r
211 waitForProcessEnd(businessKey, 10000);
\r
212 WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, wfeString);
\r
213 checkVariable(businessKey, wfeString, null);
\r
215 System.out.println("TestDoDeleteVfModule_Building_Block_Success: ErrorCode=" + wfe.getErrorCode() +
\r
216 ", ErrorMessage=" + wfe.getErrorMessage());
\r
222 @Deployment(resources = {
\r
223 "subprocess/DoDeleteVfModule.bpmn",
\r
224 "subprocess/PrepareUpdateAAIVfModule.bpmn",
\r
225 "subprocess/UpdateAAIVfModule.bpmn",
\r
226 "subprocess/UpdateAAIGenericVnf.bpmn",
\r
227 "subprocess/DeleteAAIVfModule.bpmn",
\r
228 "subprocess/SDNCAdapterV1.bpmn",
\r
229 "subprocess/VnfAdapterRestV1.bpmn"
\r
231 public void TestDoDeleteVfModule_Building_Block_ModuleInAssignedState() {
\r
233 MockDoDeleteVfModule_SDNCSuccess();
\r
234 MockDoDeleteVfModule_DeleteVNFSuccess();
\r
235 MockAAIGenericVnfSearch();
\r
236 MockAAIVfModulePUT(false);
\r
237 MockAAIDeleteGenericVnf();
\r
238 MockAAIDeleteVfModule();
\r
239 MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");
\r
241 String businessKey = UUID.randomUUID().toString();
\r
242 Map<String, Object> variables = new HashMap<>();
\r
244 variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r
245 variables.put("requestId", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r
246 variables.put("isDebugLogEnabled","true");
\r
247 variables.put("vnfId", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r
248 variables.put("vfModuleId", "973ed047-d251-4fb9-bf1a-65b8949e0a73");
\r
249 variables.put("serviceInstanceId", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r
250 variables.put("vfModuleName", "STMTN5MMSC21-MMSC::module-0-0");
\r
251 variables.put("sdncVersion", "1610");
\r
252 variables.put("isVidRequest", "true");
\r
253 variables.put("retainResources", false);
\r
254 variables.put("aLaCarte", true);
\r
255 String vfModuleModelInfo = "{" + "\"modelType\": \"vnf\"," +
\r
256 "\"modelInvariantUuid\": \"ff5256d2-5a33-55df-13ab-12abad84e7ff\"," +
\r
257 "\"modelUuid\": \"fe6478e5-ea33-3346-ac12-ab121484a3fe\"," +
\r
258 "\"modelName\": \"vSAMP12\"," +
\r
259 "\"modelVersion\": \"1.0\"," +
\r
260 "\"modelCustomizationUuid\": \"MODEL-ID-1234\"," +
\r
262 variables.put("vfModuleModelInfo", vfModuleModelInfo);
\r
264 String cloudConfiguration = "{" +
\r
265 "\"lcpCloudRegionId\": \"RDM2WAGPLCP\"," +
\r
266 "\"tenantId\": \"fba1bd1e195a404cacb9ce17a9b2b421\"" + "}";
\r
267 variables.put("cloudConfiguration", cloudConfiguration);
\r
270 invokeSubProcess("DoDeleteVfModule", businessKey, variables);
\r
272 // "changedelete" operation not required for deleting a Vf Module
\r
273 // injectSDNCCallbacks(callbacks, "sdncChangeDelete");
\r
274 injectVNFRestCallbacks(callbacks, "vnfDelete");
\r
275 waitForRunningProcessCount("vnfAdapterDeleteV1", 0, 120000);
\r
276 injectSDNCCallbacks(callbacks, "sdncDelete");
\r
278 waitForProcessEnd(businessKey, 10000);
\r
279 WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, wfeString);
\r
280 checkVariable(businessKey, wfeString, null);
\r
282 System.out.println("TestDoDeleteVfModule_Building_Block_Success: ErrorCode=" + wfe.getErrorCode() +
\r
283 ", ErrorMessage=" + wfe.getErrorMessage());
\r
290 @Deployment(resources = {
\r
291 "subprocess/DoDeleteVfModule.bpmn",
\r
292 "subprocess/PrepareUpdateAAIVfModule.bpmn",
\r
293 "subprocess/UpdateAAIVfModule.bpmn",
\r
294 "subprocess/UpdateAAIGenericVnf.bpmn",
\r
295 "subprocess/DeleteAAIVfModule.bpmn",
\r
296 "subprocess/SDNCAdapterV1.bpmn",
\r
297 "subprocess/VnfAdapterRestV1.bpmn"
\r
299 public void TestDoDeleteVfModuleSDNCFailure() {
\r
300 // delete the Base Module and Generic Vnf - SDNCAdapter failure
\r
301 // vnf-id=a27ce5a9-29c4-4c22-a017-6615ac73c721, vf-module-id=973ed047-d251-4fb9-bf1a-65b8949e0a73
\r
303 "<vnf-request xmlns=\"http://openecomp.org/mso/infra/vnf-request/v1\">" + EOL +
\r
304 " <request-info>" + EOL +
\r
305 " <action>DELETE_VF_MODULE</action>" + EOL +
\r
306 " <source>PORTAL</source>" + EOL +
\r
307 " </request-info>" + EOL +
\r
308 " <vnf-inputs>" + EOL +
\r
309 " <vnf-id>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnf-id>" + EOL +
\r
310 " <vnf-name>STMTN5MMSC21</vnf-name>" + EOL +
\r
311 " <vnf-type>asc_heat-int</vnf-type>" + EOL +
\r
312 " <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</vf-module-id>" + EOL +
\r
313 " <vf-module-name>STMTN5MMSC21-MMSC::module-0-0</vf-module-name>" + EOL +
\r
314 " <service-id>00000000-0000-0000-0000-000000000000</service-id>" + EOL +
\r
315 " <service-type>SDN-ETHERNET-INTERNET</service-type>" + EOL +
\r
316 " <tenant-id>fba1bd1e195a404cacb9ce17a9b2b421</tenant-id>" + EOL +
\r
317 " <orchestration-status>pending-delete</orchestration-status>" + EOL +
\r
318 " <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>" + EOL +
\r
319 " </vnf-inputs>" + EOL +
\r
320 " <vnf-params xmlns:tns=\"http://openecomp.org/mso/infra/vnf-request/v1\"/>" + EOL +
\r
321 "</vnf-request>" + EOL;
\r
324 MockDoDeleteVfModule_SDNCFailure();
\r
325 MockDoDeleteVfModule_DeleteVNFSuccess();
\r
326 MockAAIGenericVnfSearch();
\r
327 MockAAIVfModulePUT(false);
\r
328 MockAAIDeleteGenericVnf();
\r
329 MockAAIDeleteVfModule();
\r
330 MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");
\r
332 String businessKey = UUID.randomUUID().toString();
\r
333 Map<String, Object> variables = new HashMap<>();
\r
334 variables.put("isDebugLogEnabled","true");
\r
335 variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r
336 variables.put("mso-service-instance-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r
337 variables.put("DoDeleteVfModuleRequest", request);
\r
338 variables.put("isVidRequest", "true");
\r
339 invokeSubProcess("DoDeleteVfModule", businessKey, variables);
\r
341 // "changedelete" operation not required for deleting a Vf Module
\r
342 // injectSDNCCallbacks(callbacks, "sdncChangeDelete");
\r
343 injectVNFRestCallbacks(callbacks, "vnfDelete");
\r
344 waitForRunningProcessCount("vnfAdapterDeleteV1", 0, 120000);
\r
345 // cause a failure by not injecting a callback
\r
346 // injectSDNCCallbacks(callbacks, "sdncDelete");
\r
348 waitForProcessEnd(businessKey, 10000);
\r
349 WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, wfeString);
\r
350 Assert.assertNotNull(wfe);
\r
352 System.out.println("TestDoDeleteVfModuleSDNCFailure: ErrorCode=" + wfe.getErrorCode() +
\r
353 ", ErrorMessage=" + wfe.getErrorMessage());
\r
354 Assert.assertTrue(wfe.getErrorCode() == 7000);
\r
355 Assert.assertTrue(wfe.getErrorMessage().startsWith("Could not communicate"));
\r
361 @Deployment(resources = {
\r
362 "subprocess/DoDeleteVfModule.bpmn",
\r
363 "subprocess/PrepareUpdateAAIVfModule.bpmn",
\r
364 "subprocess/UpdateAAIVfModule.bpmn",
\r
365 "subprocess/UpdateAAIGenericVnf.bpmn",
\r
366 "subprocess/DeleteAAIVfModule.bpmn",
\r
367 "subprocess/SDNCAdapterV1.bpmn",
\r
368 "subprocess/VnfAdapterRestV1.bpmn"
\r
370 public void TestDoDeleteVfModuleSDNCCallbackFailure() {
\r
371 // delete the Base Module and Generic Vnf - SDNCAdapter Callback failure
\r
372 // vnf-id=a27ce5a9-29c4-4c22-a017-6615ac73c721, vf-module-id=973ed047-d251-4fb9-bf1a-65b8949e0a73
\r
374 "<vnf-request xmlns=\"http://openecomp.org/mso/infra/vnf-request/v1\">" + EOL +
\r
375 " <request-info>" + EOL +
\r
376 " <action>DELETE_VF_MODULE</action>" + EOL +
\r
377 " <source>PORTAL</source>" + EOL +
\r
378 " </request-info>" + EOL +
\r
379 " <vnf-inputs>" + EOL +
\r
380 " <vnf-id>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnf-id>" + EOL +
\r
381 " <vnf-name>STMTN5MMSC21</vnf-name>" + EOL +
\r
382 " <vnf-type>asc_heat-int</vnf-type>" + EOL +
\r
383 " <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</vf-module-id>" + EOL +
\r
384 " <vf-module-name>STMTN5MMSC21-MMSC::module-0-0</vf-module-name>" + EOL +
\r
385 " <service-id>00000000-0000-0000-0000-000000000000</service-id>" + EOL +
\r
386 " <service-type>SDN-ETHERNET-INTERNET</service-type>" + EOL +
\r
387 " <tenant-id>fba1bd1e195a404cacb9ce17a9b2b421</tenant-id>" + EOL +
\r
388 " <orchestration-status>pending-delete</orchestration-status>" + EOL +
\r
389 " <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>" + EOL +
\r
390 " </vnf-inputs>" + EOL +
\r
391 " <vnf-params xmlns:tns=\"http://openecomp.org/mso/infra/vnf-request/v1\"/>" + EOL +
\r
392 "</vnf-request>" + EOL;
\r
395 MockDoDeleteVfModule_SDNCSuccess();
\r
396 MockDoDeleteVfModule_DeleteVNFSuccess();
\r
397 MockAAIGenericVnfSearch();
\r
398 MockAAIVfModulePUT(false);
\r
399 MockAAIDeleteGenericVnf();
\r
400 MockAAIDeleteVfModule();
\r
401 MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");
\r
403 String businessKey = UUID.randomUUID().toString();
\r
404 Map<String, Object> variables = new HashMap<>();
\r
405 variables.put("isDebugLogEnabled","true");
\r
406 variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r
407 variables.put("mso-service-instance-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r
408 variables.put("DoDeleteVfModuleRequest",request);
\r
409 variables.put("isVidRequest", "true");
\r
410 invokeSubProcess("DoDeleteVfModule", businessKey, variables);
\r
412 // "changedelete" operation not required for deleting a Vf Module
\r
413 // injectSDNCCallbacks(callbacks, "sdncChangeDelete:ERR");
\r
414 injectVNFRestCallbacks(callbacks, "vnfDelete");
\r
415 waitForRunningProcessCount("vnfAdapterDeleteV1", 0, 120000);
\r
416 // return a failure in the callback
\r
417 injectSDNCCallbacks(callbacks, "sdncDelete:ERR");
\r
419 waitForProcessEnd(businessKey, 10000);
\r
420 WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, wfeString);
\r
421 Assert.assertNotNull(wfe);
\r
423 System.out.println("TestDoDeleteVfModuleSDNCCallbackFailure: ErrorCode=" + wfe.getErrorCode() +
\r
424 ", ErrorMessage=" + wfe.getErrorMessage());
\r
425 Assert.assertTrue(wfe.getErrorCode() == 5310);
\r
426 Assert.assertTrue(wfe.getErrorMessage().startsWith("Received error from SDN-C"));
\r
432 @Deployment(resources = {
\r
433 "subprocess/DoDeleteVfModule.bpmn",
\r
434 "subprocess/PrepareUpdateAAIVfModule.bpmn",
\r
435 "subprocess/UpdateAAIVfModule.bpmn",
\r
436 "subprocess/UpdateAAIGenericVnf.bpmn",
\r
437 "subprocess/DeleteAAIVfModule.bpmn",
\r
438 "subprocess/SDNCAdapterV1.bpmn",
\r
439 "subprocess/VnfAdapterRestV1.bpmn"
\r
441 public void TestDoDeleteVfModuleVNFFailure() {
\r
442 // delete the Base Module and Generic Vnf - VNFAdapter failure
\r
443 // vnf-id=a27ce5a9-29c4-4c22-a017-6615ac73c721, vf-module-id=973ed047-d251-4fb9-bf1a-65b8949e0a73
\r
445 "<vnf-request xmlns=\"http://openecomp.org/mso/infra/vnf-request/v1\">" + EOL +
\r
446 " <request-info>" + EOL +
\r
447 " <action>DELETE_VF_MODULE</action>" + EOL +
\r
448 " <source>PORTAL</source>" + EOL +
\r
449 " </request-info>" + EOL +
\r
450 " <vnf-inputs>" + EOL +
\r
451 " <vnf-id>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnf-id>" + EOL +
\r
452 " <vnf-name>STMTN5MMSC21</vnf-name>" + EOL +
\r
453 " <vnf-type>asc_heat-int</vnf-type>" + EOL +
\r
454 " <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</vf-module-id>" + EOL +
\r
455 " <vf-module-name>STMTN5MMSC21-MMSC::module-0-0</vf-module-name>" + EOL +
\r
456 " <service-id>00000000-0000-0000-0000-000000000000</service-id>" + EOL +
\r
457 " <service-type>SDN-ETHERNET-INTERNET</service-type>" + EOL +
\r
458 " <tenant-id>fba1bd1e195a404cacb9ce17a9b2b421</tenant-id>" + EOL +
\r
459 " <orchestration-status>pending-delete</orchestration-status>" + EOL +
\r
460 " <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>" + EOL +
\r
461 " </vnf-inputs>" + EOL +
\r
462 " <vnf-params xmlns:tns=\"http://openecomp.org/mso/infra/vnf-request/v1\"/>" + EOL +
\r
463 "</vnf-request>" + EOL;
\r
466 MockDoDeleteVfModule_SDNCSuccess();
\r
467 MockDoDeleteVfModule_DeleteVNFFailure();
\r
468 MockAAIGenericVnfSearch();
\r
469 MockAAIVfModulePUT(false);
\r
470 MockAAIDeleteGenericVnf();
\r
471 MockAAIDeleteVfModule();
\r
472 MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");
\r
474 String businessKey = UUID.randomUUID().toString();
\r
475 Map<String, Object> variables = new HashMap<>();
\r
476 variables.put("isDebugLogEnabled","true");
\r
477 variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r
478 variables.put("mso-service-instance-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r
479 variables.put("DoDeleteVfModuleRequest",request);
\r
480 invokeSubProcess("DoDeleteVfModule", businessKey, variables);
\r
482 // "changedelete" operation not required for deleting a Vf Module
\r
483 // injectSDNCCallbacks(callbacks, "sdncChangeDelete");
\r
484 // cause a failure by not injecting a callback
\r
485 // injectVNFRestCallbacks(callbacks, "vnfDelete");
\r
486 // waitForRunningProcessCount("vnfAdapterDeleteV1", 0, 120000);
\r
487 // injectSDNCCallbacks(callbacks, "sdncDelete");
\r
489 waitForProcessEnd(businessKey, 10000);
\r
490 WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, wfeString);
\r
491 Assert.assertNotNull(wfe);
\r
493 System.out.println("TestDoDeleteVfModuleVNFFailure: ErrorCode=" + wfe.getErrorCode() +
\r
494 ", ErrorMessage=" + wfe.getErrorMessage());
\r
495 Assert.assertTrue(wfe.getErrorCode() == 7020);
\r
496 Assert.assertTrue(wfe.getErrorMessage().startsWith("Received error from VnfAdapter"));
\r
502 @Deployment(resources = {
\r
503 "subprocess/DoDeleteVfModule.bpmn",
\r
504 "subprocess/PrepareUpdateAAIVfModule.bpmn",
\r
505 "subprocess/UpdateAAIVfModule.bpmn",
\r
506 "subprocess/UpdateAAIGenericVnf.bpmn",
\r
507 "subprocess/DeleteAAIVfModule.bpmn",
\r
508 "subprocess/SDNCAdapterV1.bpmn",
\r
509 "subprocess/VnfAdapterRestV1.bpmn"
\r
511 public void TestDoDeleteVfModuleVNFCallbackFailure() {
\r
512 // delete the Base Module and Generic Vnf - VNFAdapter Callback failure
\r
513 // vnf-id=a27ce5a9-29c4-4c22-a017-6615ac73c721, vf-module-id=973ed047-d251-4fb9-bf1a-65b8949e0a73
\r
515 "<vnf-request xmlns=\"http://openecomp.org/mso/infra/vnf-request/v1\">" + EOL +
\r
516 " <request-info>" + EOL +
\r
517 " <action>DELETE_VF_MODULE</action>" + EOL +
\r
518 " <source>PORTAL</source>" + EOL +
\r
519 " </request-info>" + EOL +
\r
520 " <vnf-inputs>" + EOL +
\r
521 " <vnf-id>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnf-id>" + EOL +
\r
522 " <vnf-name>STMTN5MMSC21</vnf-name>" + EOL +
\r
523 " <vnf-type>asc_heat-int</vnf-type>" + EOL +
\r
524 " <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</vf-module-id>" + EOL +
\r
525 " <vf-module-name>STMTN5MMSC21-MMSC::module-0-0</vf-module-name>" + EOL +
\r
526 " <service-id>00000000-0000-0000-0000-000000000000</service-id>" + EOL +
\r
527 " <service-type>SDN-ETHERNET-INTERNET</service-type>" + EOL +
\r
528 " <tenant-id>fba1bd1e195a404cacb9ce17a9b2b421</tenant-id>" + EOL +
\r
529 " <orchestration-status>pending-delete</orchestration-status>" + EOL +
\r
530 " <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>" + EOL +
\r
531 " </vnf-inputs>" + EOL +
\r
532 " <vnf-params xmlns:tns=\"http://openecomp.org/mso/infra/vnf-request/v1\"/>" + EOL +
\r
533 "</vnf-request>" + EOL;
\r
536 MockDoDeleteVfModule_SDNCSuccess();
\r
537 MockDoDeleteVfModule_DeleteVNFSuccess();
\r
538 MockAAIGenericVnfSearch();
\r
539 MockAAIVfModulePUT(false);
\r
540 MockAAIDeleteGenericVnf();
\r
541 MockAAIDeleteVfModule();
\r
542 MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");
\r
544 String businessKey = UUID.randomUUID().toString();
\r
545 Map<String, Object> variables = new HashMap<>();
\r
546 variables.put("isDebugLogEnabled","true");
\r
547 variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r
548 variables.put("mso-service-instance-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r
549 variables.put("DoDeleteVfModuleRequest",request);
\r
550 invokeSubProcess("DoDeleteVfModule", businessKey, variables);
\r
552 // "changedelete" operation not required for deleting a Vf Module
\r
553 // injectSDNCCallbacks(callbacks, "sdncChangeDelete");
\r
554 injectVNFRestCallbacks(callbacks, "vnfDeleteFail");
\r
555 waitForRunningProcessCount("vnfAdapterDeleteV1", 0, 120000);
\r
556 // injectSDNCCallbacks(callbacks, "sdncDelete");
\r
558 waitForProcessEnd(businessKey, 10000);
\r
559 WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, wfeString);
\r
560 Assert.assertNotNull(wfe);
\r
562 System.out.println("TestDoDeleteVfModuleVNFCallbackFailure: ErrorCode=" + wfe.getErrorCode() +
\r
563 ", ErrorMessage=" + wfe.getErrorMessage());
\r
564 Assert.assertTrue(wfe.getErrorCode() == 7020);
\r
565 Assert.assertTrue(wfe.getErrorMessage().startsWith("Received vfModuleException from VnfAdapter"));
\r
570 // start of mocks used locally and by other VF Module unit tests
\r
571 public static void MockAAIVfModulePUT(boolean isCreate){
\r
572 stubFor(put(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/.*/vf-modules/vf-module/.*"))
\r
573 .withRequestBody(containing("MMSC"))
\r
574 .willReturn(aResponse()
\r
575 .withStatus(isCreate ? 201 : 200)));
\r
576 stubFor(put(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/.*/vf-modules/vf-module/.*"))
\r
577 .withRequestBody(containing("PCRF"))
\r
578 .willReturn(aResponse()
\r
580 .withHeader("Content-Type", "text/xml")
\r
581 .withBodyFile("aaiFault.xml")));
\r
582 stubFor(put(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/a27ce5a9-29c4-4c22-a017-6615ac73c721"))
\r
583 .willReturn(aResponse()
\r
584 .withStatus(200)));
\r
587 public static void MockDoDeleteVfModule_SDNCSuccess() {
\r
588 stubFor(post(urlEqualTo("/SDNCAdapter"))
\r
589 .withRequestBody(containing("SvcAction>changedelete"))
\r
590 .willReturn(aResponse()
\r
592 .withHeader("Content-Type", "text/xml")
\r
593 .withBodyFile("DeleteGenericVNFV1/sdncAdapterResponse.xml")));
\r
594 stubFor(post(urlEqualTo("/SDNCAdapter"))
\r
595 .withRequestBody(containing("SvcAction>delete"))
\r
596 .willReturn(aResponse()
\r
598 .withHeader("Content-Type", "text/xml")
\r
599 .withBodyFile("DeleteGenericVNFV1/sdncAdapterResponse.xml")));
\r
602 public static void MockDoDeleteVfModule_SDNCFailure() {
\r
603 stubFor(post(urlEqualTo("/SDNCAdapter"))
\r
604 .withRequestBody(containing("SvcAction>changedelete"))
\r
605 .willReturn(aResponse()
\r
606 .withStatus(500)));
\r
607 stubFor(post(urlEqualTo("/SDNCAdapter"))
\r
608 .withRequestBody(containing("SvcAction>delete"))
\r
609 .willReturn(aResponse()
\r
610 .withStatus(500)));
\r
613 public static void MockDoDeleteVfModule_DeleteVNFSuccess() {
\r
614 stubFor(delete(urlMatching("/vnfs/v1/vnfs/.*/vf-modules/.*"))
\r
615 .willReturn(aResponse()
\r
617 .withHeader("Content-Type", "application/xml")));
\r
618 stubFor(delete(urlMatching("/vnfs/v1/volume-groups/78987"))
\r
619 .willReturn(aResponse()
\r
621 .withHeader("Content-Type", "application/xml")));
\r
624 public static void MockDoDeleteVfModule_DeleteVNFFailure() {
\r
625 stubFor(delete(urlMatching("/vnfs/v1/vnfs/.*/vf-modules/.*"))
\r
626 .willReturn(aResponse()
\r
628 .withHeader("Content-Type", "application/xml")));
\r