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.junit.Assert.assertEquals;
\r
24 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockAAIVfModule;
\r
25 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDBUpdateVfModule;
\r
26 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfByIdWithDepth;
\r
27 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfById_404;
\r
28 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetServiceInstance;
\r
29 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockNodeQueryServiceInstanceById;
\r
30 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchGenericVnf;
\r
31 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchVfModuleId;
\r
32 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutGenericVnf;
\r
33 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockSDNCAdapterVfModule;
\r
34 import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;
\r
35 import static org.openecomp.mso.bpmn.mock.StubResponseVNFAdapter.mockVNFPut;
\r
36 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockVNFAdapterRestVfModule;
\r
37 import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
\r
39 import java.io.IOException;
\r
40 import java.util.HashMap;
\r
41 import java.util.Map;
\r
42 import java.util.UUID;
\r
44 import org.camunda.bpm.engine.test.Deployment;
\r
45 import org.junit.Assert;
\r
46 import org.junit.Ignore;
\r
47 import org.junit.Test;
\r
48 import org.openecomp.mso.bpmn.common.BPMNUtil;
\r
49 import org.openecomp.mso.bpmn.common.WorkflowTest;
\r
50 import org.openecomp.mso.bpmn.core.domain.ModelInfo;
\r
51 import org.openecomp.mso.bpmn.core.domain.ModuleResource;
\r
52 import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition;
\r
53 import org.openecomp.mso.bpmn.core.domain.VnfResource;
\r
54 import org.openecomp.mso.bpmn.mock.FileUtil;
\r
57 * Unit Test for the DoUpdateVnfAndModules Flow
\r
60 public class DoUpdateVnfAndModulesTest extends WorkflowTest {
\r
62 private final CallbackSet callbacks = new CallbackSet();
\r
64 public DoUpdateVnfAndModulesTest() throws IOException {
\r
66 callbacks.put("changeassign", FileUtil.readResourceFile(
\r
67 "__files/VfModularity/SDNCTopologyChangeAssignCallback.xml"));
\r
68 callbacks.put("activate", FileUtil.readResourceFile(
\r
69 "__files/VfModularity/SDNCTopologyActivateCallback.xml"));
\r
70 callbacks.put("query", FileUtil.readResourceFile(
\r
71 "__files/VfModularity/SDNCTopologyQueryCallback.xml"));
\r
72 callbacks.put("vnfUpdate", FileUtil.readResourceFile(
\r
73 "__files/VfModularity/VNFAdapterRestUpdateCallback.xml"));
\r
78 @Deployment(resources = {
\r
79 "subprocess/SDNCAdapterV1.bpmn",
\r
80 "subprocess/PrepareUpdateAAIVfModule.bpmn",
\r
81 "subprocess/DoUpdateVfModule.bpmn",
\r
82 "subprocess/DoUpdateVnfAndModules.bpmn",
\r
83 "subprocess/VnfAdapterRestV1.bpmn",
\r
84 "subprocess/ConfirmVolumeGroupTenant.bpmn",
\r
85 "subprocess/UpdateAAIVfModule.bpmn",
\r
86 "subprocess/UpdateAAIGenericVnf.bpmn"})
\r
87 public void testDoUpdateVnfAndModules_success() throws Exception{
\r
89 MockNodeQueryServiceInstanceById("MIS%2F1604%2F0026%2FSW_INTERNET", "GenericFlows/getSIUrlByIdVipr.xml");
\r
90 MockGetServiceInstance("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "GenericFlows/getServiceInstance.xml");
\r
91 //MockGetGenericVnfById_404("testVnfId");
\r
92 MockGetGenericVnfByIdWithDepth("skask", 1, "VfModularity/GenericVnf.xml");
\r
93 MockPutGenericVnf(".*");
\r
95 MockPatchGenericVnf("skask");
\r
96 MockPatchVfModuleId("skask", ".*");
\r
97 mockSDNCAdapter("VfModularity/StandardSDNCSynchResponse.xml");
\r
98 mockVNFPut("skask", "/supercool", 202);
\r
99 mockVNFPut("skask", "/lukewarm", 202);
\r
100 MockVNFAdapterRestVfModule();
\r
101 MockDBUpdateVfModule();
\r
103 mockSDNCAdapter("VfModularity/StandardSDNCSynchResponse.xml");
\r
104 mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
\r
106 String businessKey = UUID.randomUUID().toString();
\r
107 Map<String, Object> variables = new HashMap<>();
\r
108 setVariablesSuccess(variables, "", "testRequestId123", "MIS%2F1604%2F0026%2FSW_INTERNET");
\r
109 invokeSubProcess("DoUpdateVnfAndModules", businessKey, variables);
\r
111 injectSDNCCallbacks(callbacks, "changeassign, query");
\r
112 injectVNFRestCallbacks(callbacks, "vnfUpdate");
\r
113 injectSDNCCallbacks(callbacks, "activate");
\r
114 injectSDNCCallbacks(callbacks, "changeassign, query");
\r
115 injectVNFRestCallbacks(callbacks, "vnfUpdate");
\r
116 injectSDNCCallbacks(callbacks, "activate");
\r
117 waitForProcessEnd(businessKey, 10000);
\r
119 Assert.assertTrue(isProcessEnded(businessKey));
\r
120 assertVariables("2", "200", null);
\r
126 private void assertVariables(String exModuleCount, String exVnfFound, String exWorkflowException) {
\r
128 String moduleCount = BPMNUtil.getVariable(processEngineRule, "DoUpdateVnfAndModules", "DUVAM_moduleCount");
\r
129 String vnfFound = BPMNUtil.getVariable(processEngineRule, "DoUpdateVnfAndModules", "DUVAM_queryAAIVfModuleResponseCode");
\r
130 String workflowException = BPMNUtil.getVariable(processEngineRule, "DoUpdateVnfAndModules", "SavedWorkflowException1");
\r
132 assertEquals(exModuleCount, moduleCount);
\r
133 assertEquals(exVnfFound, vnfFound);
\r
134 assertEquals(exWorkflowException, workflowException);
\r
137 private void setVariables(Map<String, String> variables, String request, String requestId, String siId) {
\r
138 variables.put("isDebugLogEnabled", "true");
\r
139 variables.put("bpmnRequest", request);
\r
140 variables.put("msoRequestUdid", requestId);
\r
141 variables.put("serviceInstanceId",siId);
\r
142 variables.put("testVnfId","testVnfId123");
\r
143 variables.put("vnfType", "STMTN");
\r
147 private void setVariablesSuccess(Map<String, Object> variables, String request, String requestId, String siId) {
\r
148 variables.put("isDebugLogEnabled", "true");
\r
149 variables.put("requestId", requestId);
\r
150 variables.put("msoRequestId", requestId);
\r
151 variables.put("serviceInstanceId",siId);
\r
152 variables.put("disableRollback", "true");
\r
153 //variables.put("testVnfId","testVnfId123");
\r
154 variables.put("vnfType", "STMTN");
\r
155 variables.put("vnfId", "skask");
\r
156 variables.put("tenantId", "88a6ca3ee0394ade9403f075db23167e");
\r
157 variables.put("lcpCloudRegionId", "mdt1");
\r
159 String serviceModelInfo = "{ "+ "\"modelType\": \"service\"," +
\r
160 "\"modelInvariantUuid\": \"995256d2-5a33-55df-13ab-12abad84e7ff\"," +
\r
161 "\"modelUuid\": \"ab6478e5-ea33-3346-ac12-ab121484a3fe\"," +
\r
162 "\"modelName\": \"ServicevSAMP12\"," +
\r
163 "\"modelVersion\": \"1.0\"," +
\r
165 variables.put("serviceModelInfo", serviceModelInfo);
\r
166 variables.put("productFamilyId", "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb");
\r
167 String vnfModelInfo = "{" + "\"modelType\": \"vnf\"," +
\r
168 "\"modelInvariantUuid\": \"ff5256d2-5a33-55df-13ab-12abad84e7ff\"," +
\r
169 "\"modelUuid\": \"fe6478e5-ea33-3346-ac12-ab121484a3fe\"," +
\r
170 "\"modelName\": \"vSAMP12\"," +
\r
171 "\"modelVersion\": \"1.0\"," +
\r
172 "\"modelCustomizationUuid\": \"MODEL-ID-1234\"" + "}";
\r
173 variables.put("vnfModelInfo", vnfModelInfo);
\r
175 String cloudConfiguration = "{" + "\"cloudConfiguration\": { " +
\r
176 "\"lcpCloudRegionId\": \"mdt1\"," +
\r
177 "\"tenantId\": \"88a6ca3ee0394ade9403f075db23167e\"" + "}}";
\r
178 variables.put("cloudConfiguration", cloudConfiguration);
\r
179 variables.put("sdncVersion", "1702");
\r
180 variables.put("globalSubscriberId", "subscriber123");
\r
181 variables.put("asdcServiceModelVersion", "serviceVersion01");
\r
184 VnfResource vr = new VnfResource();
\r
185 ModelInfo mvr = new ModelInfo();
\r
186 mvr.setModelName("vSAMP12");
\r
187 mvr.setModelInstanceName("v123");
\r
188 mvr.setModelInvariantUuid("extrovert");
\r
189 mvr.setModelVersion("1.0");
\r
190 mvr.setModelCustomizationUuid("MODEL-ID-1234");
\r
191 vr.setModelInfo(mvr);
\r
192 vr.constructVnfType("vnf1");
\r
193 vr.setNfType("somenftype");
\r
194 vr.setNfRole("somenfrole");
\r
195 vr.setNfFunction("somenffunction");
\r
196 vr.setNfNamingCode("somenamingcode");
\r
197 ModuleResource mr = new ModuleResource();
\r
198 ModelInfo mvmr = new ModelInfo();
\r
199 mvmr.setModelInvariantUuid("introvert");
\r
200 mvmr.setModelName("STMTN5MMSC21-MMSC::model-1-0");
\r
201 mvmr.setModelVersion("1");
\r
202 mvmr.setModelCustomizationUuid("MODEL-123");
\r
203 mr.setModelInfo(mvmr);
\r
204 mr.setIsBase(true);
\r
205 mr.setVfModuleLabel("MODULELABEL");
\r
206 vr.addVfModule(mr);
\r
207 ModuleResource mr1 = new ModuleResource();
\r
208 ModelInfo mvmr1 = new ModelInfo();
\r
209 mvmr1.setModelInvariantUuid("extrovert");
\r
210 mvmr1.setModelName("SECONDMODELNAME");
\r
211 mvmr1.setModelVersion("1");
\r
212 mvmr1.setModelCustomizationUuid("MODEL-123");
\r
213 mr1.setModelInfo(mvmr1);
\r
214 mr1.setIsBase(false);
\r
215 mr1.setVfModuleLabel("MODULELABEL1");
\r
216 vr.addVfModule(mr1);
\r
217 variables.put("vnfResourceDecomposition", vr);
\r
218 variables.put("isTest", true);
\r
219 } catch(Exception e) {
\r