2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.openecomp.mso.bpmn.infrastructure;
23 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDeleteGenericVnf;
24 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDeleteVfModuleId;
25 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfByIdWithDepth;
26 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetVfModuleId;
27 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutGenericVnf;
28 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutVfModuleIdNoResponse;
29 import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;
30 import static org.openecomp.mso.bpmn.mock.StubResponseVNFAdapter.mockVNFDelete;
32 import java.io.IOException;
33 import java.util.HashMap;
35 import java.util.UUID;
37 import org.camunda.bpm.engine.test.Deployment;
38 import org.junit.Test;
39 import org.openecomp.mso.bpmn.common.WorkflowTest;
40 import org.openecomp.mso.bpmn.common.WorkflowTest.CallbackSet;
41 import org.openecomp.mso.bpmn.core.RollbackData;
42 import org.openecomp.mso.bpmn.core.WorkflowException;
45 * Unit test for DoDeleteVfModule.bpmn.
47 public class DoCreateVfModuleRollbackTest extends WorkflowTest {
48 private final CallbackSet callbacks = new CallbackSet();
50 private static final String EOL = "\n";
52 private final String vnfAdapterDeleteCallback =
53 "<deleteVfModuleResponse>" + EOL +
54 " <vnfId>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnfId>" + EOL +
55 " <vfModuleId>973ed047-d251-4fb9-bf1a-65b8949e0a73</vfModuleId>" + EOL +
56 " <vfModuleDeleted>true</vfModuleDeleted>" + EOL +
57 " <messageId>{{MESSAGE-ID}}</messageId>" + EOL +
58 "</deleteVfModuleResponse>" + EOL;
60 private final String vnfAdapterDeleteCallbackFail =
61 "<vfModuleException>" + EOL +
62 " <message>Error processing request to VNF-Async. Not Found.</message>" + EOL +
63 " <category>INTERNAL</category>" + EOL +
64 " <rolledBack>false</rolledBack>" + EOL +
65 " <messageId>{{MESSAGE-ID}}</messageId>" + EOL +
66 "</vfModuleException>" + EOL;
68 private final String sdncAdapterDeleteCallback =
69 "<output xmlns=\"org:openecomp:sdnctl:l3api\">" + EOL +
70 " <svc-request-id>{{REQUEST-ID}}</svc-request-id>" + EOL +
71 " <ack-final-indicator>Y</ack-final-indicator>" + EOL +
74 public DoCreateVfModuleRollbackTest() throws IOException {
75 callbacks.put("sdncChangeDelete", sdncAdapterDeleteCallback);
76 callbacks.put("sdncDelete", sdncAdapterDeleteCallback);
77 callbacks.put("vnfDelete", vnfAdapterDeleteCallback);
78 callbacks.put("vnfDeleteFail", vnfAdapterDeleteCallbackFail);
83 @Deployment(resources = {
84 "subprocess/DoCreateVfModuleRollback.bpmn",
85 "subprocess/PrepareUpdateAAIVfModule.bpmn",
86 "subprocess/UpdateAAIVfModule.bpmn",
87 "subprocess/UpdateAAIGenericVnf.bpmn",
88 "subprocess/DeleteAAIVfModule.bpmn",
89 "subprocess/SDNCAdapterV1.bpmn",
90 "subprocess/VnfAdapterRestV1.bpmn"
92 public void TestCreateVfModuleRollbackSuccess() {
95 mockSDNCAdapter("/SDNCAdapter", "SvcAction>delete", 200, "DeleteGenericVNFV1/sdncAdapterResponse.xml");
96 mockVNFDelete("a27ce5a9-29c4-4c22-a017-6615ac73c721", "/973ed047-d251-4fb9-bf1a-65b8949e0a73", 202);
97 MockDeleteGenericVnf("a27ce5a9-29c4-4c22-a017-6615ac73c721", "0000021", 200);
98 MockDeleteVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73", "0000073", 200);
99 MockPutVfModuleIdNoResponse("a27ce5a9-29c4-4c22-a017-6615ac73c721", "MMSC", "973ed047-d251-4fb9-bf1a-65b8949e0a73");
100 MockPutGenericVnf("a27ce5a9-29c4-4c22-a017-6615ac73c721");
101 MockGetGenericVnfByIdWithDepth("a27ce5a9-29c4-4c22-a017-6615ac73c721", 1, "DoCreateVfModuleRollback/GenericVnf.xml");
102 MockGetVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73", "DoCreateVfModuleRollback/GenericVnfVfModule.xml", 200);
104 String businessKey = UUID.randomUUID().toString();
105 Map<String, Object> variables = new HashMap<String, Object>();
106 RollbackData rollbackData = new RollbackData();
107 rollbackData.put("VFMODULE", "source", "PORTAL");
108 rollbackData.put("VFMODULE", "vnfid", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
109 rollbackData.put("VFMODULE", "vnfname", "STMTN5MMSC21");
110 rollbackData.put("VFMODULE", "vnftype", "asc_heat-int");
111 rollbackData.put("VFMODULE", "vfmoduleid", "973ed047-d251-4fb9-bf1a-65b8949e0a73");
112 rollbackData.put("VFMODULE", "vfmodulename", "STMTN5MMSC21-MMSC::module-0-0");
113 rollbackData.put("VFMODULE", "tenantid", "fba1bd1e195a404cacb9ce17a9b2b421");
114 rollbackData.put("VFMODULE", "aiccloudregion", "RDM2WAGPLCP");
115 rollbackData.put("VFMODULE", "heatstackid", "thisisaheatstack");
116 rollbackData.put("VFMODULE", "contrailNetworkPolicyFqdn0", "MSOTest:DefaultPolicyFQDN1");
117 rollbackData.put("VFMODULE", "contrailNetworkPolicyFqdn1", "MSOTest:DefaultPolicyFQDN2");
118 rollbackData.put("VFMODULE", "oamManagementV6Address", "2000:abc:bce:1111");
119 rollbackData.put("VFMODULE", "oamManagementV4Address", "127.0.0.1");
121 rollbackData.put("VFMODULE", "rollbackPrepareUpdateVfModule", "true");
122 rollbackData.put("VFMODULE", "rollbackVnfAdapterCreate", "true");
123 rollbackData.put("VFMODULE", "rollbackUpdateAAIVfModule", "true");
124 rollbackData.put("VFMODULE", "rollbackSDNCRequestActivate", "true");
125 rollbackData.put("VFMODULE", "rollbackCreateAAIVfModule", "true");
126 rollbackData.put("VFMODULE", "rollbackCreateNetworkPoliciesAAI", "true");
127 rollbackData.put("VFMODULE", "rollbackUpdateVnfAAI", "true");
131 variables.put("isDebugLogEnabled","true");
132 variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
133 variables.put("mso-service-instance-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
134 rollbackData.put("VFMODULE", "msorequestid", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
135 rollbackData.put("VFMODULE", "serviceinstanceid", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
136 variables.put("RollbackData", rollbackData);
137 invokeSubProcess("DoCreateVfModuleRollback", businessKey, variables);
139 // "changedelete" operation not required for deleting a Vf Module
140 // injectSDNCCallbacks(callbacks, "sdncChangeDelete");
141 injectVNFRestCallbacks(callbacks, "vnfDelete");
142 waitForRunningProcessCount("vnfAdapterDeleteV1", 0, 120000);
143 injectSDNCCallbacks(callbacks, "sdncDelete");
145 waitForProcessEnd(businessKey, 10000);
146 WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, "WorkflowException");
147 checkVariable(businessKey, "WorkflowException", null);
149 System.out.println("TestCreateVfModuleSuccess: ErrorCode=" + wfe.getErrorCode() +
150 ", ErrorMessage=" + wfe.getErrorMessage());