/*-
* ============LICENSE_START=======================================================
* ONAP - SO
* ================================================================================
* Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ============LICENSE_END=========================================================
*/
package org.openecomp.mso.bpmn.infrastructure;
import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDeleteGenericVnf;
import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDeleteVfModuleId;
import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfByIdWithDepth;
import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetVfModuleId;
import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchGenericVnf;
import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchVfModuleId;
import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutGenericVnf;
import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutVfModuleIdNoResponse;
import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;
import static org.openecomp.mso.bpmn.mock.StubResponseVNFAdapter.mockVNFDelete;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import org.camunda.bpm.engine.test.Deployment;
import org.junit.Test;
import org.openecomp.mso.bpmn.common.WorkflowTest;
import org.openecomp.mso.bpmn.core.RollbackData;
import org.openecomp.mso.bpmn.core.WorkflowException;
/**
* Unit test for DoDeleteVfModule.bpmn.
*/
public class DoCreateVfModuleRollbackTest extends WorkflowTest {
private final CallbackSet callbacks = new CallbackSet();
private static final String EOL = "\n";
private final String vnfAdapterDeleteCallback =
"" + EOL +
" a27ce5a9-29c4-4c22-a017-6615ac73c721" + EOL +
" 973ed047-d251-4fb9-bf1a-65b8949e0a73" + EOL +
" true" + EOL +
" {{MESSAGE-ID}}" + EOL +
"" + EOL;
private final String vnfAdapterDeleteCallbackFail =
"" + EOL +
" Error processing request to VNF-Async. Not Found." + EOL +
" INTERNAL" + EOL +
" false" + EOL +
" {{MESSAGE-ID}}" + EOL +
"" + EOL;
private final String sdncAdapterDeleteCallback =
"" + EOL;
public DoCreateVfModuleRollbackTest() throws IOException {
callbacks.put("sdncChangeDelete", sdncAdapterDeleteCallback);
callbacks.put("sdncDelete", sdncAdapterDeleteCallback);
callbacks.put("vnfDelete", vnfAdapterDeleteCallback);
callbacks.put("vnfDeleteFail", vnfAdapterDeleteCallbackFail);
}
@Test
@Deployment(resources = {
"subprocess/DoCreateVfModuleRollback.bpmn",
"subprocess/PrepareUpdateAAIVfModule.bpmn",
"subprocess/UpdateAAIVfModule.bpmn",
"subprocess/UpdateAAIGenericVnf.bpmn",
"subprocess/DeleteAAIVfModule.bpmn",
"subprocess/SDNCAdapterV1.bpmn",
"subprocess/VnfAdapterRestV1.bpmn"
})
public void TestCreateVfModuleRollbackSuccess() {
logStart();
mockSDNCAdapter("/SDNCAdapter", "SvcAction>delete", 200, "DeleteGenericVNFV1/sdncAdapterResponse.xml");
mockVNFDelete("a27ce5a9-29c4-4c22-a017-6615ac73c721", "/973ed047-d251-4fb9-bf1a-65b8949e0a73", 202);
MockDeleteGenericVnf("a27ce5a9-29c4-4c22-a017-6615ac73c721", "0000021", 200);
MockDeleteVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73", "0000073", 200);
MockPutVfModuleIdNoResponse("a27ce5a9-29c4-4c22-a017-6615ac73c721", "MMSC", "973ed047-d251-4fb9-bf1a-65b8949e0a73");
MockPutGenericVnf("a27ce5a9-29c4-4c22-a017-6615ac73c721");
MockGetGenericVnfByIdWithDepth("a27ce5a9-29c4-4c22-a017-6615ac73c721", 1, "DoCreateVfModuleRollback/GenericVnf.xml");
MockGetVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73", "DoCreateVfModuleRollback/GenericVnfVfModule.xml", 200);
MockPatchGenericVnf("a27ce5a9-29c4-4c22-a017-6615ac73c721");
MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", "973ed047-d251-4fb9-bf1a-65b8949e0a73");
String businessKey = UUID.randomUUID().toString();
Map variables = new HashMap<>();
RollbackData rollbackData = new RollbackData();
rollbackData.put("VFMODULE", "source", "PORTAL");
rollbackData.put("VFMODULE", "vnfid", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
rollbackData.put("VFMODULE", "vnfname", "STMTN5MMSC21");
rollbackData.put("VFMODULE", "vnftype", "asc_heat-int");
rollbackData.put("VFMODULE", "vfmoduleid", "973ed047-d251-4fb9-bf1a-65b8949e0a73");
rollbackData.put("VFMODULE", "vfmodulename", "STMTN5MMSC21-MMSC::module-0-0");
rollbackData.put("VFMODULE", "tenantid", "fba1bd1e195a404cacb9ce17a9b2b421");
rollbackData.put("VFMODULE", "aiccloudregion", "RDM2WAGPLCP");
rollbackData.put("VFMODULE", "heatstackid", "thisisaheatstack");
rollbackData.put("VFMODULE", "contrailNetworkPolicyFqdn0", "MSOTest:DefaultPolicyFQDN1");
rollbackData.put("VFMODULE", "contrailNetworkPolicyFqdn1", "MSOTest:DefaultPolicyFQDN2");
rollbackData.put("VFMODULE", "oamManagementV6Address", "2000:abc:bce:1111");
rollbackData.put("VFMODULE", "oamManagementV4Address", "127.0.0.1");
rollbackData.put("VFMODULE", "rollbackPrepareUpdateVfModule", "true");
rollbackData.put("VFMODULE", "rollbackVnfAdapterCreate", "true");
rollbackData.put("VFMODULE", "rollbackUpdateAAIVfModule", "true");
rollbackData.put("VFMODULE", "rollbackSDNCRequestActivate", "true");
rollbackData.put("VFMODULE", "rollbackCreateAAIVfModule", "true");
rollbackData.put("VFMODULE", "rollbackCreateNetworkPoliciesAAI", "true");
rollbackData.put("VFMODULE", "rollbackUpdateVnfAAI", "true");
variables.put("isDebugLogEnabled","true");
variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
variables.put("mso-service-instance-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
rollbackData.put("VFMODULE", "msorequestid", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
rollbackData.put("VFMODULE", "serviceinstanceid", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
variables.put("rollbackData", rollbackData);
variables.put("sdncVersion", "1702");
invokeSubProcess("DoCreateVfModuleRollback", businessKey, variables);
// "changedelete" operation not required for deleting a Vf Module
// injectSDNCCallbacks(callbacks, "sdncChangeDelete");
injectVNFRestCallbacks(callbacks, "vnfDelete");
waitForRunningProcessCount("vnfAdapterDeleteV1", 0, 120000);
injectSDNCCallbacks(callbacks, "sdncDelete");
waitForProcessEnd(businessKey, 10000);
WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, "WorkflowException");
checkVariable(businessKey, "WorkflowException", null);
if (wfe != null) {
System.out.println("TestCreateVfModuleSuccess: ErrorCode=" + wfe.getErrorCode() +
", ErrorMessage=" + wfe.getErrorMessage());
}
logEnd();
}
}