2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.onap.so.bpmn.common;
24 import org.junit.Ignore;
25 import org.junit.Test;
26 import org.onap.so.BaseIntegrationTest;
27 import org.onap.so.bpmn.core.WorkflowException;
28 import org.onap.so.bpmn.core.domain.AllottedResource;
29 import org.onap.so.bpmn.core.domain.CloudFlavor;
30 import org.onap.so.bpmn.core.domain.HomingSolution;
31 import org.onap.so.bpmn.core.domain.ModelInfo;
32 import org.onap.so.bpmn.core.domain.NetworkResource;
33 import org.onap.so.bpmn.core.domain.Resource;
34 import org.onap.so.bpmn.core.domain.ServiceDecomposition;
35 import org.onap.so.bpmn.core.domain.ServiceInstance;
36 import org.onap.so.bpmn.core.domain.VnfResource;
37 import org.onap.so.bpmn.mock.FileUtil;
38 import org.onap.so.logger.MsoLogger;
40 import java.io.IOException;
41 import java.util.ArrayList;
42 import java.util.HashMap;
43 import java.util.List;
45 import java.util.UUID;
47 import static org.junit.Assert.assertEquals;
48 import static org.junit.Assert.assertNull;
49 import static org.onap.so.bpmn.mock.StubResponseDatabase.MockGetServiceResourcesCatalogDataByModelUuid;
50 import static org.onap.so.bpmn.mock.StubResponseOof.mockOof;
51 import static org.onap.so.bpmn.mock.StubResponseOof.mockOof_500;
55 * Test the OOF Homing subflow building block.
58 public class OofHomingTestIT extends BaseIntegrationTest {
60 MsoLogger logger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL,CreateAAIVfModuleIT.class);
62 ServiceDecomposition serviceDecomposition = new ServiceDecomposition();
63 String subscriber = "";
64 String subscriber2 = "";
66 private final CallbackSet callbacks = new CallbackSet();
68 public OofHomingTestIT() throws IOException {
69 String oofCallback = FileUtil.readResourceFile("__files/BuildingBlocks/oofCallbackInfraVnf");
70 String oofCallback2 = FileUtil.readResourceFile("__files/BuildingBlocks/oofCallback2AR1Vnf");
71 String oofCallback3 = FileUtil.readResourceFile("__files/BuildingBlocks/oofCallback2AR1Vnf2Net");
73 String oofCallbackNoSolution = FileUtil.
74 readResourceFile("__files/BuildingBlocks/oofCallbackNoSolutionFound");
75 String oofCallbackPolicyException = FileUtil.
76 readResourceFile("__files/BuildingBlocks/oofCallbackPolicyException");
77 String oofCallbackServiceException = FileUtil.
78 readResourceFile("__files/BuildingBlocks/oofCallbackServiceException");
80 callbacks.put("oof", JSON, "oofResponse", oofCallback);
81 callbacks.put("oof2", JSON, "oofResponse", oofCallback2);
82 callbacks.put("oof3", JSON, "oofResponse", oofCallback3);
83 callbacks.put("oofNoSol", JSON, "oofResponse", oofCallbackNoSolution);
84 callbacks.put("oofPolicyEx", JSON, "oofResponse", oofCallbackPolicyException);
85 callbacks.put("oofServiceEx", JSON, "oofResponse", oofCallbackServiceException);
88 ModelInfo sModel = new ModelInfo();
89 sModel.setModelCustomizationName("testModelCustomizationName");
90 sModel.setModelInstanceName("testModelInstanceName");
91 sModel.setModelInvariantUuid("testModelInvariantId");
92 sModel.setModelName("testModelName");
93 sModel.setModelUuid("testModelUuid");
94 sModel.setModelVersion("testModelVersion");
96 ServiceInstance si = new ServiceInstance();
97 si.setInstanceId("testServiceInstanceId123");
99 List<AllottedResource> arList = new ArrayList<AllottedResource>();
100 AllottedResource ar = new AllottedResource();
101 ar.setResourceId("testResourceIdAR");
102 ar.setResourceInstanceName("testARInstanceName");
103 ModelInfo arModel = new ModelInfo();
104 arModel.setModelCustomizationUuid("testModelCustomizationUuidAR");
105 arModel.setModelInvariantUuid("testModelInvariantIdAR");
106 arModel.setModelName("testModelNameAR");
107 arModel.setModelVersion("testModelVersionAR");
108 arModel.setModelUuid("testARModelUuid");
109 arModel.setModelType("testModelTypeAR");
110 ar.setModelInfo(arModel);
111 AllottedResource ar2 = new AllottedResource();
112 ar2.setResourceId("testResourceIdAR2");
113 ar2.setResourceInstanceName("testAR2InstanceName");
114 ModelInfo arModel2 = new ModelInfo();
115 arModel2.setModelCustomizationUuid("testModelCustomizationUuidAR2");
116 arModel2.setModelInvariantUuid("testModelInvariantIdAR2");
117 arModel2.setModelName("testModelNameAR2");
118 arModel2.setModelVersion("testModelVersionAR2");
119 arModel2.setModelUuid("testAr2ModelUuid");
120 arModel2.setModelType("testModelTypeAR2");
121 ar2.setModelInfo(arModel2);
125 List<VnfResource> vnfList = new ArrayList<VnfResource>();
126 VnfResource vnf = new VnfResource();
127 vnf.setResourceId("testResourceIdVNF");
128 vnf.setResourceInstanceName("testVnfInstanceName");
129 ArrayList<CloudFlavor> flavors = new ArrayList<>();
130 CloudFlavor flavor1 = new CloudFlavor("flavorLabel1xxx", "vimFlavorxxx");
131 CloudFlavor flavor2 = new CloudFlavor("flavorLabel2xxx", "vimFlavorxxx");
132 flavors.add(flavor1);
133 flavors.add(flavor2);
134 vnf.getHomingSolution().setFlavors(flavors);
135 ModelInfo vnfModel = new ModelInfo();
136 vnfModel.setModelCustomizationUuid("testModelCustomizationUuidVNF");
137 vnfModel.setModelInvariantUuid("testModelInvariantIdVNF");
138 vnfModel.setModelName("testModelNameVNF");
139 vnfModel.setModelVersion("testModelVersionVNF");
140 vnfModel.setModelUuid("testVnfModelUuid");
141 vnfModel.setModelType("testModelTypeVNF");
142 vnf.setModelInfo(vnfModel);
144 logger.debug("SERVICE DECOMP: " + serviceDecomposition.getServiceResourcesJsonString());
145 serviceDecomposition.setModelInfo(sModel);
146 serviceDecomposition.setAllottedResources(arList);
147 serviceDecomposition.setVnfResources(vnfList);
148 serviceDecomposition.setServiceInstance(si);
151 subscriber = "{\"globalSubscriberId\": \"SUB12_0322_DS_1201\",\"subscriberCommonSiteId\": \"DALTX0101\",\"subscriberName\": \"SUB_12_0322_DS_1201\"}";
152 subscriber2 = "{\"globalSubscriberId\": \"SUB12_0322_DS_1201\",\"subscriberName\": \"SUB_12_0322_DS_1201\"}";
157 public void testHoming_success_2AR1Vnf() throws Exception {
161 String businessKey = UUID.randomUUID().toString();
162 Map<String, Object> variables = new HashMap<>();
163 setVariables(variables);
165 invokeSubProcess("Homing", businessKey, variables);
167 injectWorkflowMessages(callbacks, "oof2");
169 waitForProcessEnd(businessKey, 10000);
172 WorkflowException workflowException = (WorkflowException) getVariableFromHistory(businessKey,
173 "WorkflowException");
174 ServiceDecomposition serviceDecompositionExp = (ServiceDecomposition) getVariableFromHistory(businessKey,
175 "serviceDecomposition");
176 String expectedOofRequest = (String) getVariableFromHistory(businessKey, "oofRequest");
178 Resource resourceAR = serviceDecompositionExp.getServiceResource("testResourceIdAR");
179 HomingSolution resourceARHoming = resourceAR.getHomingSolution();
180 Resource resourceAR2 = serviceDecompositionExp.getServiceResource("testResourceIdAR2");
181 HomingSolution resourceARHoming2 = resourceAR2.getHomingSolution();
182 Resource resourceVNF = serviceDecompositionExp.getServiceResource("testResourceIdVNF");
183 HomingSolution resourceVNFHoming = resourceVNF.getHomingSolution();
184 String resourceARHomingString = resourceARHoming.toString();
185 resourceARHomingString = resourceARHomingString.replaceAll("\\s+", " ");
186 String resourceARHoming2String = resourceARHoming2.toString();
187 resourceARHoming2String = resourceARHoming2String.replaceAll("\\s+", " ");
188 String resourceVNFHomingString = resourceVNFHoming.toString();
189 resourceVNFHomingString = resourceVNFHomingString.replaceAll("\\s+", " ");
190 expectedOofRequest = expectedOofRequest.replaceAll("\\s+", "");
192 assertNull(workflowException);
193 assertEquals(homingSolutionService("service", "testSIID1", "MDTNJ01",
194 resourceARHoming.getVnf().getResourceId(),"aic", "dfwtx",
195 "\"f1d563e8-e714-4393-8f99-cc480144a05e\", \"j1d563e8-e714-4393-8f99-cc480144a05e\"",
196 "\"s1d563e8-e714-4393-8f99-cc480144a05e\", \"b1d563e8-e714-4393-8f99-cc480144a05e\""),
197 resourceARHomingString);
198 assertEquals(homingSolutionService("service", "testSIID2", "testVnfHostname2",
199 resourceARHoming2.getVnf().getResourceId(),"aic", "testCloudRegionId2",
200 null, null), resourceARHoming2String);
201 assertEquals(homingSolutionCloud("cloud","aic", "testCloudRegionId3",
202 true, "\"91d563e8-e714-4393-8f99-cc480144a05e\", \"21d563e8-e714-4393-8f99-cc480144a05e\"",
203 "\"31d563e8-e714-4393-8f99-cc480144a05e\", \"71d563e8-e714-4393-8f99-cc480144a05e\""),
204 resourceVNFHomingString);
205 assertEquals(verifyOofRequest(), expectedOofRequest);
210 public void testHoming_success_2AR1Vnf2Net() throws Exception {
214 String businessKey = UUID.randomUUID().toString();
215 Map<String, Object> variables = new HashMap<>();
216 setVariables2(variables);
218 invokeSubProcess("Homing", businessKey, variables);
220 injectWorkflowMessages(callbacks, "oof3");
222 waitForProcessEnd(businessKey, 10000);
225 WorkflowException workflowException = (WorkflowException) getVariableFromHistory(businessKey,
226 "WorkflowException");
227 ServiceDecomposition serviceDecompositionExp = (ServiceDecomposition) getVariableFromHistory(businessKey,
228 "serviceDecomposition");
229 String expectedOofRequest = (String) getVariableFromHistory(businessKey, "oofRequest");
231 Resource resourceAR = serviceDecompositionExp.getServiceResource("testResourceIdAR");
232 HomingSolution resourceARHoming = resourceAR.getHomingSolution();
233 Resource resourceAR2 = serviceDecompositionExp.getServiceResource("testResourceIdAR2");
234 HomingSolution resourceARHoming2 = resourceAR2.getHomingSolution();
235 Resource resourceVNF = serviceDecompositionExp.getServiceResource("testResourceIdVNF");
236 HomingSolution resourceVNFHoming = resourceVNF.getHomingSolution();
237 Resource resourceNet = serviceDecompositionExp.getServiceResource("testResourceIdNet");
238 HomingSolution resourceNetHoming = resourceNet.getHomingSolution();
239 Resource resourceNet2 = serviceDecompositionExp.getServiceResource("testResourceIdNet2");
240 HomingSolution resourceNetHoming2 = resourceNet2.getHomingSolution();
242 String resourceARHomingString = resourceARHoming.toString();
243 resourceARHomingString = resourceARHomingString.replaceAll("\\s+", " ");
244 String resourceARHoming2String = resourceARHoming2.toString();
245 resourceARHoming2String = resourceARHoming2String.replaceAll("\\s+", " ");
246 String resourceVNFHomingString = resourceVNFHoming.toString();
247 resourceVNFHomingString = resourceVNFHomingString.replaceAll("\\s+", " ");
248 String resourceNetHomingString = resourceNetHoming.toString();
249 resourceNetHomingString = resourceNetHomingString.replaceAll("\\s+", " ");
250 String resourceNetHoming2String = resourceNetHoming2.toString();
251 resourceNetHoming2String = resourceNetHoming2String.replaceAll("\\s+", " ");
252 expectedOofRequest = expectedOofRequest.replaceAll("\\s+", "");
255 assertNull(workflowException);
256 assertEquals(homingSolutionService("service", "testSIID1", "MDTNJ01",
257 resourceARHoming.getVnf().getResourceId(),"aic", "dfwtx",
258 "\"f1d563e8-e714-4393-8f99-cc480144a05e\", \"j1d563e8-e714-4393-8f99-cc480144a05e\"",
259 "\"s1d563e8-e714-4393-8f99-cc480144a05e\", \"b1d563e8-e714-4393-8f99-cc480144a05e\""),
260 resourceARHomingString);
261 assertEquals(homingSolutionService("service", "testSIID2", "testVnfHostname2",
262 resourceARHoming2.getVnf().getResourceId(),
263 "aic", "testCloudRegionId2",
264 null, null), resourceARHoming2String);
265 assertEquals(homingSolutionCloud("cloud","aic",
266 "testCloudRegionId3",
267 true, "\"91d563e8-e714-4393-8f99-cc480144a05e\", \"21d563e8-e714-4393-8f99-cc480144a05e\"",
268 "\"31d563e8-e714-4393-8f99-cc480144a05e\", \"71d563e8-e714-4393-8f99-cc480144a05e\""),
269 resourceVNFHomingString);
270 assertEquals(homingSolutionService("service", "testServiceInstanceIdNet",
271 "testVnfHostNameNet", resourceNetHoming.getVnf().getResourceId(),"aic",
272 "testCloudRegionIdNet",
273 null, null), resourceNetHomingString);
274 assertEquals(homingSolutionCloud("cloud", "aic",
275 "testCloudRegionIdNet2",
276 false, "\"f1d563e8-e714-4393-8f99-cc480144a05n\", \"j1d563e8-e714-4393-8f99-cc480144a05n\"",
277 "\"s1d563e8-e714-4393-8f99-cc480144a05n\", \"b1d563e8-e714-4393-8f99-cc480144a05n\""),
278 resourceNetHoming2String);
279 assertEquals(verifyOofRequest(), expectedOofRequest);
286 public void testHoming_success_vnfResourceList() throws Exception {
288 // Create a Service Decomposition
289 MockGetServiceResourcesCatalogDataByModelUuid("2f7f309d-c842-4644-a2e4-34167be5eeb4",
290 "/BuildingBlocks/oofCatalogResp.json");
291 String busKey = UUID.randomUUID().toString();
292 Map<String, Object> vars = new HashMap<>();
293 setVariablesForServiceDecomposition(vars, "testRequestId123",
294 "ff5256d2-5a33-55df-13ab-12abad84e7ff");
295 invokeSubProcess("DecomposeService", busKey, vars);
297 ServiceDecomposition sd = (ServiceDecomposition) getVariableFromHistory(busKey,
298 "serviceDecomposition");
299 logger.debug("In testHoming_success_vnfResourceList, ServiceDecomposition = " + sd);
300 List<VnfResource> vnfResourceList = sd.getVnfResources();
301 //logger.debug(" vnfResourceList = " + vnfResourceList);
302 vnfResourceList.get(0).setResourceId("test-resource-id-000");
308 String businessKey = UUID.randomUUID().toString();
309 Map<String, Object> variables = new HashMap<>();
310 variables.put("homingService", "oof");
311 variables.put("isDebugLogEnabled", "true");
312 variables.put("msoRequestId", "testRequestId");
313 variables.put("serviceInstanceId", "testServiceInstanceId");
314 variables.put("serviceDecomposition", sd);
315 variables.put("subscriberInfo", subscriber2);
316 HashMap customerLocation = new HashMap<String, Object>();
317 customerLocation.put("customerLatitude", "32.89748");
318 customerLocation.put("customerLongitude", "-97.040443");
319 customerLocation.put("customerName", "xyz");
320 variables.put("customerLatitude", "32.89748");
321 variables.put("customerLongitude", "-97.040443");
322 variables.put("customerName", "xyz");
323 variables.put("customerLocation", customerLocation);
324 variables.put("cloudOwner", "amazon");
325 variables.put("cloudRegionId", "TNZED");
327 invokeSubProcess("Homing", businessKey, variables);
328 injectWorkflowMessages(callbacks, "oof3");
329 waitForProcessEnd(businessKey, 10000);
333 WorkflowException workflowException = (WorkflowException) getVariableFromHistory(businessKey,
334 "WorkflowException");
335 ServiceDecomposition serviceDecompositionExp = (ServiceDecomposition) getVariableFromHistory(businessKey,
336 "serviceDecomposition");
337 logger.debug("serviceDecompositionExp is: " + serviceDecompositionExp);
339 Resource resourceVnf = serviceDecompositionExp.getServiceResource("test-resource-id-000");
340 logger.debug("resourceVnf is: " + resourceVnf);
341 HomingSolution resourceVnfHoming = resourceVnf.getHomingSolution();
343 String resourceVnfHomingString = resourceVnfHoming.toString();
344 logger.debug("resourceVnfHomingString is: " + resourceVnfHomingString);
345 resourceVnfHomingString = resourceVnfHomingString.replaceAll("\\s+", " ");
346 logger.debug("Now resourceVnfHomingString is: " + resourceVnfHomingString);
348 assertNull(workflowException);
351 String oofRequest = (String) getVariableFromHistory(businessKey, "oofRequest");
352 logger.debug("oofRequest is: " + oofRequest);
353 assertEquals(FileUtil.readResourceFile("__files/BuildingBlocks/oofRequest_infravnf").
354 replaceAll("\n", "").replaceAll("\r", "").
355 replaceAll("\t", ""), oofRequest.replaceAll("\n", "").
356 replaceAll("\r", "").replaceAll("\t", ""));
358 //logger.debug("resourceVnfHoming.getVnf().getResourceId() is: " + resourceVnfHoming.getVnf().getResourceId());
360 assertEquals(homingSolutionService("service", "service-instance-01234",
361 "MDTNJ01", "test-resource-id-000","att-aic",
363 "\"f1d563e8-e714-4393-8f99-cc480144a05e\"," +
364 " \"j1d563e8-e714-4393-8f99-cc480144a05e\"",
365 "\"s1d563e8-e714-4393-8f99-cc480144a05e\"," +
366 " \"b1d563e8-e714-4393-8f99-cc480144a05e\""), resourceVnfHomingString);
370 public void testHoming_success_existingLicense() throws Exception {
374 String businessKey = UUID.randomUUID().toString();
375 Map<String, Object> variables = new HashMap<String, Object>();
376 setVariablesExistingLicense(variables);
378 invokeSubProcess("Homing", businessKey, variables);
380 injectWorkflowMessages(callbacks, "sniro");
382 waitForProcessEnd(businessKey, 10000);
385 WorkflowException workflowException = (WorkflowException) getVariableFromHistory(businessKey, "WorkflowException");
386 ServiceDecomposition serviceDecompositionExp = (ServiceDecomposition) getVariableFromHistory(businessKey, "serviceDecomposition");
387 String oofRequest = (String) getVariableFromHistory(businessKey, "sniroRequest");
389 Resource resourceAR = serviceDecompositionExp.getServiceResource("testResourceIdAR");
390 HomingSolution resourceARHoming = (HomingSolution) resourceAR.getHomingSolution();
391 Resource resourceAR2 = serviceDecompositionExp.getServiceResource("testResourceIdAR2");
392 HomingSolution resourceARHoming2 = (HomingSolution) resourceAR2.getHomingSolution();
393 Resource resourceVNF = serviceDecompositionExp.getServiceResource("testResourceIdVNF");
394 HomingSolution resourceVNFHoming = (HomingSolution) resourceVNF.getHomingSolution();
395 String resourceARHomingString = resourceARHoming.toString();
396 resourceARHomingString = resourceARHomingString.replaceAll("\\s+", " ");
397 String resourceARHoming2String = resourceARHoming2.toString();
398 resourceARHoming2String = resourceARHoming2String.replaceAll("\\s+", " ");
399 String resourceVNFHomingString = resourceVNFHoming.toString();
400 resourceVNFHomingString = resourceVNFHomingString.replaceAll("\\s+", " ");
401 oofRequest = oofRequest.replaceAll("\\s+", "");
403 assertNull(workflowException);
404 assertEquals(homingSolutionService("service", "testSIID1", "MDTNJ01",
405 "aic", "dfwtx", "KDTNJ01",
406 "\"f1d563e8-e714-4393-8f99-cc480144a05e\", \"j1d563e8-e714-4393-8f99-cc480144a05e\"",
407 "\"s1d563e8-e714-4393-8f99-cc480144a05e\", \"b1d563e8-e714-4393-8f99-cc480144a05e\""),
408 resourceARHomingString);
409 assertEquals(homingSolutionService("service", "testSIID2", "testVnfHostname2",
410 resourceARHoming2.getVnf().getResourceId(),"aic", "testCloudRegionId2",
411 null, null), resourceARHoming2String);
412 assertEquals(homingSolutionCloud("cloud", "aic",
413 "testCloudRegionId3",
414 false, "\"91d563e8-e714-4393-8f99-cc480144a05e\", \"21d563e8-e714-4393-8f99-cc480144a05e\"",
415 "\"31d563e8-e714-4393-8f99-cc480144a05e\", \"71d563e8-e714-4393-8f99-cc480144a05e\""),
416 resourceVNFHomingString);
417 assertEquals(verifyOofRequestExistingLicense(), oofRequest);
423 public void testHoming_error_inputVariable() throws Exception {
425 String businessKey = UUID.randomUUID().toString();
426 Map<String, Object> variables = new HashMap<>();
427 setVariables3(variables);
429 invokeSubProcess("Homing", businessKey, variables);
431 waitForProcessEnd(businessKey, 10000);
434 WorkflowException workflowException = (WorkflowException) getVariableFromHistory(businessKey,
435 "WorkflowException");
437 assertEquals("WorkflowException[processKey=Homing,errorCode=4000,errorMessage=A required " +
438 "input variable is missing or null]", workflowException.toString());
443 public void testHoming_error_badResponse() throws Exception {
446 String businessKey = UUID.randomUUID().toString();
447 Map<String, Object> variables = new HashMap<>();
448 setVariables(variables);
450 invokeSubProcess("Homing", businessKey, variables);
452 waitForProcessEnd(businessKey, 10000);
455 WorkflowException workflowException = (WorkflowException) getVariableFromHistory(businessKey,
456 "WorkflowException");
458 assertEquals("WorkflowException[processKey=Homing,errorCode=500,errorMessage=Received a " +
459 "Bad Sync Response from Sniro/OOF.]", workflowException.toString());
464 public void testHoming_error_oofNoSolution() throws Exception {
467 String businessKey = UUID.randomUUID().toString();
468 Map<String, Object> variables = new HashMap<>();
469 setVariables(variables);
471 invokeSubProcess("Homing", businessKey, variables);
473 injectWorkflowMessages(callbacks, "oofNoSol");
475 waitForProcessEnd(businessKey, 10000);
478 WorkflowException workflowException = (WorkflowException) getVariableFromHistory(businessKey,
479 "WorkflowException");
481 assertEquals("WorkflowException[processKey=Homing,errorCode=400,errorMessage=No solution found " +
482 "for plan 08e1b8cf-144a-4bac-b293-d5e2eedc97e8]", workflowException.toString());
487 public void testHoming_error_oofPolicyException() throws Exception {
490 String businessKey = UUID.randomUUID().toString();
491 Map<String, Object> variables = new HashMap<>();
492 setVariables(variables);
494 invokeSubProcess("Homing", businessKey, variables);
496 injectWorkflowMessages(callbacks, "oofPolicyEx");
498 waitForProcessEnd(businessKey, 10000);
501 WorkflowException workflowException = (WorkflowException) getVariableFromHistory(businessKey,
502 "WorkflowException");
504 assertEquals("WorkflowException[processKey=Homing,errorCode=400,errorMessage=OOF Async Callback " +
505 "Response contains a Request Error Policy Exception: Message content size exceeds the allowable " +
506 "limit]", workflowException.toString());
511 public void testHoming_error_oofServiceException() throws Exception {
514 String businessKey = UUID.randomUUID().toString();
515 Map<String, Object> variables = new HashMap<>();
516 setVariables(variables);
518 invokeSubProcess("Homing", businessKey, variables);
520 injectWorkflowMessages(callbacks, "oofServiceEx");
522 waitForProcessEnd(businessKey, 10000);
525 WorkflowException workflowException = (WorkflowException) getVariableFromHistory(businessKey,
526 "WorkflowException");
528 assertEquals("WorkflowException[processKey=Homing,errorCode=400,errorMessage=OOF Async Callback " +
529 "Response contains a Request Error Service Exception: OOF PlacementError: " +
530 "requests.exceptions.HTTPError: 404 Client Error: Not Found for " +
531 "url: http://192.168.171.200:8091/v1/plans/97b4e303-5f75-492c-8fb2-21098281c8b8]",
532 workflowException.toString());
536 private void setVariables(Map<String, Object> variables) {
537 variables.put("homingService", "oof");
538 HashMap customerLocation = new HashMap<String, Object>();
539 customerLocation.put("customerLatitude", "32.89748");
540 customerLocation.put("customerLongitude", "-97.040443");
541 customerLocation.put("customerName", "xyz");
542 variables.put("customerLatitude", "32.89748");
543 variables.put("customerLongitude", "-97.040443");
544 variables.put("customerName", "xyz");
545 variables.put("customerLocation", customerLocation);
546 variables.put("cloudOwner", "amazon");
547 variables.put("cloudRegionId", "TNZED");
548 variables.put("isDebugLogEnabled", "true");
549 // variables.put("mso-request-id", "testRequestId");
550 variables.put("msoRequestId", "testRequestId");
551 variables.put("serviceInstanceId", "testServiceInstanceId");
552 variables.put("serviceDecomposition", serviceDecomposition);
553 variables.put("subscriberInfo", subscriber2);
556 private void setVariables2(Map<String, Object> variables) {
557 List<NetworkResource> netList = new ArrayList<NetworkResource>();
558 NetworkResource net = new NetworkResource();
559 net.setResourceId("testResourceIdNet");
560 ModelInfo netModel = new ModelInfo();
561 netModel.setModelCustomizationUuid("testModelCustomizationUuidNet");
562 netModel.setModelInvariantUuid("testModelInvariantIdNet");
563 netModel.setModelName("testModelNameNet");
564 netModel.setModelVersion("testModelVersionNet");
565 net.setModelInfo(netModel);
567 NetworkResource net2 = new NetworkResource();
568 net2.setResourceId("testResourceIdNet2");
569 ModelInfo netModel2 = new ModelInfo();
570 netModel2.setModelCustomizationUuid("testModelCustomizationUuidNet2");
571 netModel2.setModelCustomizationName("testModelCustomizationNameNet2");
572 netModel2.setModelInvariantUuid("testModelInvariantIdNet2");
573 netModel2.setModelName("testModelNameNet2");
574 netModel2.setModelVersion("testModelVersionNet2");
575 net2.setModelInfo(netModel2);
577 serviceDecomposition.setNetworkResources(netList);
579 variables.put("homingService", "oof");
580 HashMap customerLocation = new HashMap<String, Object>();
581 customerLocation.put("customerLatitude", "32.89748");
582 customerLocation.put("customerLongitude", "-97.040443");
583 customerLocation.put("customerName", "xyz");
584 variables.put("customerLatitude", "32.89748");
585 variables.put("customerLongitude", "-97.040443");
586 variables.put("customerName", "xyz");
587 variables.put("customerLocation", customerLocation);
588 variables.put("cloudOwner", "amazon");
589 variables.put("cloudRegionId", "TNZED");
590 variables.put("isDebugLogEnabled", "true");
591 variables.put("msoRequestId", "testRequestId");
592 variables.put("serviceInstanceId", "testServiceInstanceId");
593 variables.put("serviceDecomposition", serviceDecomposition);
594 variables.put("subscriberInfo", subscriber2);
597 private void setVariables3(Map<String, Object> variables) {
598 variables.put("homingService", "oof");
599 HashMap customerLocation = new HashMap<String, Object>();
600 customerLocation.put("customerLatitude", "32.89748");
601 customerLocation.put("customerLongitude", "-97.040443");
602 customerLocation.put("customerName", "xyz");
603 variables.put("customerLatitude", "32.89748");
604 variables.put("customerLongitude", "-97.040443");
605 variables.put("customerName", "xyz");
606 variables.put("customerLocation", customerLocation);
607 variables.put("cloudOwner", "amazon");
608 variables.put("cloudRegionId", "TNZED");
609 variables.put("isDebugLogEnabled", "true");
610 // variables.put("mso-request-id", "testRequestId");
611 variables.put("msoRequestId", "testRequestId");
612 variables.put("serviceInstanceId", "testServiceInstanceId");
613 variables.put("serviceDecomposition", null);
614 variables.put("subscriberInfo", subscriber2);
617 private void setVariablesExistingLicense(Map<String, Object> variables) {
618 HomingSolution currentHomingSolution = new HomingSolution();
619 serviceDecomposition.getVnfResources().get(0).setCurrentHomingSolution(currentHomingSolution);
620 serviceDecomposition.getVnfResources().get(0).getCurrentHomingSolution().getLicense().addEntitlementPool("testEntitlementPoolId1");
621 serviceDecomposition.getVnfResources().get(0).getCurrentHomingSolution().getLicense().addEntitlementPool("testEntitlementPoolId2");
623 serviceDecomposition.getVnfResources().get(0).getCurrentHomingSolution().getLicense().addLicenseKeyGroup("testLicenseKeyGroupId1");
624 serviceDecomposition.getVnfResources().get(0).getCurrentHomingSolution().getLicense().addLicenseKeyGroup("testLicenseKeyGroupId2");
626 variables.put("isDebugLogEnabled", "true");
627 variables.put("msoRequestId", "testRequestId");
628 variables.put("serviceInstanceId", "testServiceInstanceId");
629 variables.put("serviceDecomposition", serviceDecomposition);
630 variables.put("subscriberInfo", subscriber2);
634 private String homingSolutionService(String type, String serviceInstanceId, String vnfHostname,
635 String vnfResourceId, String cloudOwner,
636 String cloudRegionId, String enList,
639 String solution = "";
641 solution = "{ \"homingSolution\" : { \"inventoryType\" : \"" + type + "\", \"serviceInstanceId\" : \"" +
642 serviceInstanceId + "\", \"cloudOwner\" : \"" + cloudOwner + "\", \"cloudRegionId\" : \"" +
643 cloudRegionId + "\", " + "\"vnf\" : { \"resourceId\" : \"" + vnfResourceId +
644 "\", \"resourceType\" : \"VNF\", \"resourceInstance\" : { }, \"homingSolution\" : { \"license\" :" +
645 " { }, \"rehome\" : false }, \"vnfHostname\" : \"" + vnfHostname + "\" }, \"license\" : { }," +
646 " \"rehome\" : false } }";
649 solution = "{ \"homingSolution\" : { \"inventoryType\" : \"" + type + "\", \"serviceInstanceId\" : \"" +
650 serviceInstanceId + "\", \"cloudOwner\" : \"" + cloudOwner + "\", \"cloudRegionId\" : \"" +
651 cloudRegionId + "\", \"vnf\" : { \"resourceId\" : \"" + vnfResourceId + "\", \"resourceType\" :" +
652 " \"VNF\", \"resourceInstance\" : { }, \"homingSolution\" : { \"license\" : { }, \"rehome\" :" +
653 " false }, \"vnfHostname\" : \"" + vnfHostname + "\" }, \"license\" : { \"entitlementPoolList\" :" +
654 " [ " + enList + " ], \"licenseKeyGroupList\" : [ " + licenseList + " ] }, \"rehome\" : false } }";
659 private String homingSolutionCloud(String type, String cloudOwner,
660 String cloudRegionId, Boolean flavors, String enList,
662 String solution = "";
664 solution = "{ \"homingSolution\" : { \"inventoryType\" : \"" + type + "\", \"cloudOwner\" : \"" +
665 cloudOwner + "\", \"cloudRegionId\" : \"" + cloudRegionId +
666 "\", \"license\" : { }, \"rehome\" : false } }";
667 } else if (flavors && enList == null){
668 solution = "{ \"homingSolution\" : { \"inventoryType\" : \"" + type + "\", \"cloudOwner\" : \"" +
669 cloudOwner + "\", \"cloudRegionId\" : \"" + cloudRegionId +
670 "\", \"flavors\" : [ { \"flavorLabel\" : \"flavorLabel2xxx\", \"flavor\" : \"vimFlavorxxx\" }, " +
671 "{ \"flavorLabel\" : \"flavorLabel1xxx\", \"flavor\" : \"vimFlavorxxx\" } ], " +
672 "\"license\" : { }, \"rehome\" : false } }";
673 } else if (flavors) {
674 solution = "{ \"homingSolution\" : { \"inventoryType\" : \"" + type + "\", \"cloudOwner\" : \"" +
675 cloudOwner + "\", \"cloudRegionId\" : \"" + cloudRegionId +
676 "\", \"flavors\" : [ { \"flavorLabel\" : \"flavorLabel2xxx\", \"flavor\" : \"vimFlavorxxx\" }, " +
677 "{ \"flavorLabel\" : \"flavorLabel1xxx\", \"flavor\" : \"vimFlavorxxx\" } ], " +
678 "\"license\" : { \"entitlementPoolList\" : [ " + enList + " ], \"licenseKeyGroupList\" : [ " +
679 licenseList + " ] }, \"rehome\" : false } }";
681 solution = "{ \"homingSolution\" : { \"inventoryType\" : \"" + type + "\", \"cloudOwner\" : \"" +
682 cloudOwner + "\", \"cloudRegionId\" : \"" + cloudRegionId +
683 "\", \"license\" : { \"entitlementPoolList\" : [ " + enList + " ], \"licenseKeyGroupList\" : [ " +
684 licenseList + " ] }, \"rehome\" : false } }";
689 private void setVariablesForServiceDecomposition(Map<String, Object> variables, String requestId, String siId) {
690 variables.put("homingService", "oof");
691 variables.put("isDebugLogEnabled", "true");
692 variables.put("mso-request-id", requestId);
693 variables.put("msoRequestId", requestId);
694 variables.put("serviceInstanceId", siId);
695 HashMap customerLocation = new HashMap<String, Object>();
696 customerLocation.put("customerLatitude", "32.89748");
697 customerLocation.put("customerLongitude", "-97.040443");
698 customerLocation.put("customerName", "xyz");
699 variables.put("customerLatitude", "32.89748");
700 variables.put("customerLongitude", "-97.040443");
701 variables.put("customerName", "xyz");
702 variables.put("customerLocation", customerLocation);
703 variables.put("cloudOwner", "amazon");
704 variables.put("cloudRegionId", "TNZED");
707 String serviceModelInfo = "{\"modelInvariantId\":\"1cc4e2e4-eb6e-404d-a66f-c8733cedcce8\",\"modelUuid\":" +
708 "\"2f7f309d-c842-4644-a2e4-34167be5eeb4\",\"modelName\":\"vCPE Service\",\"modelVersion\":\"2.0\",}";
709 variables.put("serviceModelInfo", serviceModelInfo);
712 private String verifyOofRequest() {
713 String request = "{\"requestInfo\":{\"transactionId\":\"testRequestId\",\"requestId\":\"testRequestId\"," +
714 "\"callbackUrl\":\"http://localhost:28090/workflows/messages/message/oofResponse/testRequestId\"," +
715 "\"sourceId\":\"so\",\"requestType\":\"create\",\"numSolutions\":1,\"optimizers\":[\"placement\"]," +
716 "\"timeout\":600},\"placementInfo\":{\"requestParameters\":{\"customerLatitude\":" +
717 "\"32.89748\",\"customerLongitude\":\"-97.040443\",\"customerName\":\"xyz\"},\"subscriberInfo\":" +
718 "{\"globalSubscriberId\":\"SUB12_0322_DS_1201\",\"subscriberName\":\"SUB_12_0322_DS_1201\"," +
719 "\"subscriberCommonSiteId\":\"\"},\"placementDemands\":[{\"resourceModuleName\":\"ALLOTTED_RESOURCE\"" +
720 ",\"serviceResourceId\":\"testResourceIdAR\",\"tenantId\":" +
721 "\"null\",\"resourceModelInfo\":{\"modelInvariantId\":\"testModelInvariantIdAR\"," +
722 "\"modelVersionId\":\"testARModelUuid\",\"modelName\":\"testModelNameAR\",\"modelType\":" +
723 "\"testModelTypeAR\",\"modelVersion\":\"testModelVersionAR\",\"modelCustomizationName\":\"\"}}," +
724 "{\"resourceModuleName\":\"ALLOTTED_RESOURCE\",\"serviceResourceId\":\"testResourceIdAR2\"," +
725 "\"tenantId\":\"null\",\"resourceModelInfo\":{\"modelInvariantId\":\"testModelInvariantIdAR2\"," +
726 "\"modelVersionId\":\"testAr2ModelUuid\",\"modelName\":\"testModelNameAR2\"," +
727 "\"modelType\":\"testModelTypeAR2\",\"modelVersion\":\"testModelVersionAR2\"," +
728 "\"modelCustomizationName\":\"\"}}]},\"serviceInfo\":" +
729 "{\"serviceInstanceId\":\"testServiceInstanceId123\"," +
730 "\"serviceName\":\"null\",\"modelInfo\":{\"modelType\":\"\",\"modelInvariantId\":" +
731 "\"testModelInvariantId\",\"modelVersionId\":\"testModelUuid\",\"modelName\":\"testModelName\"," +
732 "\"modelVersion\":\"testModelVersion\",\"modelCustomizationName\":\"" +
733 "\"}},\"licenseInfo\":{\"licenseDemands\":[{\"resourceModuleName\":\"VNF\",\"serviceResourceId\":" +
734 "\"testResourceIdVNF\",\"resourceInstanceType\":\"VNF\",\"resourceModelInfo\":{\"modelInvariantId\":" +
735 "\"testModelInvariantIdVNF\",\"modelVersionId\":\"testVnfModelUuid\",\"modelName\":" +
736 "\"testModelNameVNF\",\"modelType\":\"testModelTypeVNF\",\"modelVersion\":\"testModelVersionVNF\"," +
737 "\"modelCustomizationName\":\"\"}}]}}";
741 private String verifyOofRequestExistingLicense(){
742 String request = "{\"requestInfo\":{\"transactionId\":\"testRequestId\",\"requestId\":\"testRequestId\"," +
743 "\"callbackUrl\":\"http://localhost:28090/workflows/messages/message/SNIROResponse/testRequestId\"," +
744 "\"sourceId\":\"mso\",\"requestType\":\"speedchanged\",\"optimizer\":[\"placement\",\"license\"]," +
745 "\"numSolutions\":1,\"timeout\":1800},\"placementInfo\":{\"serviceModelInfo\":{\"modelType\":\"\"," +
746 "\"modelInvariantId\":\"testModelInvariantId\",\"modelVersionId\":\"testModelUuid\",\"modelName\":" +
747 "\"testModelName\",\"modelVersion\":\"testModelVersion\"},\"subscriberInfo\":" +
748 "{\"globalSubscriberId\":\"SUB12_0322_DS_1201\",\"subscriberName\":\"SUB_12_0322_DS_1201\"," +
749 "\"subscriberCommonSiteId\":\"\"},\"demandInfo\":{\"placementDemand\":[{\"resourceInstanceType\":" +
750 "\"ALLOTTED_RESOURCE\",\"serviceResourceId\":\"testResourceIdAR\",\"resourceModuleName\":\"\"," +
751 "\"resourceModelInfo\":{\"modelCustomizationId\":\"testModelCustomizationUuidAR\"," +
752 "\"modelInvariantId\":\"testModelInvariantIdAR\",\"modelName\":\"testModelNameAR\"," +
753 "\"modelVersion\":\"testModelVersionAR\",\"modelVersionId\":\"testARModelUuid\",\"modelType\":" +
754 "\"testModelTypeAR\"},\"tenantId\":\"\",\"tenantName\":\"\"},{\"resourceInstanceType\":" +
755 "\"ALLOTTED_RESOURCE\",\"serviceResourceId\":\"testResourceIdAR2\",\"resourceModuleName\":" +
756 "\"\",\"resourceModelInfo\":{\"modelCustomizationId\":\"testModelCustomizationUuidAR2\"," +
757 "\"modelInvariantId\":\"testModelInvariantIdAR2\",\"modelName\":\"testModelNameAR2\"," +
758 "\"modelVersion\":\"testModelVersionAR2\",\"modelVersionId\":\"testAr2ModelUuid\"," +
759 "\"modelType\":\"testModelTypeAR2\"},\"tenantId\":\"\",\"tenantName\":\"\"}],\"licenseDemand\":" +
760 "[{\"resourceInstanceType\":\"VNF\",\"serviceResourceId\":\"testResourceIdVNF\"," +
761 "\"resourceModuleName\":\"\",\"resourceModelInfo\":{\"modelCustomizationId\":" +
762 "\"testModelCustomizationUuidVNF\",\"modelInvariantId\":\"testModelInvariantIdVNF\"," +
763 "\"modelName\":\"testModelNameVNF\",\"modelVersion\":\"testModelVersionVNF\"," +
764 "\"modelVersionId\":\"testVnfModelUuid\",\"modelType\":\"testModelTypeVNF\"}," +
765 "\"existingLicense\":[{\"entitlementPoolUUID\":[\"testEntitlementPoolId1\"," +
766 "\"testEntitlementPoolId2\"],\"licenseKeyGroupUUID\":[\"testLicenseKeyGroupId1\"," +
767 "\"testLicenseKeyGroupId2\"]}]}]},\"policyId\":[],\"serviceInstanceId\":" +
768 "\"testServiceInstanceId123\",\"orderInfo\":\"{\\\"requestParameters\\\":null}\"}}";