1 package org.openecomp.mso.bpmn.infrastructure;
\r
3 import static org.junit.Assert.assertEquals;
\r
4 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockAAIVfModule;
\r
5 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDBUpdateVfModule;
\r
6 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfById_404;
\r
7 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetServiceInstance;
\r
8 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockNodeQueryServiceInstanceById;
\r
9 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchGenericVnf;
\r
10 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchVfModuleId;
\r
11 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutGenericVnf;
\r
12 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockSDNCAdapterVfModule;
\r
13 import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;
\r
14 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockVNFAdapterRestVfModule;
\r
15 import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
\r
17 import java.io.IOException;
\r
18 import java.util.HashMap;
\r
19 import java.util.Map;
\r
20 import java.util.UUID;
\r
22 import org.camunda.bpm.engine.test.Deployment;
\r
23 import org.junit.Assert;
\r
24 import org.junit.Ignore;
\r
25 import org.junit.Test;
\r
26 import org.openecomp.mso.bpmn.common.BPMNUtil;
\r
27 import org.openecomp.mso.bpmn.common.WorkflowTest;
\r
28 import org.openecomp.mso.bpmn.core.domain.ModelInfo;
\r
29 import org.openecomp.mso.bpmn.core.domain.ModuleResource;
\r
30 import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition;
\r
31 import org.openecomp.mso.bpmn.core.domain.VnfResource;
\r
32 import org.openecomp.mso.bpmn.mock.FileUtil;
\r
35 * Unit Test for the DoCreateVnfAndModules Flow
\r
38 public class DoCreateVnfAndModulesTest extends WorkflowTest {
\r
40 private final CallbackSet callbacks = new CallbackSet();
\r
42 public DoCreateVnfAndModulesTest() throws IOException {
\r
44 callbacks.put("assign", FileUtil.readResourceFile(
\r
45 "__files/VfModularity/SDNCTopologyAssignCallback.xml"));
\r
46 callbacks.put("activate", FileUtil.readResourceFile(
\r
47 "__files/VfModularity/SDNCTopologyActivateCallback.xml"));
\r
48 callbacks.put("query", FileUtil.readResourceFile(
\r
49 "__files/VfModularity/SDNCTopologyQueryCallback.xml"));
\r
50 callbacks.put("queryVnf", FileUtil.readResourceFile(
\r
51 "__files/VfModularity/SDNCTopologyQueryCallbackVnf.xml"));
\r
52 callbacks.put("queryModuleNoVnf", FileUtil.readResourceFile(
\r
53 "__files/VfModularity/SDNCTopologyQueryCallbackVfModuleNoVnf.xml"));
\r
54 callbacks.put("queryModule", FileUtil.readResourceFile(
\r
55 "__files/VfModularity/SDNCTopologyQueryCallbackVfModule.xml"));
\r
56 callbacks.put("vnfCreate", FileUtil.readResourceFile(
\r
57 "__files/VfModularity/VNFAdapterRestCreateCallback.xml"));
\r
61 @Ignore // IGNORED FOR 1710 MERGE TO ONAP
\r
62 @Deployment(resources = {"subprocess/GenericGetService.bpmn",
\r
63 "subprocess/GenericGetVnf.bpmn",
\r
64 "subprocess/GenericPutVnf.bpmn",
\r
65 "subprocess/SDNCAdapterV1.bpmn",
\r
66 "subprocess/DoCreateVnf.bpmn",
\r
67 "subprocess/GenerateVfModuleName.bpmn",
\r
68 "subprocess/DoCreateVfModule.bpmn",
\r
69 "subprocess/DoCreateVnfAndModules.bpmn",
\r
70 "subprocess/GenericGetVnf.bpmn",
\r
71 "subprocess/SDNCAdapterV1.bpmn",
\r
72 "subprocess/VnfAdapterRestV1.bpmn",
\r
73 "subprocess/ConfirmVolumeGroupTenant.bpmn",
\r
74 "subprocess/ConfirmVolumeGroupName.bpmn",
\r
75 "subprocess/CreateAAIVfModule.bpmn",
\r
76 "subprocess/UpdateAAIVfModule.bpmn",
\r
77 "subprocess/CreateAAIVfModuleVolumeGroup.bpmn",
\r
78 "subprocess/UpdateAAIGenericVnf.bpmn",
\r
79 "subprocess/DoCreateVnfAndModulesRollback.bpmn"})
\r
80 public void testDoCreateVnfAndModulesBaseOnly_success() throws Exception{
\r
82 MockNodeQueryServiceInstanceById("MIS%2F1604%2F0026%2FSW_INTERNET", "GenericFlows/getSIUrlByIdVipr.xml");
\r
83 MockGetServiceInstance("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "GenericFlows/getServiceInstance.xml");
\r
84 MockGetGenericVnfById_404("testVnfId");
\r
85 MockPutGenericVnf(".*");
\r
87 MockPatchGenericVnf("skask");
\r
88 MockPatchVfModuleId("skask", ".*");
\r
89 mockSDNCAdapter("VfModularity/StandardSDNCSynchResponse.xml");
\r
90 MockVNFAdapterRestVfModule();
\r
91 MockDBUpdateVfModule();
\r
93 mockSDNCAdapter("VfModularity/StandardSDNCSynchResponse.xml");
\r
94 mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
\r
96 String businessKey = UUID.randomUUID().toString();
\r
97 Map<String, Object> variables = new HashMap<String, Object>();
\r
98 setVariablesSuccess(variables, "", "testRequestId123", "MIS%2F1604%2F0026%2FSW_INTERNET");
\r
99 invokeSubProcess("DoCreateVnfAndModules", businessKey, variables);
\r
101 injectSDNCCallbacks(callbacks, "assign");
\r
102 injectSDNCCallbacks(callbacks, "query");
\r
103 injectSDNCCallbacks(callbacks, "activate");
\r
104 injectSDNCCallbacks(callbacks, "queryVnf");
\r
105 injectSDNCCallbacks(callbacks, "assign, queryModuleNoVnf");
\r
106 injectVNFRestCallbacks(callbacks, "vnfCreate");
\r
107 injectSDNCCallbacks(callbacks, "activate");
\r
108 waitForProcessEnd(businessKey, 10000);
\r
110 Assert.assertTrue(isProcessEnded(businessKey));
\r
111 assertVariables("true", "true", "false", "true", "Success", null);
\r
116 @Ignore // IGNORED FOR 1710 MERGE TO ONAP
\r
117 @Deployment(resources = {"subprocess/GenericGetService.bpmn",
\r
118 "subprocess/GenericGetVnf.bpmn",
\r
119 "subprocess/GenericPutVnf.bpmn",
\r
120 "subprocess/SDNCAdapterV1.bpmn",
\r
121 "subprocess/DoCreateVnf.bpmn",
\r
122 "subprocess/GenerateVfModuleName.bpmn",
\r
123 "subprocess/DoCreateVfModule.bpmn",
\r
124 "subprocess/DoCreateVnfAndModules.bpmn",
\r
125 "subprocess/GenericGetVnf.bpmn",
\r
126 "subprocess/SDNCAdapterV1.bpmn",
\r
127 "subprocess/VnfAdapterRestV1.bpmn",
\r
128 "subprocess/ConfirmVolumeGroupTenant.bpmn",
\r
129 "subprocess/ConfirmVolumeGroupName.bpmn",
\r
130 "subprocess/CreateAAIVfModule.bpmn",
\r
131 "subprocess/UpdateAAIVfModule.bpmn",
\r
132 "subprocess/CreateAAIVfModuleVolumeGroup.bpmn",
\r
133 "subprocess/UpdateAAIGenericVnf.bpmn",
\r
134 "subprocess/DoCreateVnfAndModulesRollback.bpmn"})
\r
135 public void testDoCreateVnfAndModulesWithAddon_success() throws Exception{
\r
137 MockNodeQueryServiceInstanceById("MIS%2F1604%2F0026%2FSW_INTERNET", "GenericFlows/getSIUrlByIdVipr.xml");
\r
138 MockGetServiceInstance("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "GenericFlows/getServiceInstance.xml");
\r
139 MockGetGenericVnfById_404("testVnfId");
\r
140 MockPutGenericVnf(".*");
\r
142 MockPatchGenericVnf("skask");
\r
143 MockPatchVfModuleId("skask", ".*");
\r
144 mockSDNCAdapter("VfModularity/StandardSDNCSynchResponse.xml");
\r
145 MockVNFAdapterRestVfModule();
\r
146 MockDBUpdateVfModule();
\r
147 mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
\r
148 mockSDNCAdapter("VfModularity/StandardSDNCSynchResponse.xml");
\r
150 String businessKey = UUID.randomUUID().toString();
\r
151 Map<String, Object> variables = new HashMap<String, Object>();
\r
152 setVariablesAddonSuccess(variables, "", "testRequestId123", "MIS%2F1604%2F0026%2FSW_INTERNET");
\r
153 invokeSubProcess("DoCreateVnfAndModules", businessKey, variables);
\r
155 injectSDNCCallbacks(callbacks, "assign");
\r
156 injectSDNCCallbacks(callbacks, "query");
\r
157 injectSDNCCallbacks(callbacks, "activate");
\r
158 injectSDNCCallbacks(callbacks, "queryVnf");
\r
159 injectSDNCCallbacks(callbacks, "assign, queryModuleNoVnf");
\r
160 injectVNFRestCallbacks(callbacks, "vnfCreate");
\r
161 injectSDNCCallbacks(callbacks, "activate");
\r
162 injectSDNCCallbacks(callbacks, "queryVnf");
\r
163 injectSDNCCallbacks(callbacks, "assign, queryModuleNoVnf");
\r
164 injectVNFRestCallbacks(callbacks, "vnfCreate");
\r
165 injectSDNCCallbacks(callbacks, "activate");
\r
166 waitForProcessEnd(businessKey, 10000);
\r
168 Assert.assertTrue(isProcessEnded(businessKey));
\r
169 assertVariables("true", "true", "false", "true", "Success", null);
\r
173 private void assertVariables(String exSIFound, String exSISucc, String exVnfFound, String exVnfSucc, String exResponse, String exWorkflowException) {
\r
175 String siFound = BPMNUtil.getVariable(processEngineRule, "DoCreateVnf", "GENGS_FoundIndicator");
\r
176 String siSucc = BPMNUtil.getVariable(processEngineRule, "DoCreateVnf", "GENGS_SuccessIndicator");
\r
177 String vnfFound = BPMNUtil.getVariable(processEngineRule, "DoCreateVnf", "GENGV_FoundIndicator");
\r
178 String vnfSucc = BPMNUtil.getVariable(processEngineRule, "DoCreateVnf", "GENGV_SuccessIndicator");
\r
179 String response = BPMNUtil.getVariable(processEngineRule, "DoCreateVnf", "WorkflowResponse");
\r
180 String workflowException = BPMNUtil.getVariable(processEngineRule, "DoCreateVnf", "SavedWorkflowException1");
\r
182 //assertEquals(exSIFound, siFound);
\r
183 //assertEquals(exSISucc, siSucc);
\r
184 //assertEquals(exVnfFound, vnfFound);
\r
185 //assertEquals(exVnfSucc, vnfSucc);
\r
186 //assertEquals(exResponse, response);
\r
187 assertEquals(exWorkflowException, workflowException);
\r
190 private void setVariables(Map<String, String> variables, String request, String requestId, String siId) {
\r
191 variables.put("isDebugLogEnabled", "true");
\r
192 variables.put("bpmnRequest", request);
\r
193 variables.put("mso-request-id", requestId);
\r
194 variables.put("serviceInstanceId",siId);
\r
195 variables.put("testVnfId","testVnfId123");
\r
196 variables.put("vnfType", "STMTN");
\r
199 private void setVariablesSuccess(Map<String, Object> variables, String request, String requestId, String siId) {
\r
200 variables.put("isDebugLogEnabled", "true");
\r
201 variables.put("mso-request-id", requestId);
\r
202 variables.put("requestId", requestId);
\r
203 variables.put("msoRequestId", requestId);
\r
204 variables.put("serviceInstanceId",siId);
\r
205 variables.put("disableRollback", "true");
\r
206 //variables.put("testVnfId","testVnfId123");
\r
207 variables.put("vnfType", "STMTN");
\r
209 String serviceModelInfo = "{ "+ "\"modelType\": \"service\"," +
\r
210 "\"modelInvariantUuid\": \"995256d2-5a33-55df-13ab-12abad84e7ff\"," +
\r
211 "\"modelUuid\": \"ab6478e5-ea33-3346-ac12-ab121484a3fe\"," +
\r
212 "\"modelName\": \"ServicevSAMP12\"," +
\r
213 "\"modelVersion\": \"1.0\"," +
\r
215 variables.put("serviceModelInfo", serviceModelInfo);
\r
216 variables.put("productFamilyId", "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb");
\r
217 String vnfModelInfo = "{" + "\"modelType\": \"vnf\"," +
\r
218 "\"modelInvariantUuid\": \"ff5256d2-5a33-55df-13ab-12abad84e7ff\"," +
\r
219 "\"modelUuid\": \"fe6478e5-ea33-3346-ac12-ab121484a3fe\"," +
\r
220 "\"modelName\": \"vSAMP12\"," +
\r
221 "\"modelVersion\": \"1.0\"," +
\r
222 "\"modelCustomizationUuid\": \"MODEL-ID-1234\"" + "}";
\r
223 variables.put("vnfModelInfo", vnfModelInfo);
\r
225 String cloudConfiguration = "{" + "\"cloudConfiguration\": { " +
\r
226 "\"lcpCloudRegionId\": \"mdt1\"," +
\r
227 "\"tenantId\": \"88a6ca3ee0394ade9403f075db23167e\"" + "}}";
\r
228 variables.put("cloudConfiguration", cloudConfiguration);
\r
229 variables.put("sdncVersion", "1707");
\r
230 variables.put("globalSubscriberId", "subscriber123");
\r
233 String serviceDecomposition = FileUtil.readResourceFile("__files/VIPR/serviceDecompositionATMFW.json");
\r
234 ServiceDecomposition sd = new ServiceDecomposition();
\r
235 ModelInfo serviceModel = new ModelInfo();
\r
236 serviceModel.setModelName("servicewithVNFs");
\r
237 sd.setModelInfo(serviceModel);
\r
238 VnfResource vr = new VnfResource();
\r
239 ModelInfo mvr = new ModelInfo();
\r
240 mvr.setModelName("vSAMP12");
\r
241 mvr.setModelInstanceName("v123");
\r
242 mvr.setModelInvariantUuid("");
\r
243 mvr.setModelVersion("1.0");
\r
244 mvr.setModelCustomizationUuid("MODEL-ID-1234");
\r
245 vr.setModelInfo(mvr);
\r
246 vr.constructVnfType("vnf1");
\r
247 vr.setNfType("somenftype");
\r
248 vr.setNfRole("somenfrole");
\r
249 vr.setNfFunction("somenffunction");
\r
250 vr.setNfNamingCode("somenamingcode");
\r
251 ModuleResource mr = new ModuleResource();
\r
252 ModelInfo mvmr = new ModelInfo();
\r
253 mvmr.setModelInvariantUuid("ff5256d2-5a33-55df-13ab-12abad84e7ff");
\r
254 mvmr.setModelName("STMTN5MMSC21-MMSC::model-1-0");
\r
255 mvmr.setModelVersion("1");
\r
256 mvmr.setModelCustomizationUuid("MODEL-123");
\r
257 mr.setModelInfo(mvmr);
\r
258 mr.setIsBase(true);
\r
259 mr.setVfModuleLabel("MODULELABEL");
\r
260 vr.addVfModule(mr);
\r
261 sd.addVnfResource(vr);
\r
263 variables.put("serviceDecomposition", sd);
\r
264 variables.put("isTest", true);
\r
265 } catch(Exception e) {
\r
271 private void setVariablesAddonSuccess(Map<String, Object> variables, String request, String requestId, String siId) {
\r
272 variables.put("isDebugLogEnabled", "true");
\r
273 variables.put("mso-request-id", requestId);
\r
274 variables.put("requestId", requestId);
\r
275 variables.put("msoRequestId", requestId);
\r
276 variables.put("serviceInstanceId",siId);
\r
277 variables.put("disableRollback", "true");
\r
278 //variables.put("testVnfId","testVnfId123");
\r
279 variables.put("vnfType", "STMTN");
\r
281 String serviceModelInfo = "{ "+ "\"modelType\": \"service\"," +
\r
282 "\"modelInvariantUuid\": \"995256d2-5a33-55df-13ab-12abad84e7ff\"," +
\r
283 "\"modelUuid\": \"ab6478e5-ea33-3346-ac12-ab121484a3fe\"," +
\r
284 "\"modelName\": \"ServicevSAMP12\"," +
\r
285 "\"modelVersion\": \"1.0\"," +
\r
287 variables.put("serviceModelInfo", serviceModelInfo);
\r
288 variables.put("productFamilyId", "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb");
\r
289 String vnfModelInfo = "{" + "\"modelType\": \"vnf\"," +
\r
290 "\"modelInvariantUuid\": \"ff5256d2-5a33-55df-13ab-12abad84e7ff\"," +
\r
291 "\"modelUuid\": \"fe6478e5-ea33-3346-ac12-ab121484a3fe\"," +
\r
292 "\"modelName\": \"vSAMP12\"," +
\r
293 "\"modelVersion\": \"1.0\"," +
\r
294 "\"modelCustomizationUuid\": \"MODEL-ID-1234\"" + "}";
\r
295 variables.put("vnfModelInfo", vnfModelInfo);
\r
297 String cloudConfiguration = "{" + "\"cloudConfiguration\": { " +
\r
298 "\"lcpCloudRegionId\": \"mdt1\"," +
\r
299 "\"tenantId\": \"88a6ca3ee0394ade9403f075db23167e\"" + "}}";
\r
300 variables.put("cloudConfiguration", cloudConfiguration);
\r
301 variables.put("sdncVersion", "1707");
\r
302 variables.put("globalSubscriberId", "subscriber123");
\r
305 String serviceDecomposition = FileUtil.readResourceFile("__files/VIPR/serviceDecompositionATMFW.json");
\r
306 ServiceDecomposition sd = new ServiceDecomposition();
\r
307 ModelInfo serviceModel = new ModelInfo();
\r
308 serviceModel.setModelName("servicewithVNFs");
\r
309 sd.setModelInfo(serviceModel);
\r
310 VnfResource vr = new VnfResource();
\r
311 ModelInfo mvr = new ModelInfo();
\r
312 mvr.setModelName("vSAMP12");
\r
313 mvr.setModelInstanceName("v123");
\r
314 mvr.setModelInvariantUuid("");
\r
315 mvr.setModelVersion("1.0");
\r
316 mvr.setModelCustomizationUuid("MODEL-ID-1234");
\r
317 vr.setModelInfo(mvr);
\r
318 vr.setNfType("somenftype");
\r
319 vr.setNfRole("somenfrole");
\r
320 vr.setNfFunction("somenffunction");
\r
321 vr.setNfNamingCode("somenamingcode");
\r
322 ModuleResource mr = new ModuleResource();
\r
323 ModelInfo mvmr = new ModelInfo();
\r
324 mvmr.setModelInvariantUuid("ff5256d2-5a33-55df-13ab-12abad84e7ff");
\r
325 mvmr.setModelName("STMTN5MMSC21-MMSC::model-1-0");
\r
326 mvmr.setModelVersion("1");
\r
327 mvmr.setModelCustomizationUuid("MODEL-123");
\r
328 mr.setModelInfo(mvmr);
\r
329 mr.setIsBase(true);
\r
330 mr.setVfModuleLabel("MODULELABEL");
\r
331 vr.addVfModule(mr);
\r
332 ModuleResource mr1 = new ModuleResource();
\r
333 ModelInfo mvmr1 = new ModelInfo();
\r
334 mvmr1.setModelInvariantUuid("ff5256d2-5a33-55df-13ab-12abad84e7ff");
\r
335 mvmr1.setModelName("STMTN5MMSC21-MMSC::model-1-0");
\r
336 mvmr1.setModelVersion("1");
\r
337 mvmr1.setModelCustomizationUuid("MODEL-123");
\r
338 mr1.setModelInfo(mvmr1);
\r
339 mr1.setIsBase(false);
\r
340 mr1.setVfModuleLabel("MODULELABEL");
\r
341 mr1.setInitialCount(1);
\r
342 vr.addVfModule(mr1);
\r
344 sd.addVnfResource(vr);
\r
346 variables.put("serviceDecomposition", sd);
\r
347 variables.put("isTest", true);
\r
348 } catch(Exception e) {
\r