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:openecomp: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<String, Object>();
\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<String, Object>();
\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
223 @Deployment(resources = {
\r
224 "subprocess/DoDeleteVfModule.bpmn",
\r
225 "subprocess/PrepareUpdateAAIVfModule.bpmn",
\r
226 "subprocess/UpdateAAIVfModule.bpmn",
\r
227 "subprocess/UpdateAAIGenericVnf.bpmn",
\r
228 "subprocess/DeleteAAIVfModule.bpmn",
\r
229 "subprocess/SDNCAdapterV1.bpmn",
\r
230 "subprocess/VnfAdapterRestV1.bpmn"
\r
232 public void TestDoDeleteVfModuleSDNCFailure() {
\r
233 // delete the Base Module and Generic Vnf - SDNCAdapter failure
\r
234 // vnf-id=a27ce5a9-29c4-4c22-a017-6615ac73c721, vf-module-id=973ed047-d251-4fb9-bf1a-65b8949e0a73
\r
236 "<vnf-request xmlns=\"http://openecomp.org/mso/infra/vnf-request/v1\">" + EOL +
\r
237 " <request-info>" + EOL +
\r
238 " <action>DELETE_VF_MODULE</action>" + EOL +
\r
239 " <source>PORTAL</source>" + EOL +
\r
240 " </request-info>" + EOL +
\r
241 " <vnf-inputs>" + EOL +
\r
242 " <vnf-id>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnf-id>" + EOL +
\r
243 " <vnf-name>STMTN5MMSC21</vnf-name>" + EOL +
\r
244 " <vnf-type>asc_heat-int</vnf-type>" + EOL +
\r
245 " <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</vf-module-id>" + EOL +
\r
246 " <vf-module-name>STMTN5MMSC21-MMSC::module-0-0</vf-module-name>" + EOL +
\r
247 " <service-id>00000000-0000-0000-0000-000000000000</service-id>" + EOL +
\r
248 " <service-type>SDN-ETHERNET-INTERNET</service-type>" + EOL +
\r
249 " <tenant-id>fba1bd1e195a404cacb9ce17a9b2b421</tenant-id>" + EOL +
\r
250 " <orchestration-status>pending-delete</orchestration-status>" + EOL +
\r
251 " <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>" + EOL +
\r
252 " </vnf-inputs>" + EOL +
\r
253 " <vnf-params xmlns:tns=\"http://openecomp.org/mso/infra/vnf-request/v1\"/>" + EOL +
\r
254 "</vnf-request>" + EOL;
\r
257 MockDoDeleteVfModule_SDNCFailure();
\r
258 MockDoDeleteVfModule_DeleteVNFSuccess();
\r
259 MockAAIGenericVnfSearch();
\r
260 MockAAIVfModulePUT(false);
\r
261 MockAAIDeleteGenericVnf();
\r
262 MockAAIDeleteVfModule();
\r
263 MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");
\r
265 String businessKey = UUID.randomUUID().toString();
\r
266 Map<String, Object> variables = new HashMap<String, Object>();
\r
267 variables.put("isDebugLogEnabled","true");
\r
268 variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r
269 variables.put("mso-service-instance-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r
270 variables.put("DoDeleteVfModuleRequest", request);
\r
271 variables.put("isVidRequest", "true");
\r
272 invokeSubProcess("DoDeleteVfModule", businessKey, variables);
\r
274 // "changedelete" operation not required for deleting a Vf Module
\r
275 // injectSDNCCallbacks(callbacks, "sdncChangeDelete");
\r
276 injectVNFRestCallbacks(callbacks, "vnfDelete");
\r
277 waitForRunningProcessCount("vnfAdapterDeleteV1", 0, 120000);
\r
278 // cause a failure by not injecting a callback
\r
279 // injectSDNCCallbacks(callbacks, "sdncDelete");
\r
281 waitForProcessEnd(businessKey, 10000);
\r
282 WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, wfeString);
\r
283 Assert.assertNotNull(wfe);
\r
285 System.out.println("TestDoDeleteVfModuleSDNCFailure: ErrorCode=" + wfe.getErrorCode() +
\r
286 ", ErrorMessage=" + wfe.getErrorMessage());
\r
287 Assert.assertTrue(wfe.getErrorCode() == 7000);
\r
288 Assert.assertTrue(wfe.getErrorMessage().startsWith("Could not communicate"));
\r
294 @Deployment(resources = {
\r
295 "subprocess/DoDeleteVfModule.bpmn",
\r
296 "subprocess/PrepareUpdateAAIVfModule.bpmn",
\r
297 "subprocess/UpdateAAIVfModule.bpmn",
\r
298 "subprocess/UpdateAAIGenericVnf.bpmn",
\r
299 "subprocess/DeleteAAIVfModule.bpmn",
\r
300 "subprocess/SDNCAdapterV1.bpmn",
\r
301 "subprocess/VnfAdapterRestV1.bpmn"
\r
303 public void TestDoDeleteVfModuleSDNCCallbackFailure() {
\r
304 // delete the Base Module and Generic Vnf - SDNCAdapter Callback failure
\r
305 // vnf-id=a27ce5a9-29c4-4c22-a017-6615ac73c721, vf-module-id=973ed047-d251-4fb9-bf1a-65b8949e0a73
\r
307 "<vnf-request xmlns=\"http://openecomp.org/mso/infra/vnf-request/v1\">" + EOL +
\r
308 " <request-info>" + EOL +
\r
309 " <action>DELETE_VF_MODULE</action>" + EOL +
\r
310 " <source>PORTAL</source>" + EOL +
\r
311 " </request-info>" + EOL +
\r
312 " <vnf-inputs>" + EOL +
\r
313 " <vnf-id>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnf-id>" + EOL +
\r
314 " <vnf-name>STMTN5MMSC21</vnf-name>" + EOL +
\r
315 " <vnf-type>asc_heat-int</vnf-type>" + EOL +
\r
316 " <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</vf-module-id>" + EOL +
\r
317 " <vf-module-name>STMTN5MMSC21-MMSC::module-0-0</vf-module-name>" + EOL +
\r
318 " <service-id>00000000-0000-0000-0000-000000000000</service-id>" + EOL +
\r
319 " <service-type>SDN-ETHERNET-INTERNET</service-type>" + EOL +
\r
320 " <tenant-id>fba1bd1e195a404cacb9ce17a9b2b421</tenant-id>" + EOL +
\r
321 " <orchestration-status>pending-delete</orchestration-status>" + EOL +
\r
322 " <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>" + EOL +
\r
323 " </vnf-inputs>" + EOL +
\r
324 " <vnf-params xmlns:tns=\"http://openecomp.org/mso/infra/vnf-request/v1\"/>" + EOL +
\r
325 "</vnf-request>" + EOL;
\r
328 MockDoDeleteVfModule_SDNCSuccess();
\r
329 MockDoDeleteVfModule_DeleteVNFSuccess();
\r
330 MockAAIGenericVnfSearch();
\r
331 MockAAIVfModulePUT(false);
\r
332 MockAAIDeleteGenericVnf();
\r
333 MockAAIDeleteVfModule();
\r
334 MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");
\r
336 String businessKey = UUID.randomUUID().toString();
\r
337 Map<String, Object> variables = new HashMap<String, Object>();
\r
338 variables.put("isDebugLogEnabled","true");
\r
339 variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r
340 variables.put("mso-service-instance-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r
341 variables.put("DoDeleteVfModuleRequest",request);
\r
342 variables.put("isVidRequest", "true");
\r
343 invokeSubProcess("DoDeleteVfModule", businessKey, variables);
\r
345 // "changedelete" operation not required for deleting a Vf Module
\r
346 // injectSDNCCallbacks(callbacks, "sdncChangeDelete:ERR");
\r
347 injectVNFRestCallbacks(callbacks, "vnfDelete");
\r
348 waitForRunningProcessCount("vnfAdapterDeleteV1", 0, 120000);
\r
349 // return a failure in the callback
\r
350 injectSDNCCallbacks(callbacks, "sdncDelete:ERR");
\r
352 waitForProcessEnd(businessKey, 10000);
\r
353 WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, wfeString);
\r
354 Assert.assertNotNull(wfe);
\r
356 System.out.println("TestDoDeleteVfModuleSDNCCallbackFailure: ErrorCode=" + wfe.getErrorCode() +
\r
357 ", ErrorMessage=" + wfe.getErrorMessage());
\r
358 Assert.assertTrue(wfe.getErrorCode() == 5310);
\r
359 Assert.assertTrue(wfe.getErrorMessage().startsWith("Received error from SDN-C"));
\r
365 @Deployment(resources = {
\r
366 "subprocess/DoDeleteVfModule.bpmn",
\r
367 "subprocess/PrepareUpdateAAIVfModule.bpmn",
\r
368 "subprocess/UpdateAAIVfModule.bpmn",
\r
369 "subprocess/UpdateAAIGenericVnf.bpmn",
\r
370 "subprocess/DeleteAAIVfModule.bpmn",
\r
371 "subprocess/SDNCAdapterV1.bpmn",
\r
372 "subprocess/VnfAdapterRestV1.bpmn"
\r
374 public void TestDoDeleteVfModuleVNFFailure() {
\r
375 // delete the Base Module and Generic Vnf - VNFAdapter failure
\r
376 // vnf-id=a27ce5a9-29c4-4c22-a017-6615ac73c721, vf-module-id=973ed047-d251-4fb9-bf1a-65b8949e0a73
\r
378 "<vnf-request xmlns=\"http://openecomp.org/mso/infra/vnf-request/v1\">" + EOL +
\r
379 " <request-info>" + EOL +
\r
380 " <action>DELETE_VF_MODULE</action>" + EOL +
\r
381 " <source>PORTAL</source>" + EOL +
\r
382 " </request-info>" + EOL +
\r
383 " <vnf-inputs>" + EOL +
\r
384 " <vnf-id>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnf-id>" + EOL +
\r
385 " <vnf-name>STMTN5MMSC21</vnf-name>" + EOL +
\r
386 " <vnf-type>asc_heat-int</vnf-type>" + EOL +
\r
387 " <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</vf-module-id>" + EOL +
\r
388 " <vf-module-name>STMTN5MMSC21-MMSC::module-0-0</vf-module-name>" + EOL +
\r
389 " <service-id>00000000-0000-0000-0000-000000000000</service-id>" + EOL +
\r
390 " <service-type>SDN-ETHERNET-INTERNET</service-type>" + EOL +
\r
391 " <tenant-id>fba1bd1e195a404cacb9ce17a9b2b421</tenant-id>" + EOL +
\r
392 " <orchestration-status>pending-delete</orchestration-status>" + EOL +
\r
393 " <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>" + EOL +
\r
394 " </vnf-inputs>" + EOL +
\r
395 " <vnf-params xmlns:tns=\"http://openecomp.org/mso/infra/vnf-request/v1\"/>" + EOL +
\r
396 "</vnf-request>" + EOL;
\r
399 MockDoDeleteVfModule_SDNCSuccess();
\r
400 MockDoDeleteVfModule_DeleteVNFFailure();
\r
401 MockAAIGenericVnfSearch();
\r
402 MockAAIVfModulePUT(false);
\r
403 MockAAIDeleteGenericVnf();
\r
404 MockAAIDeleteVfModule();
\r
405 MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");
\r
407 String businessKey = UUID.randomUUID().toString();
\r
408 Map<String, Object> variables = new HashMap<String, Object>();
\r
409 variables.put("isDebugLogEnabled","true");
\r
410 variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r
411 variables.put("mso-service-instance-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r
412 variables.put("DoDeleteVfModuleRequest",request);
\r
413 invokeSubProcess("DoDeleteVfModule", businessKey, variables);
\r
415 // "changedelete" operation not required for deleting a Vf Module
\r
416 // injectSDNCCallbacks(callbacks, "sdncChangeDelete");
\r
417 // cause a failure by not injecting a callback
\r
418 // injectVNFRestCallbacks(callbacks, "vnfDelete");
\r
419 // waitForRunningProcessCount("vnfAdapterDeleteV1", 0, 120000);
\r
420 // injectSDNCCallbacks(callbacks, "sdncDelete");
\r
422 waitForProcessEnd(businessKey, 10000);
\r
423 WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, wfeString);
\r
424 Assert.assertNotNull(wfe);
\r
426 System.out.println("TestDoDeleteVfModuleVNFFailure: ErrorCode=" + wfe.getErrorCode() +
\r
427 ", ErrorMessage=" + wfe.getErrorMessage());
\r
428 Assert.assertTrue(wfe.getErrorCode() == 7020);
\r
429 Assert.assertTrue(wfe.getErrorMessage().startsWith("Received error from VnfAdapter"));
\r
435 @Deployment(resources = {
\r
436 "subprocess/DoDeleteVfModule.bpmn",
\r
437 "subprocess/PrepareUpdateAAIVfModule.bpmn",
\r
438 "subprocess/UpdateAAIVfModule.bpmn",
\r
439 "subprocess/UpdateAAIGenericVnf.bpmn",
\r
440 "subprocess/DeleteAAIVfModule.bpmn",
\r
441 "subprocess/SDNCAdapterV1.bpmn",
\r
442 "subprocess/VnfAdapterRestV1.bpmn"
\r
444 public void TestDoDeleteVfModuleVNFCallbackFailure() {
\r
445 // delete the Base Module and Generic Vnf - VNFAdapter Callback failure
\r
446 // vnf-id=a27ce5a9-29c4-4c22-a017-6615ac73c721, vf-module-id=973ed047-d251-4fb9-bf1a-65b8949e0a73
\r
448 "<vnf-request xmlns=\"http://openecomp.org/mso/infra/vnf-request/v1\">" + EOL +
\r
449 " <request-info>" + EOL +
\r
450 " <action>DELETE_VF_MODULE</action>" + EOL +
\r
451 " <source>PORTAL</source>" + EOL +
\r
452 " </request-info>" + EOL +
\r
453 " <vnf-inputs>" + EOL +
\r
454 " <vnf-id>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnf-id>" + EOL +
\r
455 " <vnf-name>STMTN5MMSC21</vnf-name>" + EOL +
\r
456 " <vnf-type>asc_heat-int</vnf-type>" + EOL +
\r
457 " <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</vf-module-id>" + EOL +
\r
458 " <vf-module-name>STMTN5MMSC21-MMSC::module-0-0</vf-module-name>" + EOL +
\r
459 " <service-id>00000000-0000-0000-0000-000000000000</service-id>" + EOL +
\r
460 " <service-type>SDN-ETHERNET-INTERNET</service-type>" + EOL +
\r
461 " <tenant-id>fba1bd1e195a404cacb9ce17a9b2b421</tenant-id>" + EOL +
\r
462 " <orchestration-status>pending-delete</orchestration-status>" + EOL +
\r
463 " <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>" + EOL +
\r
464 " </vnf-inputs>" + EOL +
\r
465 " <vnf-params xmlns:tns=\"http://openecomp.org/mso/infra/vnf-request/v1\"/>" + EOL +
\r
466 "</vnf-request>" + EOL;
\r
469 MockDoDeleteVfModule_SDNCSuccess();
\r
470 MockDoDeleteVfModule_DeleteVNFSuccess();
\r
471 MockAAIGenericVnfSearch();
\r
472 MockAAIVfModulePUT(false);
\r
473 MockAAIDeleteGenericVnf();
\r
474 MockAAIDeleteVfModule();
\r
475 MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");
\r
477 String businessKey = UUID.randomUUID().toString();
\r
478 Map<String, Object> variables = new HashMap<String, Object>();
\r
479 variables.put("isDebugLogEnabled","true");
\r
480 variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r
481 variables.put("mso-service-instance-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r
482 variables.put("DoDeleteVfModuleRequest",request);
\r
483 invokeSubProcess("DoDeleteVfModule", businessKey, variables);
\r
485 // "changedelete" operation not required for deleting a Vf Module
\r
486 // injectSDNCCallbacks(callbacks, "sdncChangeDelete");
\r
487 injectVNFRestCallbacks(callbacks, "vnfDeleteFail");
\r
488 waitForRunningProcessCount("vnfAdapterDeleteV1", 0, 120000);
\r
489 // injectSDNCCallbacks(callbacks, "sdncDelete");
\r
491 waitForProcessEnd(businessKey, 10000);
\r
492 WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, wfeString);
\r
493 Assert.assertNotNull(wfe);
\r
495 System.out.println("TestDoDeleteVfModuleVNFCallbackFailure: ErrorCode=" + wfe.getErrorCode() +
\r
496 ", ErrorMessage=" + wfe.getErrorMessage());
\r
497 Assert.assertTrue(wfe.getErrorCode() == 7020);
\r
498 Assert.assertTrue(wfe.getErrorMessage().startsWith("Received vfModuleException from VnfAdapter"));
\r
503 // start of mocks used locally and by other VF Module unit tests
\r
504 public static void MockAAIVfModulePUT(boolean isCreate){
\r
505 stubFor(put(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/.*/vf-modules/vf-module/.*"))
\r
506 .withRequestBody(containing("MMSC"))
\r
507 .willReturn(aResponse()
\r
508 .withStatus(isCreate ? 201 : 200)));
\r
509 stubFor(put(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/.*/vf-modules/vf-module/.*"))
\r
510 .withRequestBody(containing("PCRF"))
\r
511 .willReturn(aResponse()
\r
513 .withHeader("Content-Type", "text/xml")
\r
514 .withBodyFile("aaiFault.xml")));
\r
515 stubFor(put(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/a27ce5a9-29c4-4c22-a017-6615ac73c721"))
\r
516 .willReturn(aResponse()
\r
517 .withStatus(200)));
\r
520 public static void MockDoDeleteVfModule_SDNCSuccess() {
\r
521 stubFor(post(urlEqualTo("/SDNCAdapter"))
\r
522 .withRequestBody(containing("SvcAction>changedelete"))
\r
523 .willReturn(aResponse()
\r
525 .withHeader("Content-Type", "text/xml")
\r
526 .withBodyFile("DeleteGenericVNFV1/sdncAdapterResponse.xml")));
\r
527 stubFor(post(urlEqualTo("/SDNCAdapter"))
\r
528 .withRequestBody(containing("SvcAction>delete"))
\r
529 .willReturn(aResponse()
\r
531 .withHeader("Content-Type", "text/xml")
\r
532 .withBodyFile("DeleteGenericVNFV1/sdncAdapterResponse.xml")));
\r
535 public static void MockDoDeleteVfModule_SDNCFailure() {
\r
536 stubFor(post(urlEqualTo("/SDNCAdapter"))
\r
537 .withRequestBody(containing("SvcAction>changedelete"))
\r
538 .willReturn(aResponse()
\r
539 .withStatus(500)));
\r
540 stubFor(post(urlEqualTo("/SDNCAdapter"))
\r
541 .withRequestBody(containing("SvcAction>delete"))
\r
542 .willReturn(aResponse()
\r
543 .withStatus(500)));
\r
546 public static void MockDoDeleteVfModule_DeleteVNFSuccess() {
\r
547 stubFor(delete(urlMatching("/vnfs/v1/vnfs/.*/vf-modules/.*"))
\r
548 .willReturn(aResponse()
\r
550 .withHeader("Content-Type", "application/xml")));
\r
551 stubFor(delete(urlMatching("/vnfs/v1/volume-groups/78987"))
\r
552 .willReturn(aResponse()
\r
554 .withHeader("Content-Type", "application/xml")));
\r
557 public static void MockDoDeleteVfModule_DeleteVNFFailure() {
\r
558 stubFor(delete(urlMatching("/vnfs/v1/vnfs/.*/vf-modules/.*"))
\r
559 .willReturn(aResponse()
\r
561 .withHeader("Content-Type", "application/xml")));
\r