/* * ============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.onap.so.bpmn.vcpe; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.onap.so.bpmn.common.BPMNUtil.waitForWorkflowToFinish; import static org.onap.so.bpmn.mock.StubResponseAAI.MockGetAllottedResource; import static org.onap.so.bpmn.mock.StubResponseAAI.MockGetServiceInstance; import static org.onap.so.bpmn.mock.StubResponseAAI.MockNodeQueryServiceInstanceById; import static org.onap.so.bpmn.mock.StubResponseAAI.MockPatchAllottedResource; import static org.onap.so.bpmn.mock.StubResponseAAI.MockPutAllottedResource; import static org.onap.so.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB; import static org.onap.so.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter; 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.Assert; import org.junit.Ignore; import org.junit.Test; import org.onap.so.bpmn.common.BPMNUtil; import org.onap.so.bpmn.mock.FileUtil; public class DoCreateAllottedResourceTXCIT extends AbstractTestBase { private static final String PROCNAME = "DoCreateAllottedResourceTXC"; private final CallbackSet callbacks = new CallbackSet(); public DoCreateAllottedResourceTXCIT() throws IOException { callbacks.put("assign", FileUtil.readResourceFile("__files/VfModularity/SDNCTopologyAssignCallback.xml")); callbacks.put("create", FileUtil.readResourceFile("__files/VfModularity/SDNCTopologyCreateCallback.xml")); callbacks.put("activate", FileUtil.readResourceFile("__files/VfModularity/SDNCTopologyActivateCallback.xml")); callbacks.put("query", FileUtil.readResourceFile("__files/VCPE/DoCreateAllottedResourceTXC/SDNCTopologyQueryCallback.xml")); } @Test public void testDoCreateAllottedResourceTXC_Success() throws Exception{ logStart(); // TODO: use INST instead of DEC_INST /* * should be INST instead of DEC_INST, but AAI utilities appear to * have a bug in that they don't URL-encode the SI id before using * it in the query */ MockNodeQueryServiceInstanceById(DEC_INST, "GenericFlows/getSIUrlById.xml"); MockNodeQueryServiceInstanceById(DEC_PARENT_INST, "GenericFlows/getParentSIUrlById.xml"); MockGetServiceInstance(CUST, SVC, INST, "GenericFlows/getServiceInstance.xml"); MockGetServiceInstance(CUST, SVC, PARENT_INST, "GenericFlows/getParentServiceInstance.xml"); MockPutAllottedResource(CUST, SVC, PARENT_INST, ARID); MockPatchAllottedResource(CUST, SVC, PARENT_INST, ARID); mockSDNCAdapter(200); mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml"); Map variables = new HashMap<>(); setVariablesSuccess(variables, "testRequestId123"); String processId = invokeSubProcess(PROCNAME, variables); injectSDNCCallbacks(callbacks, "assign"); injectSDNCCallbacks(callbacks, "create"); injectSDNCCallbacks(callbacks, "activate"); injectSDNCCallbacks(callbacks, "query"); waitForWorkflowToFinish(processEngine,processId); assertTrue(isProcessEndedByProcessInstanceId(processId)); String workflowException = BPMNUtil.getVariable(processEngine, PROCNAME, VAR_WFEX,processId); assertEquals(null, workflowException); assertEquals("namefromrequest", BPMNUtil.getVariable(processEngine, PROCNAME, "allotedResourceName",processId)); assertEquals("my-vni", BPMNUtil.getVariable(processEngine, PROCNAME, "vni",processId)); assertEquals("my-bearer-ip", BPMNUtil.getVariable(processEngine, PROCNAME, "vgmuxBearerIP",processId)); assertEquals("my-lan-ip", BPMNUtil.getVariable(processEngine, PROCNAME, "vgmuxLanIP",processId)); logEnd(); } @Test public void testDoCreateAllottedResourceTXC_NoSI() throws Exception{ logStart(); // TODO: use INST instead of DEC_INST /* * should be INST instead of DEC_INST, but AAI utilities appear to * have a bug in that they don't URL-encode the SI id before using * it in the query */ MockNodeQueryServiceInstanceById(DEC_INST, "GenericFlows/getNotFound.xml"); MockNodeQueryServiceInstanceById(DEC_PARENT_INST, "GenericFlows/getParentSIUrlById.xml"); MockGetServiceInstance(CUST, SVC, INST, "GenericFlows/getServiceInstance.xml"); MockGetServiceInstance(CUST, SVC, PARENT_INST, "GenericFlows/getParentServiceInstance.xml"); MockPutAllottedResource(CUST, SVC, PARENT_INST, ARID); MockPatchAllottedResource(CUST, SVC, PARENT_INST, ARID); mockSDNCAdapter(200); mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml"); Map variables = new HashMap<>(); setVariablesSuccess(variables, "testRequestId123"); String processId = invokeSubProcess(PROCNAME, variables); waitForWorkflowToFinish(processEngine,processId); Assert.assertTrue(isProcessEndedByProcessInstanceId(processId)); String workflowException = BPMNUtil.getVariable(processEngine, PROCNAME, VAR_WFEX,processId); assertNotNull(workflowException); assertEquals(null, BPMNUtil.getVariable(processEngine, PROCNAME, "allotedResourceName",processId)); logEnd(); } @Test public void testDoCreateAllottedResourceTXC_ActiveAr() throws Exception{ logStart(); // TODO: use INST instead of DEC_INST /* * should be INST instead of DEC_INST, but AAI utilities appear to * have a bug in that they don't URL-encode the SI id before using * it in the query */ MockNodeQueryServiceInstanceById(DEC_INST, "GenericFlows/getSIUrlById.xml"); MockNodeQueryServiceInstanceById(DEC_PARENT_INST, "GenericFlows/getParentSIUrlById.xml"); MockGetServiceInstance(CUST, SVC, INST, "VCPE/DoCreateAllottedResourceTXC/getSIandAR.xml"); MockGetAllottedResource(CUST, SVC, INST, ARID, "VCPE/DoCreateAllottedResourceTXC/getArTxc2.xml"); MockGetServiceInstance(CUST, SVC, PARENT_INST, "GenericFlows/getParentServiceInstance.xml"); MockPutAllottedResource(CUST, SVC, PARENT_INST, ARID); MockPatchAllottedResource(CUST, SVC, PARENT_INST, ARID); mockSDNCAdapter(200); mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml"); Map variables = new HashMap<>(); setVariablesSuccess(variables, "testRequestId123"); variables.put("failExists", "false"); String processId = invokeSubProcess(PROCNAME, variables); injectSDNCCallbacks(callbacks, "query"); waitForWorkflowToFinish(processEngine,processId); assertTrue(isProcessEndedByProcessInstanceId(processId)); String workflowException = BPMNUtil.getVariable(processEngine, PROCNAME, VAR_WFEX); assertEquals(null, workflowException); assertEquals("namefromrequest", BPMNUtil.getVariable(processEngine, PROCNAME, "allotedResourceName",processId)); assertEquals("my-vni", BPMNUtil.getVariable(processEngine, PROCNAME, "vni",processId)); assertEquals("my-bearer-ip", BPMNUtil.getVariable(processEngine, PROCNAME, "vgmuxBearerIP",processId)); assertEquals("my-lan-ip", BPMNUtil.getVariable(processEngine, PROCNAME, "vgmuxLanIP",processId)); logEnd(); } @Test public void testDoCreateAllottedResourceTXC_NoParentSI() throws Exception{ logStart(); // TODO: use INST instead of DEC_INST /* * should be INST instead of DEC_INST, but AAI utilities appear to * have a bug in that they don't URL-encode the SI id before using * it in the query */ MockNodeQueryServiceInstanceById(DEC_INST, "GenericFlows/getSIUrlById.xml"); MockNodeQueryServiceInstanceById(DEC_PARENT_INST, "GenericFlows/getNotFound.xml"); MockGetServiceInstance(CUST, SVC, INST, "GenericFlows/getServiceInstance.xml"); MockGetServiceInstance(CUST, SVC, PARENT_INST, "GenericFlows/getParentServiceInstance.xml"); MockPutAllottedResource(CUST, SVC, PARENT_INST, ARID); MockPatchAllottedResource(CUST, SVC, PARENT_INST, ARID); mockSDNCAdapter(200); mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml"); Map variables = new HashMap<>(); setVariablesSuccess(variables, "testRequestId123"); String processId = invokeSubProcess(PROCNAME, variables); waitForWorkflowToFinish(processEngine,processId); assertTrue(isProcessEndedByProcessInstanceId(processId)); String workflowException = BPMNUtil.getVariable(processEngine, PROCNAME, VAR_WFEX,processId); assertNotNull(workflowException); assertEquals(null, BPMNUtil.getVariable(processEngine, PROCNAME, "allotedResourceName",processId)); logEnd(); } @Test public void testDoCreateAllottedResourceTXC_SubProcessError() throws Exception{ logStart(); // TODO: use INST instead of DEC_INST /* * should be INST instead of DEC_INST, but AAI utilities appear to * have a bug in that they don't URL-encode the SI id before using * it in the query */ MockNodeQueryServiceInstanceById(DEC_INST, "GenericFlows/getSIUrlById.xml"); MockNodeQueryServiceInstanceById(DEC_PARENT_INST, "GenericFlows/getParentSIUrlById.xml"); MockGetServiceInstance(CUST, SVC, INST, "GenericFlows/getServiceInstance.xml"); MockGetServiceInstance(CUST, SVC, PARENT_INST, "GenericFlows/getParentServiceInstance.xml"); MockPutAllottedResource(CUST, SVC, PARENT_INST, ARID); MockPatchAllottedResource(CUST, SVC, PARENT_INST, ARID); mockSDNCAdapter(404); mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml"); Map variables = new HashMap<>(); setVariablesSuccess(variables, "testRequestId123"); String processId = invokeSubProcess(PROCNAME, variables); waitForWorkflowToFinish(processEngine,processId); assertTrue(isProcessEndedByProcessInstanceId(processId)); String workflowException = BPMNUtil.getVariable(processEngine, PROCNAME, VAR_WFEX,processId); assertNotNull(workflowException); assertEquals(null, BPMNUtil.getVariable(processEngine, PROCNAME, "allotedResourceName",processId)); logEnd(); } private void setVariablesSuccess(Map variables, String requestId) { // TODO: need all of these? variables.put("isDebugLogEnabled", "true"); variables.put("failExists", "true"); variables.put("disableRollback", "true"); variables.put("msoRequestId", requestId); variables.put("mso-request-id", "requestId"); variables.put("sourceNetworkId", "snId"); variables.put("sourceNetworkRole", "snRole"); variables.put("allottedResourceRole", "brg"); variables.put("allottedResourceType", "TXC"); variables.put("allottedResourceId", ARID); variables.put("brgWanMacAddress", "wanmac"); variables.put("serviceInstanceId", DEC_INST); variables.put("parentServiceInstanceId", DEC_PARENT_INST); variables.put("serviceChainServiceInstanceId", "scsiId"); String arModelInfo = "{ "+ "\"modelType\": \"allotted-resource\"," + "\"modelInvariantUuid\": \"ff5256d2-5a33-55df-13ab-12abad84e7ff\"," + "\"modelUuid\": \"fe6478e5-ea33-3346-ac12-ab121484a3fe\"," + "\"modelName\": \"vSAMP12\"," + "\"modelVersion\": \"1.0\"," + "\"modelCustomizationUuid\": \"MODEL-ID-1234\"," + "}"; variables.put("allottedResourceModelInfo", arModelInfo); } }