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 
  24 import static org.openecomp.mso.bpmn.common.BPMNUtil.getRawVariable;
\r 
  25 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockAAIVfModule;
\r 
  26 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfByIdWithDepth;
\r 
  27 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfByIdWithPriority;
\r 
  28 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchGenericVnf;
\r 
  29 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchVfModuleId;
\r 
  30 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutGenericVnf;
\r 
  31 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutNetwork;
\r 
  32 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutVfModuleIdNoResponse;
\r 
  33 import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
\r 
  34 import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;
\r 
  35 import static org.openecomp.mso.bpmn.mock.StubResponseVNFAdapter.mockVNFPost;
\r 
  37 import java.io.IOException;
\r 
  38 import java.util.HashMap;
\r 
  39 import java.util.Map;
\r 
  40 import java.util.UUID;
\r 
  42 import org.camunda.bpm.engine.test.Deployment;
\r 
  43 import org.junit.Assert;
\r 
  44 import org.junit.Test;
\r 
  45 import org.openecomp.mso.bpmn.common.WorkflowTest;
\r 
  46 import org.openecomp.mso.bpmn.mock.FileUtil;
\r 
  49  * Unit tests for DoCreateVfModuleTest.bpmn.
\r 
  51 public class DoCreateVfModuleTest extends WorkflowTest {
\r 
  53         private final CallbackSet callbacks = new CallbackSet();
\r 
  55         public DoCreateVfModuleTest() throws IOException {
\r 
  56                 callbacks.put("assign", FileUtil.readResourceFile(
\r 
  57                         "__files/VfModularity/SDNCTopologyAssignCallback.xml"));
\r 
  58                 callbacks.put("query", FileUtil.readResourceFile(
\r 
  59                         "__files/VfModularity/SDNCTopologyQueryCallback.xml"));
\r 
  60                 callbacks.put("queryVnf", FileUtil.readResourceFile(
\r 
  61                                 "__files/VfModularity/SDNCTopologyQueryCallbackVnf.xml"));
\r 
  62                 callbacks.put("queryModuleNoVnf", FileUtil.readResourceFile(
\r 
  63                                 "__files/VfModularity/SDNCTopologyQueryCallbackVfModuleNoVnf.xml"));
\r 
  64                 callbacks.put("queryModule", FileUtil.readResourceFile(
\r 
  65                                 "__files/VfModularity/SDNCTopologyQueryCallbackVfModule.xml"));
\r 
  66                 callbacks.put("activate", FileUtil.readResourceFile(
\r 
  67                         "__files/VfModularity/SDNCTopologyActivateCallback.xml"));
\r 
  68                 callbacks.put("vnfCreate", FileUtil.readResourceFile(
\r 
  69                         "__files/VfModularity/VNFAdapterRestCreateCallback.xml"));
\r 
  73          * Test the sunny day scenario.
\r 
  77         @Deployment(resources = {
\r 
  78                         "subprocess/DoCreateVfModule.bpmn",
\r 
  79                         "subprocess/SDNCAdapterV1.bpmn",
\r 
  80                         "subprocess/GenericGetVnf.bpmn",
\r 
  81                         "subprocess/VnfAdapterRestV1.bpmn",
\r 
  82                         "subprocess/ConfirmVolumeGroupTenant.bpmn",
\r 
  83                         "subprocess/ConfirmVolumeGroupName.bpmn",
\r 
  84                         "subprocess/CreateAAIVfModule.bpmn",
\r 
  85                         "subprocess/UpdateAAIVfModule.bpmn",
\r 
  86                         "subprocess/CreateAAIVfModuleVolumeGroup.bpmn",
\r 
  87                         "subprocess/UpdateAAIGenericVnf.bpmn"
\r 
  89         public void sunnyDay() throws IOException {
\r 
  94                 MockPatchGenericVnf("skask");
\r 
  95                 MockPatchVfModuleId("skask", ".*");
\r 
  96                 mockSDNCAdapter("VfModularity/StandardSDNCSynchResponse.xml");
\r 
  97                 mockVNFPost("", 202, "skask");  
\r 
  98                 mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
\r 
 100                 String businessKey = UUID.randomUUID().toString();
\r 
 101                 //RuntimeService runtimeService = processEngineRule.getRuntimeService();                                
\r 
 103                 Map<String, Object> variables = setupVariablesSunnyDayBuildingBlocks();
\r 
 104                 //runtimeService.startProcessInstanceByKey("DoCreateVfModule", variables);
\r 
 105                 invokeSubProcess("DoCreateVfModule", businessKey, variables);
\r 
 107                 injectSDNCCallbacks(callbacks, "queryVnf");
\r 
 108                 injectSDNCCallbacks(callbacks, "assign, queryModuleNoVnf");
\r 
 109                 injectVNFRestCallbacks(callbacks, "vnfCreate");
\r 
 110                 injectSDNCCallbacks(callbacks, "activate");
\r 
 112                 waitForProcessEnd(businessKey, 10000);
\r 
 114                 Assert.assertTrue(isProcessEnded(businessKey));
\r 
 115                 Assert.assertTrue((boolean) getRawVariable(processEngineRule, "DoCreateVfModule", "DCVFM_SuccessIndicator"));
\r 
 121          * Test the sunny day scenario with 1702 SDNC interaction.
\r 
 125         @Deployment(resources = {
\r 
 126                         "subprocess/DoCreateVfModule.bpmn",
\r 
 127                         "subprocess/GenericGetVnf.bpmn",
\r 
 128                         "subprocess/SDNCAdapterV1.bpmn",
\r 
 129                         "subprocess/VnfAdapterRestV1.bpmn",
\r 
 130                         "subprocess/ConfirmVolumeGroupTenant.bpmn",
\r 
 131                         "subprocess/ConfirmVolumeGroupName.bpmn",
\r 
 132                         "subprocess/CreateAAIVfModule.bpmn",
\r 
 133                         "subprocess/UpdateAAIVfModule.bpmn",
\r 
 134                         "subprocess/CreateAAIVfModuleVolumeGroup.bpmn",
\r 
 135                         "subprocess/UpdateAAIGenericVnf.bpmn"
\r 
 137         public void sunnyDay_1702() throws IOException {
\r 
 141                 MockGetGenericVnfByIdWithPriority("skask", ".*", 200, "VfModularity/VfModule-new.xml", 5);
\r 
 142                 MockGetGenericVnfByIdWithDepth("skask", 1, "VfModularity/GenericVnf.xml");
\r 
 143                 MockPutVfModuleIdNoResponse("skask", "PCRF", ".*");
\r 
 144                 MockPutNetwork(".*", "VfModularity/AddNetworkPolicy_AAIResponse_Success.xml", 200);
\r 
 145                 MockPutGenericVnf("skask");
\r 
 146                 mockSDNCAdapter("/SDNCAdapter", "vnf-type>STMTN", 200, "VfModularity/StandardSDNCSynchResponse.xml");
\r 
 147                 mockSDNCAdapter("/SDNCAdapter", "SvcAction>query", 200, "VfModularity/StandardSDNCSynchResponse.xml");
\r 
 148                 mockVNFPost("", 202, "skask");
\r 
 149                 mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
\r 
 150                 MockPatchGenericVnf("skask");
\r 
 151                 MockPatchVfModuleId("skask", ".*");
\r 
 153                 String businessKey = UUID.randomUUID().toString();
\r 
 154                 //RuntimeService runtimeService = processEngineRule.getRuntimeService();                                
\r 
 156                 Map<String, Object> variables = setupVariablesSunnyDayBuildingBlocks();
\r 
 157                 variables.put("sdncVersion", "1702");
\r 
 158                 //runtimeService.startProcessInstanceByKey("DoCreateVfModule", variables);
\r 
 159                 invokeSubProcess("DoCreateVfModule", businessKey, variables);
\r 
 162                 injectSDNCCallbacks(callbacks, "assign, queryModule");
\r 
 163                 injectVNFRestCallbacks(callbacks, "vnfCreate");
\r 
 164                 injectSDNCCallbacks(callbacks, "activate");
\r 
 166                 waitForProcessEnd(businessKey, 10000);
\r 
 168                 Assert.assertTrue(isProcessEnded(businessKey));
\r 
 169                 Assert.assertTrue((boolean) getRawVariable(processEngineRule, "DoCreateVfModule", "DCVFM_SuccessIndicator"));
\r 
 175          * Test the sunny day scenario.
\r 
 179         @Deployment(resources = {
\r 
 180                         "subprocess/DoCreateVfModule.bpmn",
\r 
 181                         "subprocess/GenerateVfModuleName.bpmn",
\r 
 182                         "subprocess/GenericGetVnf.bpmn",
\r 
 183                         "subprocess/SDNCAdapterV1.bpmn",
\r 
 184                         "subprocess/VnfAdapterRestV1.bpmn",
\r 
 185                         "subprocess/ConfirmVolumeGroupTenant.bpmn",
\r 
 186                         "subprocess/ConfirmVolumeGroupName.bpmn",
\r 
 187                         "subprocess/CreateAAIVfModule.bpmn",
\r 
 188                         "subprocess/UpdateAAIVfModule.bpmn",
\r 
 189                         "subprocess/CreateAAIVfModuleVolumeGroup.bpmn",
\r 
 190                         "subprocess/UpdateAAIGenericVnf.bpmn"
\r 
 192         public void sunnyDay_withVfModuleNameGeneration() throws IOException {
\r 
 196                 MockGetGenericVnfByIdWithPriority("skask", ".*", 200, "VfModularity/VfModule-new.xml", 5);
\r 
 197                 MockGetGenericVnfByIdWithDepth("skask", 1, "VfModularity/GenericVnf.xml");
\r 
 198                 MockPutVfModuleIdNoResponse("skask", "PCRF", ".*");
\r 
 199                 MockPutNetwork(".*", "VfModularity/AddNetworkPolicy_AAIResponse_Success.xml", 200);
\r 
 200                 MockPutGenericVnf("skask");
\r 
 202                 mockSDNCAdapter("/SDNCAdapter", "vnf-type>STMTN", 200, "VfModularity/StandardSDNCSynchResponse.xml");
\r 
 203                 mockSDNCAdapter("/SDNCAdapter", "SvcAction>query", 200, "VfModularity/StandardSDNCSynchResponse.xml");
\r 
 204                 mockVNFPost("", 202, "skask");
\r 
 205                 mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
\r 
 206                 MockPatchGenericVnf("skask");
\r 
 207                 MockPatchVfModuleId("skask", ".*");
\r 
 209                 String businessKey = UUID.randomUUID().toString();
\r 
 210                 //RuntimeService runtimeService = processEngineRule.getRuntimeService();                                
\r 
 212                 Map<String, Object> variables = setupVariablesSunnyDayBuildingBlocks();
\r 
 213                 variables.put("vfModuleName", null);
\r 
 214                 variables.put("vfModuleLabel", "MODULELABEL");
\r 
 215                 variables.put("sdncVersion", "1702");
\r 
 216                 //runtimeService.startProcessInstanceByKey("DoCreateVfModule", variables);
\r 
 217                 invokeSubProcess("DoCreateVfModule", businessKey, variables);
\r 
 219                 injectSDNCCallbacks(callbacks, "assign, query");
\r 
 220                 injectVNFRestCallbacks(callbacks, "vnfCreate");
\r 
 221                 injectSDNCCallbacks(callbacks, "activate");
\r 
 223                 waitForProcessEnd(businessKey, 10000);
\r 
 225                 Assert.assertTrue(isProcessEnded(businessKey));
\r 
 226                 Assert.assertTrue((boolean) getRawVariable(processEngineRule, "DoCreateVfModule", "DCVFM_SuccessIndicator"));
\r 
 232         private Map<String, Object> setupVariablesSunnyDayBuildingBlocks() {
\r 
 233                 Map<String, Object> variables = new HashMap<String, Object>();
\r 
 235                 //      variables.put("bpmnRequest", FileUtil.readResourceFile("__files/CreateVfModule_VID_request.json"));
\r 
 237                 //catch (Exception e) {
\r 
 241                 variables.put("mso-request-id", "testRequestId");
\r 
 243                 variables.put("msoRequestId", "testRequestId");         
\r 
 244                 variables.put("isBaseVfModule", false);
\r 
 245                 variables.put("isDebugLogEnabled", "true");
\r 
 246                 variables.put("disableRollback", "true");
\r 
 247                 //variables.put("recipeTimeout", "0");          
\r 
 248                 //variables.put("requestAction", "CREATE_VF_MODULE");
\r 
 249                 variables.put("serviceInstanceId", "f70e927b-6087-4974-9ef8-c5e4d5847ca4");
\r 
 250                 variables.put("vnfId", "skask");
\r 
 251                 variables.put("vnfName", "vnfname");
\r 
 252                 variables.put("vfModuleName", "PCRF::module-0-2");
\r 
 253                 variables.put("vnfType", "vSAMP12");
\r 
 254                 variables.put("vfModuleId", "");
\r 
 255                 variables.put("volumeGroupId", "");                     
\r 
 256                 variables.put("serviceType", "MOG");    
\r 
 257                 variables.put("vfModuleType", "");
\r 
 258                 variables.put("isVidRequest", "true");
\r 
 259                 variables.put("asdcServiceModelVersion", "1.0");
\r 
 260                 variables.put("usePreload", true);
\r 
 262                 String vfModuleModelInfo = "{ "+ "\"modelType\": \"vfModule\"," +
\r 
 263                         "\"modelInvariantUuid\": \"ff5256d2-5a33-55df-13ab-12abad84e7ff\"," + 
\r 
 264                         "\"modelUuid\": \"fe6478e5-ea33-3346-ac12-ab121484a3fe\"," +
\r 
 265                         "\"modelName\": \"STMTN5MMSC21-MMSC::model-1-0\"," +
\r 
 266                         "\"modelVersion\": \"1\"," + 
\r 
 267                         "\"modelCustomizationUuid\": \"MODEL-123\"" + "}";
\r 
 268                 variables.put("vfModuleModelInfo", vfModuleModelInfo);
\r 
 270                 variables.put("sdncVersion", "1707");
\r 
 272                 variables.put("lcpCloudRegionId", "MDTWNJ21");
\r 
 273                 variables.put("tenantId", "fba1bd1e195a404cacb9ce17a9b2b421");          
\r 
 275                 String serviceModelInfo = "{ "+ "\"modelType\": \"service\"," +
\r 
 276                                 "\"modelInvariantUuid\": \"aa5256d2-5a33-55df-13ab-12abad84e7ff\"," + 
\r 
 277                                 "\"modelUuid\": \"bb6478e5-ea33-3346-ac12-ab121484a3fe\"," +
\r 
 278                                 "\"modelName\": \"SVC-STMTN5MMSC21-MMSC::model-1-0\"," +
\r 
 279                                 "\"modelVersion\": \"1\"," + 
\r 
 281                 variables.put("serviceModelInfo", serviceModelInfo);
\r 
 283                 String vnfModelInfo = "{ "+ "\"modelType\": \"vnf\"," +
\r 
 284                                         "\"modelInvariantUuid\": \"445256d2-5a33-55df-13ab-12abad84e7ff\"," + 
\r 
 285                                         "\"modelUuid\": \"f26478e5-ea33-3346-ac12-ab121484a3fe\"," +
\r 
 286                                         "\"modelName\": \"VNF-STMTN5MMSC21-MMSC::model-1-0\"," +
\r 
 287                                         "\"modelVersion\": \"1\"," + 
\r 
 288                                         "\"modelCustomizationUuid\": \"VNF-MODEL-123\"" + "}";
\r 
 289                 variables.put("vnfModelInfo", vnfModelInfo);
\r 
 291                 variables.put("vnfQueryPath", "/restconf/vnfQueryPath");
\r