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
48 * Unit test for DoDeleteVfModule.bpmn.
\r
50 public class DoDeleteVfModuleTest extends WorkflowTest {
\r
51 private final CallbackSet callbacks = new CallbackSet();
\r
53 private static final String EOL = "\n";
\r
55 private final String vnfAdapterDeleteCallback =
\r
56 "<deleteVfModuleResponse>" + EOL +
\r
57 " <vnfId>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnfId>" + EOL +
\r
58 " <vfModuleId>973ed047-d251-4fb9-bf1a-65b8949e0a73</vfModuleId>" + EOL +
\r
59 " <vfModuleDeleted>true</vfModuleDeleted>" + EOL +
\r
60 " <messageId>{{MESSAGE-ID}}</messageId>" + EOL +
\r
61 "</deleteVfModuleResponse>" + EOL;
\r
63 private final String vnfAdapterDeleteCallbackFail =
\r
64 "<vfModuleException>" + EOL +
\r
65 " <message>Error processing request to VNF-Async. Not Found.</message>" + EOL +
\r
66 " <category>INTERNAL</category>" + EOL +
\r
67 " <rolledBack>false</rolledBack>" + EOL +
\r
68 " <messageId>{{MESSAGE-ID}}</messageId>" + EOL +
\r
69 "</vfModuleException>" + EOL;
\r
71 private final String sdncAdapterDeleteCallback =
\r
72 "<output xmlns=\"org:openecomp:sdnctl:l3api\">" + EOL +
\r
73 " <svc-request-id>{{REQUEST-ID}}</svc-request-id>" + EOL +
\r
74 " <ack-final-indicator>Y</ack-final-indicator>" + EOL +
\r
77 public DoDeleteVfModuleTest() throws IOException {
\r
78 callbacks.put("sdncChangeDelete", sdncAdapterDeleteCallback);
\r
79 callbacks.put("sdncDelete", sdncAdapterDeleteCallback);
\r
80 callbacks.put("vnfDelete", vnfAdapterDeleteCallback);
\r
81 callbacks.put("vnfDeleteFail", vnfAdapterDeleteCallbackFail);
\r
84 private final String wfeString = "WorkflowException";
\r
87 @Deployment(resources = {
\r
88 "subprocess/DoDeleteVfModule.bpmn",
\r
89 "subprocess/PrepareUpdateAAIVfModule.bpmn",
\r
90 "subprocess/UpdateAAIVfModule.bpmn",
\r
91 "subprocess/UpdateAAIGenericVnf.bpmn",
\r
92 "subprocess/DeleteAAIVfModule.bpmn",
\r
93 "subprocess/SDNCAdapterV1.bpmn",
\r
94 "subprocess/VnfAdapterRestV1.bpmn"
\r
96 public void TestDoDeleteVfModuleSuccess() {
\r
97 // delete the Base Module and Generic Vnf
\r
98 // vnf-id=a27ce5a9-29c4-4c22-a017-6615ac73c721, vf-module-id=973ed047-d251-4fb9-bf1a-65b8949e0a73
\r
100 "<vnf-request xmlns=\"http://openecomp.org/mso/infra/vnf-request/v1\">" + EOL +
\r
101 " <request-info>" + EOL +
\r
102 " <action>DELETE_VF_MODULE</action>" + EOL +
\r
103 " <source>PORTAL</source>" + EOL +
\r
104 " </request-info>" + EOL +
\r
105 " <vnf-inputs>" + EOL +
\r
106 " <vnf-id>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnf-id>" + EOL +
\r
107 " <vnf-name>STMTN5MMSC21</vnf-name>" + EOL +
\r
108 " <vnf-type>asc_heat-int</vnf-type>" + EOL +
\r
109 " <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</vf-module-id>" + EOL +
\r
110 " <vf-module-name>STMTN5MMSC21-MMSC::module-0-0</vf-module-name>" + EOL +
\r
111 " <service-id>00000000-0000-0000-0000-000000000000</service-id>" + EOL +
\r
112 " <service-type>SDN-ETHERNET-INTERNET</service-type>" + EOL +
\r
113 " <tenant-id>fba1bd1e195a404cacb9ce17a9b2b421</tenant-id>" + EOL +
\r
114 " <orchestration-status>pending-delete</orchestration-status>" + EOL +
\r
115 " <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>" + EOL +
\r
116 " </vnf-inputs>" + EOL +
\r
117 " <vnf-params xmlns:tns=\"http://openecomp.org/mso/infra/vnf-request/v1\"/>" + EOL +
\r
118 "</vnf-request>" + EOL;
\r
120 MockDoDeleteVfModule_SDNCSuccess();
\r
121 MockDoDeleteVfModule_DeleteVNFSuccess();
\r
122 MockAAIGenericVnfSearch();
\r
123 MockAAIVfModulePUT(false);
\r
124 MockAAIDeleteGenericVnf();
\r
125 MockAAIDeleteVfModule();
\r
126 MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");
\r
128 String businessKey = UUID.randomUUID().toString();
\r
129 Map<String, Object> variables = new HashMap<String, Object>();
\r
130 variables.put("isDebugLogEnabled","true");
\r
131 variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r
132 variables.put("mso-service-instance-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r
133 variables.put("DoDeleteVfModuleRequest",request);
\r
134 variables.put("isVidRequest", "true");
\r
135 invokeSubProcess("DoDeleteVfModule", businessKey, variables);
\r
137 // "changedelete" operation not required for deleting a Vf Module
\r
138 // injectSDNCCallbacks(callbacks, "sdncChangeDelete");
\r
139 injectVNFRestCallbacks(callbacks, "vnfDelete");
\r
140 waitForRunningProcessCount("vnfAdapterDeleteV1", 0, 120000);
\r
141 injectSDNCCallbacks(callbacks, "sdncDelete");
\r
143 waitForProcessEnd(businessKey, 10000);
\r
144 WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, wfeString);
\r
145 checkVariable(businessKey, wfeString, null);
\r
147 System.out.println("TestDoDeleteVfModuleSuccess: ErrorCode=" + wfe.getErrorCode() +
\r
148 ", ErrorMessage=" + wfe.getErrorMessage());
\r
154 @Deployment(resources = {
\r
155 "subprocess/DoDeleteVfModule.bpmn",
\r
156 "subprocess/PrepareUpdateAAIVfModule.bpmn",
\r
157 "subprocess/UpdateAAIVfModule.bpmn",
\r
158 "subprocess/UpdateAAIGenericVnf.bpmn",
\r
159 "subprocess/DeleteAAIVfModule.bpmn",
\r
160 "subprocess/SDNCAdapterV1.bpmn",
\r
161 "subprocess/VnfAdapterRestV1.bpmn"
\r
163 public void TestDoDeleteVfModule_Building_Block_Success() {
\r
165 MockDoDeleteVfModule_SDNCSuccess();
\r
166 MockDoDeleteVfModule_DeleteVNFSuccess();
\r
167 MockAAIGenericVnfSearch();
\r
168 MockAAIVfModulePUT(false);
\r
169 MockAAIDeleteGenericVnf();
\r
170 MockAAIDeleteVfModule();
\r
171 MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");
\r
173 String businessKey = UUID.randomUUID().toString();
\r
174 Map<String, Object> variables = new HashMap<String, Object>();
\r
176 variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r
177 variables.put("requestId", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r
178 variables.put("isDebugLogEnabled","true");
\r
179 variables.put("vnfId", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r
180 variables.put("vfModuleId", "973ed047-d251-4fb9-bf1a-65b8949e0a73");
\r
181 variables.put("serviceInstanceId", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r
182 variables.put("vfModuleName", "STMTN5MMSC21-MMSC::module-0-0");
\r
183 variables.put("sdncVersion", "1610");
\r
184 variables.put("isVidRequest", "true");
\r
185 String vfModuleModelInfo = "{" + "\"modelType\": \"vnf\"," +
\r
186 "\"modelInvariantId\": \"ff5256d2-5a33-55df-13ab-12abad84e7ff\"," +
\r
187 "\"modelNameVersionId\": \"fe6478e5-ea33-3346-ac12-ab121484a3fe\"," +
\r
188 "\"modelName\": \"vSAMP12\"," +
\r
189 "\"modelVersion\": \"1.0\"," +
\r
190 "\"modelCustomizationId\": \"MODEL-ID-1234\"," +
\r
192 variables.put("vfModuleModelInfo", vfModuleModelInfo);
\r
194 String cloudConfiguration = "{" +
\r
195 "\"lcpCloudRegionId\": \"RDM2WAGPLCP\"," +
\r
196 "\"tenantId\": \"fba1bd1e195a404cacb9ce17a9b2b421\"" + "}";
\r
197 variables.put("cloudConfiguration", cloudConfiguration);
\r
200 invokeSubProcess("DoDeleteVfModule", businessKey, variables);
\r
202 // "changedelete" operation not required for deleting a Vf Module
\r
203 // injectSDNCCallbacks(callbacks, "sdncChangeDelete");
\r
204 injectVNFRestCallbacks(callbacks, "vnfDelete");
\r
205 waitForRunningProcessCount("vnfAdapterDeleteV1", 0, 120000);
\r
206 injectSDNCCallbacks(callbacks, "sdncDelete");
\r
208 waitForProcessEnd(businessKey, 10000);
\r
209 WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, wfeString);
\r
210 checkVariable(businessKey, wfeString, null);
\r
212 System.out.println("TestDoDeleteVfModule_Building_Block_Success: ErrorCode=" + wfe.getErrorCode() +
\r
213 ", ErrorMessage=" + wfe.getErrorMessage());
\r
220 @Deployment(resources = {
\r
221 "subprocess/DoDeleteVfModule.bpmn",
\r
222 "subprocess/PrepareUpdateAAIVfModule.bpmn",
\r
223 "subprocess/UpdateAAIVfModule.bpmn",
\r
224 "subprocess/UpdateAAIGenericVnf.bpmn",
\r
225 "subprocess/DeleteAAIVfModule.bpmn",
\r
226 "subprocess/SDNCAdapterV1.bpmn",
\r
227 "subprocess/VnfAdapterRestV1.bpmn"
\r
229 public void TestDoDeleteVfModuleSDNCFailure() {
\r
230 // delete the Base Module and Generic Vnf - SDNCAdapter failure
\r
231 // vnf-id=a27ce5a9-29c4-4c22-a017-6615ac73c721, vf-module-id=973ed047-d251-4fb9-bf1a-65b8949e0a73
\r
233 "<vnf-request xmlns=\"http://openecomp.org/mso/infra/vnf-request/v1\">" + EOL +
\r
234 " <request-info>" + EOL +
\r
235 " <action>DELETE_VF_MODULE</action>" + EOL +
\r
236 " <source>PORTAL</source>" + EOL +
\r
237 " </request-info>" + EOL +
\r
238 " <vnf-inputs>" + EOL +
\r
239 " <vnf-id>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnf-id>" + EOL +
\r
240 " <vnf-name>STMTN5MMSC21</vnf-name>" + EOL +
\r
241 " <vnf-type>asc_heat-int</vnf-type>" + EOL +
\r
242 " <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</vf-module-id>" + EOL +
\r
243 " <vf-module-name>STMTN5MMSC21-MMSC::module-0-0</vf-module-name>" + EOL +
\r
244 " <service-id>00000000-0000-0000-0000-000000000000</service-id>" + EOL +
\r
245 " <service-type>SDN-ETHERNET-INTERNET</service-type>" + EOL +
\r
246 " <tenant-id>fba1bd1e195a404cacb9ce17a9b2b421</tenant-id>" + EOL +
\r
247 " <orchestration-status>pending-delete</orchestration-status>" + EOL +
\r
248 " <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>" + EOL +
\r
249 " </vnf-inputs>" + EOL +
\r
250 " <vnf-params xmlns:tns=\"http://openecomp.org/mso/infra/vnf-request/v1\"/>" + EOL +
\r
251 "</vnf-request>" + EOL;
\r
254 MockDoDeleteVfModule_SDNCFailure();
\r
255 MockDoDeleteVfModule_DeleteVNFSuccess();
\r
256 MockAAIGenericVnfSearch();
\r
257 MockAAIVfModulePUT(false);
\r
258 MockAAIDeleteGenericVnf();
\r
259 MockAAIDeleteVfModule();
\r
260 MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");
\r
262 String businessKey = UUID.randomUUID().toString();
\r
263 Map<String, Object> variables = new HashMap<String, Object>();
\r
264 variables.put("isDebugLogEnabled","true");
\r
265 variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r
266 variables.put("mso-service-instance-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r
267 variables.put("DoDeleteVfModuleRequest", request);
\r
268 variables.put("isVidRequest", "true");
\r
269 invokeSubProcess("DoDeleteVfModule", businessKey, variables);
\r
271 // "changedelete" operation not required for deleting a Vf Module
\r
272 // injectSDNCCallbacks(callbacks, "sdncChangeDelete");
\r
273 injectVNFRestCallbacks(callbacks, "vnfDelete");
\r
274 waitForRunningProcessCount("vnfAdapterDeleteV1", 0, 120000);
\r
275 // cause a failure by not injecting a callback
\r
276 // injectSDNCCallbacks(callbacks, "sdncDelete");
\r
278 waitForProcessEnd(businessKey, 10000);
\r
279 WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, wfeString);
\r
280 Assert.assertNotNull(wfe);
\r
282 System.out.println("TestDoDeleteVfModuleSDNCFailure: ErrorCode=" + wfe.getErrorCode() +
\r
283 ", ErrorMessage=" + wfe.getErrorMessage());
\r
284 Assert.assertTrue(wfe.getErrorCode() == 7000);
\r
285 Assert.assertTrue(wfe.getErrorMessage().startsWith("Could not communicate"));
\r
291 @Deployment(resources = {
\r
292 "subprocess/DoDeleteVfModule.bpmn",
\r
293 "subprocess/PrepareUpdateAAIVfModule.bpmn",
\r
294 "subprocess/UpdateAAIVfModule.bpmn",
\r
295 "subprocess/UpdateAAIGenericVnf.bpmn",
\r
296 "subprocess/DeleteAAIVfModule.bpmn",
\r
297 "subprocess/SDNCAdapterV1.bpmn",
\r
298 "subprocess/VnfAdapterRestV1.bpmn"
\r
300 public void TestDoDeleteVfModuleSDNCCallbackFailure() {
\r
301 // delete the Base Module and Generic Vnf - SDNCAdapter Callback failure
\r
302 // vnf-id=a27ce5a9-29c4-4c22-a017-6615ac73c721, vf-module-id=973ed047-d251-4fb9-bf1a-65b8949e0a73
\r
304 "<vnf-request xmlns=\"http://openecomp.org/mso/infra/vnf-request/v1\">" + EOL +
\r
305 " <request-info>" + EOL +
\r
306 " <action>DELETE_VF_MODULE</action>" + EOL +
\r
307 " <source>PORTAL</source>" + EOL +
\r
308 " </request-info>" + EOL +
\r
309 " <vnf-inputs>" + EOL +
\r
310 " <vnf-id>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnf-id>" + EOL +
\r
311 " <vnf-name>STMTN5MMSC21</vnf-name>" + EOL +
\r
312 " <vnf-type>asc_heat-int</vnf-type>" + EOL +
\r
313 " <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</vf-module-id>" + EOL +
\r
314 " <vf-module-name>STMTN5MMSC21-MMSC::module-0-0</vf-module-name>" + EOL +
\r
315 " <service-id>00000000-0000-0000-0000-000000000000</service-id>" + EOL +
\r
316 " <service-type>SDN-ETHERNET-INTERNET</service-type>" + EOL +
\r
317 " <tenant-id>fba1bd1e195a404cacb9ce17a9b2b421</tenant-id>" + EOL +
\r
318 " <orchestration-status>pending-delete</orchestration-status>" + EOL +
\r
319 " <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>" + EOL +
\r
320 " </vnf-inputs>" + EOL +
\r
321 " <vnf-params xmlns:tns=\"http://openecomp.org/mso/infra/vnf-request/v1\"/>" + EOL +
\r
322 "</vnf-request>" + EOL;
\r
325 MockDoDeleteVfModule_SDNCSuccess();
\r
326 MockDoDeleteVfModule_DeleteVNFSuccess();
\r
327 MockAAIGenericVnfSearch();
\r
328 MockAAIVfModulePUT(false);
\r
329 MockAAIDeleteGenericVnf();
\r
330 MockAAIDeleteVfModule();
\r
331 MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");
\r
333 String businessKey = UUID.randomUUID().toString();
\r
334 Map<String, Object> variables = new HashMap<String, Object>();
\r
335 variables.put("isDebugLogEnabled","true");
\r
336 variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r
337 variables.put("mso-service-instance-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r
338 variables.put("DoDeleteVfModuleRequest",request);
\r
339 variables.put("isVidRequest", "true");
\r
340 invokeSubProcess("DoDeleteVfModule", businessKey, variables);
\r
342 // "changedelete" operation not required for deleting a Vf Module
\r
343 // injectSDNCCallbacks(callbacks, "sdncChangeDelete:ERR");
\r
344 injectVNFRestCallbacks(callbacks, "vnfDelete");
\r
345 waitForRunningProcessCount("vnfAdapterDeleteV1", 0, 120000);
\r
346 // return a failure in the callback
\r
347 injectSDNCCallbacks(callbacks, "sdncDelete:ERR");
\r
349 waitForProcessEnd(businessKey, 10000);
\r
350 WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, wfeString);
\r
351 Assert.assertNotNull(wfe);
\r
353 System.out.println("TestDoDeleteVfModuleSDNCCallbackFailure: ErrorCode=" + wfe.getErrorCode() +
\r
354 ", ErrorMessage=" + wfe.getErrorMessage());
\r
355 Assert.assertTrue(wfe.getErrorCode() == 5310);
\r
356 Assert.assertTrue(wfe.getErrorMessage().startsWith("Received error from SDN-C"));
\r
362 @Deployment(resources = {
\r
363 "subprocess/DoDeleteVfModule.bpmn",
\r
364 "subprocess/PrepareUpdateAAIVfModule.bpmn",
\r
365 "subprocess/UpdateAAIVfModule.bpmn",
\r
366 "subprocess/UpdateAAIGenericVnf.bpmn",
\r
367 "subprocess/DeleteAAIVfModule.bpmn",
\r
368 "subprocess/SDNCAdapterV1.bpmn",
\r
369 "subprocess/VnfAdapterRestV1.bpmn"
\r
371 public void TestDoDeleteVfModuleVNFFailure() {
\r
372 // delete the Base Module and Generic Vnf - VNFAdapter failure
\r
373 // vnf-id=a27ce5a9-29c4-4c22-a017-6615ac73c721, vf-module-id=973ed047-d251-4fb9-bf1a-65b8949e0a73
\r
375 "<vnf-request xmlns=\"http://openecomp.org/mso/infra/vnf-request/v1\">" + EOL +
\r
376 " <request-info>" + EOL +
\r
377 " <action>DELETE_VF_MODULE</action>" + EOL +
\r
378 " <source>PORTAL</source>" + EOL +
\r
379 " </request-info>" + EOL +
\r
380 " <vnf-inputs>" + EOL +
\r
381 " <vnf-id>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnf-id>" + EOL +
\r
382 " <vnf-name>STMTN5MMSC21</vnf-name>" + EOL +
\r
383 " <vnf-type>asc_heat-int</vnf-type>" + EOL +
\r
384 " <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</vf-module-id>" + EOL +
\r
385 " <vf-module-name>STMTN5MMSC21-MMSC::module-0-0</vf-module-name>" + EOL +
\r
386 " <service-id>00000000-0000-0000-0000-000000000000</service-id>" + EOL +
\r
387 " <service-type>SDN-ETHERNET-INTERNET</service-type>" + EOL +
\r
388 " <tenant-id>fba1bd1e195a404cacb9ce17a9b2b421</tenant-id>" + EOL +
\r
389 " <orchestration-status>pending-delete</orchestration-status>" + EOL +
\r
390 " <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>" + EOL +
\r
391 " </vnf-inputs>" + EOL +
\r
392 " <vnf-params xmlns:tns=\"http://openecomp.org/mso/infra/vnf-request/v1\"/>" + EOL +
\r
393 "</vnf-request>" + EOL;
\r
396 MockDoDeleteVfModule_SDNCSuccess();
\r
397 MockDoDeleteVfModule_DeleteVNFFailure();
\r
398 MockAAIGenericVnfSearch();
\r
399 MockAAIVfModulePUT(false);
\r
400 MockAAIDeleteGenericVnf();
\r
401 MockAAIDeleteVfModule();
\r
402 MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");
\r
404 String businessKey = UUID.randomUUID().toString();
\r
405 Map<String, Object> variables = new HashMap<String, Object>();
\r
406 variables.put("isDebugLogEnabled","true");
\r
407 variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r
408 variables.put("mso-service-instance-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r
409 variables.put("DoDeleteVfModuleRequest",request);
\r
410 invokeSubProcess("DoDeleteVfModule", businessKey, variables);
\r
412 // "changedelete" operation not required for deleting a Vf Module
\r
413 // injectSDNCCallbacks(callbacks, "sdncChangeDelete");
\r
414 // cause a failure by not injecting a callback
\r
415 // injectVNFRestCallbacks(callbacks, "vnfDelete");
\r
416 // waitForRunningProcessCount("vnfAdapterDeleteV1", 0, 120000);
\r
417 // injectSDNCCallbacks(callbacks, "sdncDelete");
\r
419 waitForProcessEnd(businessKey, 10000);
\r
420 WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, wfeString);
\r
421 Assert.assertNotNull(wfe);
\r
423 System.out.println("TestDoDeleteVfModuleVNFFailure: ErrorCode=" + wfe.getErrorCode() +
\r
424 ", ErrorMessage=" + wfe.getErrorMessage());
\r
425 Assert.assertTrue(wfe.getErrorCode() == 7020);
\r
426 Assert.assertTrue(wfe.getErrorMessage().startsWith("Received error from VnfAdapter"));
\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 TestDoDeleteVfModuleVNFCallbackFailure() {
\r
442 // delete the Base Module and Generic Vnf - VNFAdapter Callback 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_DeleteVNFSuccess();
\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<String, Object>();
\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 injectVNFRestCallbacks(callbacks, "vnfDeleteFail");
\r
485 waitForRunningProcessCount("vnfAdapterDeleteV1", 0, 120000);
\r
486 // injectSDNCCallbacks(callbacks, "sdncDelete");
\r
488 waitForProcessEnd(businessKey, 10000);
\r
489 WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, wfeString);
\r
490 Assert.assertNotNull(wfe);
\r
492 System.out.println("TestDoDeleteVfModuleVNFCallbackFailure: ErrorCode=" + wfe.getErrorCode() +
\r
493 ", ErrorMessage=" + wfe.getErrorMessage());
\r
494 Assert.assertTrue(wfe.getErrorCode() == 7020);
\r
495 Assert.assertTrue(wfe.getErrorMessage().startsWith("Received vfModuleException from VnfAdapter"));
\r
500 // start of mocks used locally and by other VF Module unit tests
\r
501 public static void MockAAIVfModulePUT(boolean isCreate){
\r
502 stubFor(put(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/.*/vf-modules/vf-module/.*"))
\r
503 .withRequestBody(containing("MMSC"))
\r
504 .willReturn(aResponse()
\r
505 .withStatus(isCreate ? 201 : 200)));
\r
506 stubFor(put(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/.*/vf-modules/vf-module/.*"))
\r
507 .withRequestBody(containing("PCRF"))
\r
508 .willReturn(aResponse()
\r
510 .withHeader("Content-Type", "text/xml")
\r
511 .withBodyFile("aaiFault.xml")));
\r
512 stubFor(put(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/a27ce5a9-29c4-4c22-a017-6615ac73c721"))
\r
513 .willReturn(aResponse()
\r
514 .withStatus(200)));
\r
517 public static void MockDoDeleteVfModule_SDNCSuccess() {
\r
518 stubFor(post(urlEqualTo("/SDNCAdapter"))
\r
519 .withRequestBody(containing("SvcAction>changedelete"))
\r
520 .willReturn(aResponse()
\r
522 .withHeader("Content-Type", "text/xml")
\r
523 .withBodyFile("DeleteGenericVNFV1/sdncAdapterResponse.xml")));
\r
524 stubFor(post(urlEqualTo("/SDNCAdapter"))
\r
525 .withRequestBody(containing("SvcAction>delete"))
\r
526 .willReturn(aResponse()
\r
528 .withHeader("Content-Type", "text/xml")
\r
529 .withBodyFile("DeleteGenericVNFV1/sdncAdapterResponse.xml")));
\r
532 public static void MockDoDeleteVfModule_SDNCFailure() {
\r
533 stubFor(post(urlEqualTo("/SDNCAdapter"))
\r
534 .withRequestBody(containing("SvcAction>changedelete"))
\r
535 .willReturn(aResponse()
\r
536 .withStatus(500)));
\r
537 stubFor(post(urlEqualTo("/SDNCAdapter"))
\r
538 .withRequestBody(containing("SvcAction>delete"))
\r
539 .willReturn(aResponse()
\r
540 .withStatus(500)));
\r
543 public static void MockDoDeleteVfModule_DeleteVNFSuccess() {
\r
544 stubFor(delete(urlMatching("/vnfs/v1/vnfs/.*/vf-modules/.*"))
\r
545 .willReturn(aResponse()
\r
547 .withHeader("Content-Type", "application/xml")));
\r
548 stubFor(delete(urlMatching("/vnfs/v1/volume-groups/78987"))
\r
549 .willReturn(aResponse()
\r
551 .withHeader("Content-Type", "application/xml")));
\r
554 public static void MockDoDeleteVfModule_DeleteVNFFailure() {
\r
555 stubFor(delete(urlMatching("/vnfs/v1/vnfs/.*/vf-modules/.*"))
\r
556 .willReturn(aResponse()
\r
558 .withHeader("Content-Type", "application/xml")));
\r