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<>();
\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