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.openecomp.mso.bpmn.mock.StubResponseAAI.MockDeleteGenericVnf;
\r 
  24 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDeleteVfModuleId;
\r 
  25 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfByIdWithDepth;
\r 
  26 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetVfModuleId;
\r 
  27 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchGenericVnf;
\r 
  28 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchVfModuleId;
\r 
  29 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutGenericVnf;
\r 
  30 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutVfModuleIdNoResponse;
\r 
  31 import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;
\r 
  32 import static org.openecomp.mso.bpmn.mock.StubResponseVNFAdapter.mockVNFDelete;
\r 
  34 import java.io.IOException;
\r 
  35 import java.util.HashMap;
\r 
  36 import java.util.Map;
\r 
  37 import java.util.UUID;
\r 
  39 import org.camunda.bpm.engine.test.Deployment;
\r 
  40 import org.junit.Test;
\r 
  41 import org.openecomp.mso.bpmn.common.WorkflowTest;
\r 
  42 import org.openecomp.mso.bpmn.core.RollbackData;
\r 
  43 import org.openecomp.mso.bpmn.core.WorkflowException;
\r 
  46  * Unit test for DoDeleteVfModule.bpmn.
\r 
  48 public class DoCreateVfModuleRollbackTest extends WorkflowTest {
\r 
  49         private final CallbackSet callbacks = new CallbackSet();
\r 
  51         private static final String EOL = "\n";
\r 
  53         private final String vnfAdapterDeleteCallback = 
\r 
  54                 "<deleteVfModuleResponse>" + EOL +
\r 
  55                 "    <vnfId>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnfId>" + EOL +
\r 
  56                 "    <vfModuleId>973ed047-d251-4fb9-bf1a-65b8949e0a73</vfModuleId>" + EOL +
\r 
  57                 "    <vfModuleDeleted>true</vfModuleDeleted>" + EOL +
\r 
  58                 "    <messageId>{{MESSAGE-ID}}</messageId>" + EOL +
\r 
  59                 "</deleteVfModuleResponse>" + EOL;
\r 
  61         private final String vnfAdapterDeleteCallbackFail = 
\r 
  62                         "<vfModuleException>" + EOL +
\r 
  63                         "    <message>Error processing request to VNF-Async. Not Found.</message>" + EOL +
\r 
  64                         "    <category>INTERNAL</category>" + EOL +
\r 
  65                         "    <rolledBack>false</rolledBack>" + EOL +
\r 
  66                         "    <messageId>{{MESSAGE-ID}}</messageId>" + EOL +
\r 
  67                         "</vfModuleException>" + EOL;
\r 
  69         private final String sdncAdapterDeleteCallback =
\r 
  70                 "<output xmlns=\"org:openecomp:sdnctl:l3api\">" + EOL +
\r 
  71                 "  <svc-request-id>{{REQUEST-ID}}</svc-request-id>" + EOL +
\r 
  72                 "  <ack-final-indicator>Y</ack-final-indicator>" + EOL +
\r 
  75         public DoCreateVfModuleRollbackTest() throws IOException {
\r 
  76                 callbacks.put("sdncChangeDelete", sdncAdapterDeleteCallback);
\r 
  77                 callbacks.put("sdncDelete", sdncAdapterDeleteCallback);
\r 
  78                 callbacks.put("vnfDelete", vnfAdapterDeleteCallback);
\r 
  79                 callbacks.put("vnfDeleteFail", vnfAdapterDeleteCallbackFail);
\r 
  84         @Deployment(resources = {
\r 
  85                         "subprocess/DoCreateVfModuleRollback.bpmn",
\r 
  86                         "subprocess/PrepareUpdateAAIVfModule.bpmn",
\r 
  87                         "subprocess/UpdateAAIVfModule.bpmn",
\r 
  88                         "subprocess/UpdateAAIGenericVnf.bpmn",
\r 
  89                         "subprocess/DeleteAAIVfModule.bpmn",
\r 
  90                         "subprocess/SDNCAdapterV1.bpmn",
\r 
  91                         "subprocess/VnfAdapterRestV1.bpmn"
\r 
  93         public void  TestCreateVfModuleRollbackSuccess() {
\r 
  96                 mockSDNCAdapter("/SDNCAdapter", "SvcAction>delete", 200, "DeleteGenericVNFV1/sdncAdapterResponse.xml");
\r 
  97                 mockVNFDelete("a27ce5a9-29c4-4c22-a017-6615ac73c721", "/973ed047-d251-4fb9-bf1a-65b8949e0a73", 202);
\r 
  98                 MockDeleteGenericVnf("a27ce5a9-29c4-4c22-a017-6615ac73c721", "0000021", 200);
\r 
  99                 MockDeleteVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73", "0000073", 200);
\r 
 100                 MockPutVfModuleIdNoResponse("a27ce5a9-29c4-4c22-a017-6615ac73c721", "MMSC", "973ed047-d251-4fb9-bf1a-65b8949e0a73");
\r 
 101                 MockPutGenericVnf("a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r 
 102                 MockGetGenericVnfByIdWithDepth("a27ce5a9-29c4-4c22-a017-6615ac73c721", 1, "DoCreateVfModuleRollback/GenericVnf.xml");
\r 
 103                 MockGetVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73", "DoCreateVfModuleRollback/GenericVnfVfModule.xml", 200);
\r 
 104                 MockPatchGenericVnf("a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r 
 105                 MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");
\r 
 107                 String businessKey = UUID.randomUUID().toString();
\r 
 108                 Map<String, Object> variables = new HashMap<String, Object>();
\r 
 109                 RollbackData rollbackData = new RollbackData();
\r 
 110                 rollbackData.put("VFMODULE", "source", "PORTAL");
\r 
 111                 rollbackData.put("VFMODULE", "vnfid", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r 
 112                 rollbackData.put("VFMODULE", "vnfname", "STMTN5MMSC21");
\r 
 113                 rollbackData.put("VFMODULE", "vnftype", "asc_heat-int");
\r 
 114                 rollbackData.put("VFMODULE", "vfmoduleid", "973ed047-d251-4fb9-bf1a-65b8949e0a73");
\r 
 115                 rollbackData.put("VFMODULE", "vfmodulename", "STMTN5MMSC21-MMSC::module-0-0");
\r 
 116                 rollbackData.put("VFMODULE", "tenantid", "fba1bd1e195a404cacb9ce17a9b2b421");
\r 
 117                 rollbackData.put("VFMODULE", "aiccloudregion", "RDM2WAGPLCP");
\r 
 118                 rollbackData.put("VFMODULE", "heatstackid", "thisisaheatstack");
\r 
 119                 rollbackData.put("VFMODULE", "contrailNetworkPolicyFqdn0", "MSOTest:DefaultPolicyFQDN1");
\r 
 120                 rollbackData.put("VFMODULE", "contrailNetworkPolicyFqdn1", "MSOTest:DefaultPolicyFQDN2");
\r 
 121                 rollbackData.put("VFMODULE", "oamManagementV6Address", "2000:abc:bce:1111");
\r 
 122                 rollbackData.put("VFMODULE", "oamManagementV4Address", "127.0.0.1");
\r 
 124                 rollbackData.put("VFMODULE", "rollbackPrepareUpdateVfModule", "true");
\r 
 125                 rollbackData.put("VFMODULE", "rollbackVnfAdapterCreate", "true");
\r 
 126                 rollbackData.put("VFMODULE", "rollbackUpdateAAIVfModule", "true");
\r 
 127                 rollbackData.put("VFMODULE", "rollbackSDNCRequestActivate", "true");
\r 
 128                 rollbackData.put("VFMODULE", "rollbackCreateAAIVfModule", "true");
\r 
 129                 rollbackData.put("VFMODULE", "rollbackCreateNetworkPoliciesAAI", "true");
\r 
 130                 rollbackData.put("VFMODULE", "rollbackUpdateVnfAAI", "true");
\r 
 134                 variables.put("isDebugLogEnabled","true");
\r 
 135                 variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r 
 136                 variables.put("mso-service-instance-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r 
 137                 rollbackData.put("VFMODULE", "msorequestid", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r 
 138                 rollbackData.put("VFMODULE", "serviceinstanceid", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r 
 139                 variables.put("rollbackData", rollbackData);
\r 
 140                 variables.put("sdncVersion", "1702");
\r 
 141                 invokeSubProcess("DoCreateVfModuleRollback", businessKey, variables);
\r 
 143                 // "changedelete" operation not required for deleting a Vf Module
\r 
 144 //              injectSDNCCallbacks(callbacks, "sdncChangeDelete");
\r 
 145                 injectVNFRestCallbacks(callbacks, "vnfDelete");
\r 
 146                 waitForRunningProcessCount("vnfAdapterDeleteV1", 0, 120000);
\r 
 147                 injectSDNCCallbacks(callbacks, "sdncDelete");
\r 
 149                 waitForProcessEnd(businessKey, 10000);
\r 
 150                 WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, "WorkflowException");
\r 
 151                 checkVariable(businessKey, "WorkflowException", null);
\r 
 153                         System.out.println("TestCreateVfModuleSuccess: ErrorCode=" + wfe.getErrorCode() +
\r 
 154                                         ", ErrorMessage=" + wfe.getErrorMessage());
\r