Remove tests which do not test anything
[so.git] / bpmn / MSOCommonBPMN / src / test / java / org / openecomp / mso / bpmn / common / OofHomingTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
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
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
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=========================================================
19  */
20
21 /*
22  * © 2014 AT&T Intellectual Property. All rights reserved. Used under license from AT&T Intellectual Property.
23  */
24 package org.openecomp.mso.bpmn.common;
25
26 import org.camunda.bpm.engine.test.Deployment;
27 import org.junit.Ignore;
28 import org.junit.Test;
29 import org.openecomp.mso.bpmn.core.WorkflowException;
30 import org.openecomp.mso.bpmn.core.domain.AllottedResource;
31 import org.openecomp.mso.bpmn.core.domain.CloudFlavor;
32 import org.openecomp.mso.bpmn.core.domain.HomingSolution;
33 import org.openecomp.mso.bpmn.core.domain.ModelInfo;
34 import org.openecomp.mso.bpmn.core.domain.NetworkResource;
35 import org.openecomp.mso.bpmn.core.domain.Resource;
36 import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition;
37 import org.openecomp.mso.bpmn.core.domain.ServiceInstance;
38 import org.openecomp.mso.bpmn.core.domain.VnfResource;
39 import org.openecomp.mso.bpmn.mock.FileUtil;
40
41 import java.io.IOException;
42 import java.util.ArrayList;
43 import java.util.HashMap;
44 import java.util.List;
45 import java.util.Map;
46 import java.util.UUID;
47
48 import static org.junit.Assert.assertEquals;
49 import static org.junit.Assert.assertNull;
50 import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.MockGetServiceResourcesCatalogDataByModelUuid;
51 import static org.openecomp.mso.bpmn.mock.StubResponseOof.mockOof;
52 import static org.openecomp.mso.bpmn.mock.StubResponseOof.mockOof_500;
53
54
55 /**
56  * Test the OOF Homing subflow building block.
57  */
58 public class OofHomingTest extends WorkflowTest {
59
60     ServiceDecomposition serviceDecomposition = new ServiceDecomposition();
61     String subscriber = "";
62     String subscriber2 = "";
63
64     private final CallbackSet callbacks = new CallbackSet();
65
66     public OofHomingTest() throws IOException {
67         String oofCallback = FileUtil.readResourceFile("__files/BuildingBlocks/oofCallbackInfraVnf");
68         String oofCallback2 = FileUtil.readResourceFile("__files/BuildingBlocks/oofCallback2AR1Vnf");
69         String oofCallback3 = FileUtil.readResourceFile("__files/BuildingBlocks/oofCallback2AR1Vnf2Net");
70
71         String oofCallbackNoSolution = FileUtil.
72                 readResourceFile("__files/BuildingBlocks/oofCallbackNoSolutionFound");
73         String oofCallbackPolicyException = FileUtil.
74                 readResourceFile("__files/BuildingBlocks/oofCallbackPolicyException");
75         String oofCallbackServiceException = FileUtil.
76                 readResourceFile("__files/BuildingBlocks/oofCallbackServiceException");
77
78         callbacks.put("oof", JSON, "oofResponse", oofCallback);
79         callbacks.put("oof2", JSON, "oofResponse", oofCallback2);
80         callbacks.put("oof3", JSON, "oofResponse", oofCallback3);
81         callbacks.put("oofNoSol", JSON, "oofResponse", oofCallbackNoSolution);
82         callbacks.put("oofPolicyEx", JSON, "oofResponse", oofCallbackPolicyException);
83         callbacks.put("oofServiceEx", JSON, "oofResponse", oofCallbackServiceException);
84
85         // Service Model
86         ModelInfo sModel = new ModelInfo();
87         sModel.setModelCustomizationName("testModelCustomizationName");
88         sModel.setModelInstanceName("testModelInstanceName");
89         sModel.setModelInvariantUuid("testModelInvariantId");
90         sModel.setModelName("testModelName");
91         sModel.setModelUuid("testModelUuid");
92         sModel.setModelVersion("testModelVersion");
93         // Service Instance
94         ServiceInstance si = new ServiceInstance();
95         si.setInstanceId("testServiceInstanceId123");
96         // Allotted Resources
97         List<AllottedResource> arList = new ArrayList<AllottedResource>();
98         AllottedResource ar = new AllottedResource();
99         ar.setResourceId("testResourceIdAR");
100         ar.setResourceInstanceName("testARInstanceName");
101         ModelInfo arModel = new ModelInfo();
102         arModel.setModelCustomizationUuid("testModelCustomizationUuidAR");
103         arModel.setModelInvariantUuid("testModelInvariantIdAR");
104         arModel.setModelName("testModelNameAR");
105         arModel.setModelVersion("testModelVersionAR");
106         arModel.setModelUuid("testARModelUuid");
107         arModel.setModelType("testModelTypeAR");
108         ar.setModelInfo(arModel);
109         AllottedResource ar2 = new AllottedResource();
110         ar2.setResourceId("testResourceIdAR2");
111         ar2.setResourceInstanceName("testAR2InstanceName");
112         ModelInfo arModel2 = new ModelInfo();
113         arModel2.setModelCustomizationUuid("testModelCustomizationUuidAR2");
114         arModel2.setModelInvariantUuid("testModelInvariantIdAR2");
115         arModel2.setModelName("testModelNameAR2");
116         arModel2.setModelVersion("testModelVersionAR2");
117         arModel2.setModelUuid("testAr2ModelUuid");
118         arModel2.setModelType("testModelTypeAR2");
119         ar2.setModelInfo(arModel2);
120         arList.add(ar);
121         arList.add(ar2);
122         // Vnfs
123         List<VnfResource> vnfList = new ArrayList<VnfResource>();
124         VnfResource vnf = new VnfResource();
125         vnf.setResourceId("testResourceIdVNF");
126         vnf.setResourceInstanceName("testVnfInstanceName");
127         ArrayList<CloudFlavor> flavors = new ArrayList<>();
128         CloudFlavor flavor1 = new CloudFlavor("flavorLabel1xxx", "vimFlavorxxx");
129         CloudFlavor flavor2 = new CloudFlavor("flavorLabel2xxx", "vimFlavorxxx");
130         flavors.add(flavor1);
131         flavors.add(flavor2);
132         vnf.getHomingSolution().setFlavors(flavors);
133         ModelInfo vnfModel = new ModelInfo();
134         vnfModel.setModelCustomizationUuid("testModelCustomizationUuidVNF");
135         vnfModel.setModelInvariantUuid("testModelInvariantIdVNF");
136         vnfModel.setModelName("testModelNameVNF");
137         vnfModel.setModelVersion("testModelVersionVNF");
138         vnfModel.setModelUuid("testVnfModelUuid");
139         vnfModel.setModelType("testModelTypeVNF");
140         vnf.setModelInfo(vnfModel);
141         vnfList.add(vnf);
142         System.out.println("SERVICE DECOMP: " + serviceDecomposition.getServiceResourcesJsonString());
143         serviceDecomposition.setModelInfo(sModel);
144         serviceDecomposition.setServiceAllottedResources(arList);
145         serviceDecomposition.setServiceVnfs(vnfList);
146         serviceDecomposition.setServiceInstance(si);
147
148         // Subscriber
149         subscriber = "{\"globalSubscriberId\": \"SUB12_0322_DS_1201\",\"subscriberCommonSiteId\": \"DALTX0101\",\"subscriberName\": \"SUB_12_0322_DS_1201\"}";
150         subscriber2 = "{\"globalSubscriberId\": \"SUB12_0322_DS_1201\",\"subscriberName\": \"SUB_12_0322_DS_1201\"}";
151     }
152
153     @Test
154     @Deployment(resources = {"subprocess/BuildingBlock/Homing.bpmn", "subprocess/ReceiveWorkflowMessage.bpmn"})
155     public void testHoming_success_2AR1Vnf() throws Exception {
156
157         mockOof();
158
159         String businessKey = UUID.randomUUID().toString();
160         Map<String, Object> variables = new HashMap<>();
161         setVariables(variables);
162
163         invokeSubProcess("Homing", businessKey, variables);
164
165         injectWorkflowMessages(callbacks, "oof2");
166
167         waitForProcessEnd(businessKey, 10000);
168
169         //Get Variables
170         WorkflowException workflowException = (WorkflowException) getVariableFromHistory(businessKey,
171                 "WorkflowException");
172         ServiceDecomposition serviceDecompositionExp = (ServiceDecomposition) getVariableFromHistory(businessKey,
173                 "serviceDecomposition");
174         String expectedOofRequest = (String) getVariableFromHistory(businessKey, "oofRequest");
175
176         Resource resourceAR = serviceDecompositionExp.getServiceResource("testResourceIdAR");
177         HomingSolution resourceARHoming = resourceAR.getHomingSolution();
178         Resource resourceAR2 = serviceDecompositionExp.getServiceResource("testResourceIdAR2");
179         HomingSolution resourceARHoming2 = resourceAR2.getHomingSolution();
180         Resource resourceVNF = serviceDecompositionExp.getServiceResource("testResourceIdVNF");
181         HomingSolution resourceVNFHoming = resourceVNF.getHomingSolution();
182         String resourceARHomingString = resourceARHoming.toString();
183         resourceARHomingString = resourceARHomingString.replaceAll("\\s+", " ");
184         String resourceARHoming2String = resourceARHoming2.toString();
185         resourceARHoming2String = resourceARHoming2String.replaceAll("\\s+", " ");
186         String resourceVNFHomingString = resourceVNFHoming.toString();
187         resourceVNFHomingString = resourceVNFHomingString.replaceAll("\\s+", " ");
188         expectedOofRequest = expectedOofRequest.replaceAll("\\s+", "");
189
190         assertNull(workflowException);
191         assertEquals(homingSolutionService("service", "testSIID1", "MDTNJ01",
192                 resourceARHoming.getVnf().getResourceId(),"aic", "dfwtx",
193                 "\"f1d563e8-e714-4393-8f99-cc480144a05e\", \"j1d563e8-e714-4393-8f99-cc480144a05e\"",
194                 "\"s1d563e8-e714-4393-8f99-cc480144a05e\", \"b1d563e8-e714-4393-8f99-cc480144a05e\""),
195                 resourceARHomingString);
196         assertEquals(homingSolutionService("service", "testSIID2", "testVnfHostname2",
197                 resourceARHoming2.getVnf().getResourceId(),"aic", "testCloudRegionId2",
198                 null, null), resourceARHoming2String);
199         assertEquals(homingSolutionCloud("cloud","aic", "testCloudRegionId3",
200                 true, "\"91d563e8-e714-4393-8f99-cc480144a05e\", \"21d563e8-e714-4393-8f99-cc480144a05e\"",
201                 "\"31d563e8-e714-4393-8f99-cc480144a05e\", \"71d563e8-e714-4393-8f99-cc480144a05e\""),
202                 resourceVNFHomingString);
203         assertEquals(verifyOofRequest(), expectedOofRequest);
204     }
205
206     @Test
207     @Deployment(resources = {"subprocess/BuildingBlock/Homing.bpmn", "subprocess/ReceiveWorkflowMessage.bpmn"})
208     public void testHoming_success_2AR1Vnf2Net() throws Exception {
209
210         mockOof();
211
212         String businessKey = UUID.randomUUID().toString();
213         Map<String, Object> variables = new HashMap<>();
214         setVariables2(variables);
215
216         invokeSubProcess("Homing", businessKey, variables);
217
218         injectWorkflowMessages(callbacks, "oof3");
219
220         waitForProcessEnd(businessKey, 10000);
221
222         //Get Variables
223         WorkflowException workflowException = (WorkflowException) getVariableFromHistory(businessKey,
224                 "WorkflowException");
225         ServiceDecomposition serviceDecompositionExp = (ServiceDecomposition) getVariableFromHistory(businessKey,
226                 "serviceDecomposition");
227         String expectedOofRequest = (String) getVariableFromHistory(businessKey, "oofRequest");
228
229         Resource resourceAR = serviceDecompositionExp.getServiceResource("testResourceIdAR");
230         HomingSolution resourceARHoming = resourceAR.getHomingSolution();
231         Resource resourceAR2 = serviceDecompositionExp.getServiceResource("testResourceIdAR2");
232         HomingSolution resourceARHoming2 = resourceAR2.getHomingSolution();
233         Resource resourceVNF = serviceDecompositionExp.getServiceResource("testResourceIdVNF");
234         HomingSolution resourceVNFHoming = resourceVNF.getHomingSolution();
235         Resource resourceNet = serviceDecompositionExp.getServiceResource("testResourceIdNet");
236         HomingSolution resourceNetHoming = resourceNet.getHomingSolution();
237         Resource resourceNet2 = serviceDecompositionExp.getServiceResource("testResourceIdNet2");
238         HomingSolution resourceNetHoming2 = resourceNet2.getHomingSolution();
239
240         String resourceARHomingString = resourceARHoming.toString();
241         resourceARHomingString = resourceARHomingString.replaceAll("\\s+", " ");
242         String resourceARHoming2String = resourceARHoming2.toString();
243         resourceARHoming2String = resourceARHoming2String.replaceAll("\\s+", " ");
244         String resourceVNFHomingString = resourceVNFHoming.toString();
245         resourceVNFHomingString = resourceVNFHomingString.replaceAll("\\s+", " ");
246         String resourceNetHomingString = resourceNetHoming.toString();
247         resourceNetHomingString = resourceNetHomingString.replaceAll("\\s+", " ");
248         String resourceNetHoming2String = resourceNetHoming2.toString();
249         resourceNetHoming2String = resourceNetHoming2String.replaceAll("\\s+", " ");
250         expectedOofRequest = expectedOofRequest.replaceAll("\\s+", "");
251
252
253         assertNull(workflowException);
254         assertEquals(homingSolutionService("service", "testSIID1", "MDTNJ01",
255                 resourceARHoming.getVnf().getResourceId(),"aic", "dfwtx",
256                 "\"f1d563e8-e714-4393-8f99-cc480144a05e\", \"j1d563e8-e714-4393-8f99-cc480144a05e\"",
257                 "\"s1d563e8-e714-4393-8f99-cc480144a05e\", \"b1d563e8-e714-4393-8f99-cc480144a05e\""),
258                 resourceARHomingString);
259         assertEquals(homingSolutionService("service", "testSIID2", "testVnfHostname2",
260                 resourceARHoming2.getVnf().getResourceId(),
261                 "aic", "testCloudRegionId2",
262                 null, null), resourceARHoming2String);
263         assertEquals(homingSolutionCloud("cloud","aic",
264                 "testCloudRegionId3",
265                 true, "\"91d563e8-e714-4393-8f99-cc480144a05e\", \"21d563e8-e714-4393-8f99-cc480144a05e\"",
266                 "\"31d563e8-e714-4393-8f99-cc480144a05e\", \"71d563e8-e714-4393-8f99-cc480144a05e\""),
267                 resourceVNFHomingString);
268         assertEquals(homingSolutionService("service", "testServiceInstanceIdNet",
269                 "testVnfHostNameNet", resourceNetHoming.getVnf().getResourceId(),"aic",
270                 "testCloudRegionIdNet",
271                 null, null), resourceNetHomingString);
272         assertEquals(homingSolutionCloud("cloud", "aic",
273                 "testCloudRegionIdNet2",
274                 false, "\"f1d563e8-e714-4393-8f99-cc480144a05n\", \"j1d563e8-e714-4393-8f99-cc480144a05n\"",
275                 "\"s1d563e8-e714-4393-8f99-cc480144a05n\", \"b1d563e8-e714-4393-8f99-cc480144a05n\""),
276                 resourceNetHoming2String);
277         assertEquals(verifyOofRequest(), expectedOofRequest);
278
279     }
280
281     @Test
282     @Ignore
283     @Deployment(resources = {"subprocess/BuildingBlock/Homing.bpmn", "subprocess/BuildingBlock/DecomposeService.bpmn",
284             "subprocess/ReceiveWorkflowMessage.bpmn"})
285     public void testHoming_success_vnfResourceList() throws Exception {
286
287         // Create a Service Decomposition
288         MockGetServiceResourcesCatalogDataByModelUuid("2f7f309d-c842-4644-a2e4-34167be5eeb4",
289                 "/BuildingBlocks/oofCatalogResp.json");
290         String busKey = UUID.randomUUID().toString();
291         Map<String, Object> vars = new HashMap<>();
292         setVariablesForServiceDecomposition(vars, "testRequestId123",
293                 "ff5256d2-5a33-55df-13ab-12abad84e7ff");
294         invokeSubProcess("DecomposeService", busKey, vars);
295
296         ServiceDecomposition sd = (ServiceDecomposition) getVariableFromHistory(busKey,
297                 "serviceDecomposition");
298         System.out.println("In testHoming_success_vnfResourceList, ServiceDecomposition = " + sd);
299         List<VnfResource> vnfResourceList = sd.getServiceVnfs();
300 //System.out.println(" vnfResourceList = " + vnfResourceList);
301         vnfResourceList.get(0).setResourceId("test-resource-id-000");
302
303         // Invoke Homing
304
305         mockOof();
306
307         String businessKey = UUID.randomUUID().toString();
308         Map<String, Object> variables = new HashMap<>();
309         variables.put("homingService", "oof");
310         variables.put("isDebugLogEnabled", "true");
311         variables.put("msoRequestId", "testRequestId");
312         variables.put("serviceInstanceId", "testServiceInstanceId");
313         variables.put("serviceDecomposition", sd);
314         variables.put("subscriberInfo", subscriber2);
315         HashMap customerLocation = new HashMap<String, Object>();
316         customerLocation.put("customerLatitude", "32.89748");
317         customerLocation.put("customerLongitude", "-97.040443");
318         customerLocation.put("customerName", "xyz");
319         variables.put("customerLatitude", "32.89748");
320         variables.put("customerLongitude", "-97.040443");
321         variables.put("customerName", "xyz");
322         variables.put("customerLocation", customerLocation);
323         variables.put("cloudOwner", "amazon");
324         variables.put("cloudRegionId", "TNZED");
325
326         invokeSubProcess("Homing", businessKey, variables);
327         injectWorkflowMessages(callbacks, "oof3");
328         waitForProcessEnd(businessKey, 10000);
329
330         //Get Variables
331
332         WorkflowException workflowException = (WorkflowException) getVariableFromHistory(businessKey,
333                 "WorkflowException");
334         ServiceDecomposition serviceDecompositionExp = (ServiceDecomposition) getVariableFromHistory(businessKey,
335                 "serviceDecomposition");
336         System.out.println("serviceDecompositionExp is: " + serviceDecompositionExp);
337
338         Resource resourceVnf = serviceDecompositionExp.getServiceResource("test-resource-id-000");
339         System.out.println("resourceVnf is: " + resourceVnf);
340         HomingSolution resourceVnfHoming = resourceVnf.getHomingSolution();
341
342         String resourceVnfHomingString = resourceVnfHoming.toString();
343         System.out.println("resourceVnfHomingString is: " + resourceVnfHomingString);
344         resourceVnfHomingString = resourceVnfHomingString.replaceAll("\\s+", " ");
345         System.out.println("Now resourceVnfHomingString is: " + resourceVnfHomingString);
346
347         assertNull(workflowException);
348
349         //Verify request
350         String oofRequest = (String) getVariableFromHistory(businessKey, "oofRequest");
351         System.out.println("oofRequest is: " + oofRequest);
352         assertEquals(FileUtil.readResourceFile("__files/BuildingBlocks/oofRequest_infravnf").
353                 replaceAll("\n", "").replaceAll("\r", "").
354                 replaceAll("\t", ""), oofRequest.replaceAll("\n", "").
355                 replaceAll("\r", "").replaceAll("\t", ""));
356
357         //System.out.println("resourceVnfHoming.getVnf().getResourceId() is: " + resourceVnfHoming.getVnf().getResourceId());
358
359         assertEquals(homingSolutionService("service", "service-instance-01234",
360                 "MDTNJ01", "test-resource-id-000","att-aic",
361                 "mtmnj1a",
362                 "\"f1d563e8-e714-4393-8f99-cc480144a05e\"," +
363                         " \"j1d563e8-e714-4393-8f99-cc480144a05e\"",
364                 "\"s1d563e8-e714-4393-8f99-cc480144a05e\"," +
365                         " \"b1d563e8-e714-4393-8f99-cc480144a05e\""), resourceVnfHomingString);
366     }
367
368     @Test
369     @Ignore // 1802 merge
370     @Deployment(resources = {"subprocess/BuildingBlock/Homing.bpmn", "subprocess/ReceiveWorkflowMessage.bpmn"})
371     public void testHoming_success_existingLicense() throws Exception {
372
373         mockOof();
374
375         String businessKey = UUID.randomUUID().toString();
376         Map<String, Object> variables = new HashMap<String, Object>();
377         setVariablesExistingLicense(variables);
378
379         invokeSubProcess("Homing", businessKey, variables);
380
381         injectWorkflowMessages(callbacks, "sniro");
382
383         waitForProcessEnd(businessKey, 10000);
384
385         //Get Variables
386         WorkflowException workflowException = (WorkflowException) getVariableFromHistory(businessKey, "WorkflowException");
387         ServiceDecomposition serviceDecompositionExp = (ServiceDecomposition) getVariableFromHistory(businessKey, "serviceDecomposition");
388         String oofRequest = (String) getVariableFromHistory(businessKey, "sniroRequest");
389
390         Resource resourceAR = serviceDecompositionExp.getServiceResource("testResourceIdAR");
391         HomingSolution resourceARHoming = (HomingSolution) resourceAR.getHomingSolution();
392         Resource resourceAR2 = serviceDecompositionExp.getServiceResource("testResourceIdAR2");
393         HomingSolution resourceARHoming2 = (HomingSolution) resourceAR2.getHomingSolution();
394         Resource resourceVNF = serviceDecompositionExp.getServiceResource("testResourceIdVNF");
395         HomingSolution resourceVNFHoming = (HomingSolution) resourceVNF.getHomingSolution();
396         String resourceARHomingString = resourceARHoming.toString();
397         resourceARHomingString = resourceARHomingString.replaceAll("\\s+", " ");
398         String resourceARHoming2String = resourceARHoming2.toString();
399         resourceARHoming2String = resourceARHoming2String.replaceAll("\\s+", " ");
400         String resourceVNFHomingString = resourceVNFHoming.toString();
401         resourceVNFHomingString = resourceVNFHomingString.replaceAll("\\s+", " ");
402         oofRequest = oofRequest.replaceAll("\\s+", "");
403
404         assertNull(workflowException);
405         assertEquals(homingSolutionService("service", "testSIID1", "MDTNJ01",
406                 "aic", "dfwtx", "KDTNJ01",
407                 "\"f1d563e8-e714-4393-8f99-cc480144a05e\", \"j1d563e8-e714-4393-8f99-cc480144a05e\"",
408                 "\"s1d563e8-e714-4393-8f99-cc480144a05e\", \"b1d563e8-e714-4393-8f99-cc480144a05e\""),
409                 resourceARHomingString);
410         assertEquals(homingSolutionService("service", "testSIID2", "testVnfHostname2",
411                 resourceARHoming2.getVnf().getResourceId(),"aic", "testCloudRegionId2",
412                 null, null), resourceARHoming2String);
413         assertEquals(homingSolutionCloud("cloud", "aic",
414                 "testCloudRegionId3",
415                 false, "\"91d563e8-e714-4393-8f99-cc480144a05e\", \"21d563e8-e714-4393-8f99-cc480144a05e\"",
416                 "\"31d563e8-e714-4393-8f99-cc480144a05e\", \"71d563e8-e714-4393-8f99-cc480144a05e\""),
417                 resourceVNFHomingString);
418         assertEquals(verifyOofRequestExistingLicense(), oofRequest);
419
420     }
421
422     @Test
423     @Deployment(resources = {"subprocess/BuildingBlock/Homing.bpmn", "subprocess/ReceiveWorkflowMessage.bpmn"})
424     public void testHoming_error_inputVariable() throws Exception {
425
426         String businessKey = UUID.randomUUID().toString();
427         Map<String, Object> variables = new HashMap<>();
428         setVariables3(variables);
429
430         invokeSubProcess("Homing", businessKey, variables);
431
432         waitForProcessEnd(businessKey, 10000);
433
434         //Get Variables
435         WorkflowException workflowException = (WorkflowException) getVariableFromHistory(businessKey,
436                 "WorkflowException");
437
438         assertEquals("WorkflowException[processKey=Homing,errorCode=4000,errorMessage=A required " +
439                 "input variable is missing or null]", workflowException.toString());
440     }
441
442     @Test
443     @Deployment(resources = {"subprocess/BuildingBlock/Homing.bpmn", "subprocess/ReceiveWorkflowMessage.bpmn"})
444     public void testHoming_error_badResponse() throws Exception {
445         mockOof_500();
446
447         String businessKey = UUID.randomUUID().toString();
448         Map<String, Object> variables = new HashMap<>();
449         setVariables(variables);
450
451         invokeSubProcess("Homing", businessKey, variables);
452
453         waitForProcessEnd(businessKey, 10000);
454
455         //Get Variables
456         WorkflowException workflowException = (WorkflowException) getVariableFromHistory(businessKey,
457                 "WorkflowException");
458
459         assertEquals("WorkflowException[processKey=Homing,errorCode=500,errorMessage=Received a " +
460                 "Bad Sync Response from Sniro/OOF.]", workflowException.toString());
461     }
462
463     @Test
464     @Deployment(resources = {"subprocess/BuildingBlock/Homing.bpmn", "subprocess/ReceiveWorkflowMessage.bpmn"})
465     public void testHoming_error_oofNoSolution() throws Exception {
466         mockOof();
467
468         String businessKey = UUID.randomUUID().toString();
469         Map<String, Object> variables = new HashMap<>();
470         setVariables(variables);
471
472         invokeSubProcess("Homing", businessKey, variables);
473
474         injectWorkflowMessages(callbacks, "oofNoSol");
475
476         waitForProcessEnd(businessKey, 10000);
477
478         //Get Variables
479         WorkflowException workflowException = (WorkflowException) getVariableFromHistory(businessKey,
480                 "WorkflowException");
481
482         assertEquals("WorkflowException[processKey=Homing,errorCode=400,errorMessage=No solution found " +
483                 "for plan 08e1b8cf-144a-4bac-b293-d5e2eedc97e8]", workflowException.toString());
484     }
485
486     @Test
487     @Deployment(resources = {"subprocess/BuildingBlock/Homing.bpmn", "subprocess/ReceiveWorkflowMessage.bpmn"})
488     public void testHoming_error_oofPolicyException() throws Exception {
489         mockOof();
490
491         String businessKey = UUID.randomUUID().toString();
492         Map<String, Object> variables = new HashMap<>();
493         setVariables(variables);
494
495         invokeSubProcess("Homing", businessKey, variables);
496
497         injectWorkflowMessages(callbacks, "oofPolicyEx");
498
499         waitForProcessEnd(businessKey, 10000);
500
501         //Get Variables
502         WorkflowException workflowException = (WorkflowException) getVariableFromHistory(businessKey,
503                 "WorkflowException");
504
505         assertEquals("WorkflowException[processKey=Homing,errorCode=400,errorMessage=OOF Async Callback " +
506                 "Response contains a Request Error Policy Exception: Message content size exceeds the allowable " +
507                 "limit]", workflowException.toString());
508     }
509
510     @Test
511     @Deployment(resources = {"subprocess/BuildingBlock/Homing.bpmn", "subprocess/ReceiveWorkflowMessage.bpmn"})
512     public void testHoming_error_oofServiceException() throws Exception {
513         mockOof();
514
515         String businessKey = UUID.randomUUID().toString();
516         Map<String, Object> variables = new HashMap<>();
517         setVariables(variables);
518
519         invokeSubProcess("Homing", businessKey, variables);
520
521         injectWorkflowMessages(callbacks, "oofServiceEx");
522
523         waitForProcessEnd(businessKey, 10000);
524
525         //Get Variables
526         WorkflowException workflowException = (WorkflowException) getVariableFromHistory(businessKey,
527                 "WorkflowException");
528
529         assertEquals("WorkflowException[processKey=Homing,errorCode=400,errorMessage=OOF Async Callback " +
530                         "Response contains a Request Error Service Exception: OOF PlacementError: " +
531                         "requests.exceptions.HTTPError: 404 Client Error: Not Found for " +
532                         "url: http://135.21.171.200:8091/v1/plans/97b4e303-5f75-492c-8fb2-21098281c8b8]",
533                 workflowException.toString());
534     }
535
536
537     private void setVariables(Map<String, Object> variables) {
538         variables.put("homingService", "oof");
539         HashMap customerLocation = new HashMap<String, Object>();
540         customerLocation.put("customerLatitude", "32.89748");
541         customerLocation.put("customerLongitude", "-97.040443");
542         customerLocation.put("customerName", "xyz");
543         variables.put("customerLatitude", "32.89748");
544         variables.put("customerLongitude", "-97.040443");
545         variables.put("customerName", "xyz");
546         variables.put("customerLocation", customerLocation);
547         variables.put("cloudOwner", "amazon");
548         variables.put("cloudRegionId", "TNZED");
549         variables.put("isDebugLogEnabled", "true");
550         //      variables.put("mso-request-id", "testRequestId");
551         variables.put("msoRequestId", "testRequestId");
552         variables.put("serviceInstanceId", "testServiceInstanceId");
553         variables.put("serviceDecomposition", serviceDecomposition);
554         variables.put("subscriberInfo", subscriber2);
555     }
556
557     private void setVariables2(Map<String, Object> variables) {
558         List<NetworkResource> netList = new ArrayList<NetworkResource>();
559         NetworkResource net = new NetworkResource();
560         net.setResourceId("testResourceIdNet");
561         ModelInfo netModel = new ModelInfo();
562         netModel.setModelCustomizationUuid("testModelCustomizationUuidNet");
563         netModel.setModelInvariantUuid("testModelInvariantIdNet");
564         netModel.setModelName("testModelNameNet");
565         netModel.setModelVersion("testModelVersionNet");
566         net.setModelInfo(netModel);
567         netList.add(net);
568         NetworkResource net2 = new NetworkResource();
569         net2.setResourceId("testResourceIdNet2");
570         ModelInfo netModel2 = new ModelInfo();
571         netModel2.setModelCustomizationUuid("testModelCustomizationUuidNet2");
572         netModel2.setModelCustomizationName("testModelCustomizationNameNet2");
573         netModel2.setModelInvariantUuid("testModelInvariantIdNet2");
574         netModel2.setModelName("testModelNameNet2");
575         netModel2.setModelVersion("testModelVersionNet2");
576         net2.setModelInfo(netModel2);
577         netList.add(net2);
578         serviceDecomposition.setServiceNetworks(netList);
579
580         variables.put("homingService", "oof");
581         HashMap customerLocation = new HashMap<String, Object>();
582         customerLocation.put("customerLatitude", "32.89748");
583         customerLocation.put("customerLongitude", "-97.040443");
584         customerLocation.put("customerName", "xyz");
585         variables.put("customerLatitude", "32.89748");
586         variables.put("customerLongitude", "-97.040443");
587         variables.put("customerName", "xyz");
588         variables.put("customerLocation", customerLocation);
589         variables.put("cloudOwner", "amazon");
590         variables.put("cloudRegionId", "TNZED");
591         variables.put("isDebugLogEnabled", "true");
592         variables.put("msoRequestId", "testRequestId");
593         variables.put("serviceInstanceId", "testServiceInstanceId");
594         variables.put("serviceDecomposition", serviceDecomposition);
595         variables.put("subscriberInfo", subscriber2);
596     }
597
598     private void setVariables3(Map<String, Object> variables) {
599         variables.put("homingService", "oof");
600         HashMap customerLocation = new HashMap<String, Object>();
601         customerLocation.put("customerLatitude", "32.89748");
602         customerLocation.put("customerLongitude", "-97.040443");
603         customerLocation.put("customerName", "xyz");
604         variables.put("customerLatitude", "32.89748");
605         variables.put("customerLongitude", "-97.040443");
606         variables.put("customerName", "xyz");
607         variables.put("customerLocation", customerLocation);
608         variables.put("cloudOwner", "amazon");
609         variables.put("cloudRegionId", "TNZED");
610         variables.put("isDebugLogEnabled", "true");
611         //      variables.put("mso-request-id", "testRequestId");
612         variables.put("msoRequestId", "testRequestId");
613         variables.put("serviceInstanceId", "testServiceInstanceId");
614         variables.put("serviceDecomposition", null);
615         variables.put("subscriberInfo", subscriber2);
616     }
617
618     private void setVariablesExistingLicense(Map<String, Object> variables) {
619         HomingSolution currentHomingSolution = new HomingSolution();
620         serviceDecomposition.getServiceVnfs().get(0).setCurrentHomingSolution(currentHomingSolution);
621         serviceDecomposition.getServiceVnfs().get(0).getCurrentHomingSolution().getLicense().addEntitlementPool("testEntitlementPoolId1");
622         serviceDecomposition.getServiceVnfs().get(0).getCurrentHomingSolution().getLicense().addEntitlementPool("testEntitlementPoolId2");
623
624         serviceDecomposition.getServiceVnfs().get(0).getCurrentHomingSolution().getLicense().addLicenseKeyGroup("testLicenseKeyGroupId1");
625         serviceDecomposition.getServiceVnfs().get(0).getCurrentHomingSolution().getLicense().addLicenseKeyGroup("testLicenseKeyGroupId2");
626
627         variables.put("isDebugLogEnabled", "true");
628         variables.put("msoRequestId", "testRequestId");
629         variables.put("serviceInstanceId", "testServiceInstanceId");
630         variables.put("serviceDecomposition", serviceDecomposition);
631         variables.put("subscriberInfo", subscriber2);
632
633     }
634
635     private String homingSolutionService(String type, String serviceInstanceId, String vnfHostname,
636                                          String vnfResourceId, String cloudOwner,
637                                          String cloudRegionId, String enList,
638                                          String licenseList){
639
640         String solution = "";
641         if(enList == null){
642             solution = "{ \"homingSolution\" : { \"inventoryType\" : \"" + type + "\", \"serviceInstanceId\" : \"" +
643                     serviceInstanceId + "\", \"cloudOwner\" : \"" + cloudOwner + "\", \"cloudRegionId\" : \"" +
644                     cloudRegionId + "\", " + "\"vnf\" : { \"resourceId\" : \"" + vnfResourceId +
645                     "\", \"resourceType\" : \"VNF\", \"resourceInstance\" : { }, \"homingSolution\" : { \"license\" :" +
646                     " { }, \"rehome\" : false }, \"vnfHostname\" : \"" + vnfHostname + "\" }, \"license\" : { }," +
647                     " \"rehome\" : false } }";
648         }else{
649             //language=JSON
650             solution = "{ \"homingSolution\" : { \"inventoryType\" : \"" + type + "\", \"serviceInstanceId\" : \"" +
651                     serviceInstanceId + "\", \"cloudOwner\" : \"" + cloudOwner + "\", \"cloudRegionId\" : \"" +
652                     cloudRegionId + "\", \"vnf\" : { \"resourceId\" : \"" + vnfResourceId + "\", \"resourceType\" :" +
653                     " \"VNF\", \"resourceInstance\" : { }, \"homingSolution\" : { \"license\" : { }, \"rehome\" :" +
654                     " false }, \"vnfHostname\" : \"" + vnfHostname + "\" }, \"license\" : { \"entitlementPoolList\" :" +
655                     " [ " + enList + " ], \"licenseKeyGroupList\" : [ " + licenseList + " ] }, \"rehome\" : false } }";
656         }
657         return solution;
658     }
659
660     private String homingSolutionCloud(String type, String cloudOwner,
661                                        String cloudRegionId, Boolean flavors, String enList,
662                                        String licenseList){
663         String solution = "";
664         if(enList == null){
665             solution = "{ \"homingSolution\" : { \"inventoryType\" : \"" + type + "\", \"cloudOwner\" : \"" +
666                     cloudOwner + "\", \"cloudRegionId\" : \"" + cloudRegionId +
667                     "\", \"license\" : { }, \"rehome\" : false } }";
668         } else if (flavors && enList == null){
669             solution = "{ \"homingSolution\" : { \"inventoryType\" : \"" + type + "\", \"cloudOwner\" : \"" +
670                     cloudOwner + "\", \"cloudRegionId\" : \"" + cloudRegionId +
671                     "\", \"flavors\" :  [ { \"flavorLabel\" : \"flavorLabel2xxx\", \"flavor\" : \"vimFlavorxxx\" }, " +
672                     "{ \"flavorLabel\" : \"flavorLabel1xxx\", \"flavor\" : \"vimFlavorxxx\" } ], " +
673                     "\"license\" : { }, \"rehome\" : false } }";
674         } else if (flavors) {
675             solution = "{ \"homingSolution\" : { \"inventoryType\" : \"" + type + "\", \"cloudOwner\" : \"" +
676                     cloudOwner + "\", \"cloudRegionId\" : \"" + cloudRegionId +
677                     "\", \"flavors\" : [ { \"flavorLabel\" : \"flavorLabel2xxx\", \"flavor\" : \"vimFlavorxxx\" }, " +
678                     "{ \"flavorLabel\" : \"flavorLabel1xxx\", \"flavor\" : \"vimFlavorxxx\" } ], " +
679                     "\"license\" : { \"entitlementPoolList\" : [ " + enList +  " ], \"licenseKeyGroupList\" : [ " +
680                     licenseList +  " ] }, \"rehome\" : false } }";
681         } else {
682             solution = "{ \"homingSolution\" : { \"inventoryType\" : \"" + type + "\", \"cloudOwner\" : \"" +
683                     cloudOwner + "\", \"cloudRegionId\" : \"" + cloudRegionId +
684                     "\", \"license\" : { \"entitlementPoolList\" : [ " + enList +  " ], \"licenseKeyGroupList\" : [ " +
685                     licenseList +  " ] }, \"rehome\" : false } }";
686         }
687         return solution;
688     }
689
690     private void setVariablesForServiceDecomposition(Map<String, Object> variables, String requestId, String siId) {
691         variables.put("homingService", "oof");
692         variables.put("isDebugLogEnabled", "true");
693         variables.put("mso-request-id", requestId);
694         variables.put("msoRequestId", requestId);
695         variables.put("serviceInstanceId", siId);
696         HashMap customerLocation = new HashMap<String, Object>();
697         customerLocation.put("customerLatitude", "32.89748");
698         customerLocation.put("customerLongitude", "-97.040443");
699         customerLocation.put("customerName", "xyz");
700         variables.put("customerLatitude", "32.89748");
701         variables.put("customerLongitude", "-97.040443");
702         variables.put("customerName", "xyz");
703         variables.put("customerLocation", customerLocation);
704         variables.put("cloudOwner", "amazon");
705         variables.put("cloudRegionId", "TNZED");
706
707
708         String serviceModelInfo = "{\"modelInvariantId\":\"1cc4e2e4-eb6e-404d-a66f-c8733cedcce8\",\"modelUuid\":" +
709                 "\"2f7f309d-c842-4644-a2e4-34167be5eeb4\",\"modelName\":\"vCPE Service\",\"modelVersion\":\"2.0\",}";
710         variables.put("serviceModelInfo", serviceModelInfo);
711     }
712
713     private String verifyOofRequest() {
714         String request = "{\"requestInfo\":{\"transactionId\":\"testRequestId\",\"requestId\":\"testRequestId\"," +
715                 "\"callbackUrl\":\"http://localhost:28090/workflows/messages/message/oofResponse/testRequestId\"," +
716                 "\"sourceId\":\"so\",\"requestType\":\"create\",\"numSolutions\":1,\"optimizers\":[\"placement\"]," +
717                 "\"timeout\":600},\"placementInfo\":{\"requestParameters\":{\"customerLatitude\":" +
718                 "\"32.89748\",\"customerLongitude\":\"-97.040443\",\"customerName\":\"xyz\"},\"subscriberInfo\":" +
719                 "{\"globalSubscriberId\":\"SUB12_0322_DS_1201\",\"subscriberName\":\"SUB_12_0322_DS_1201\"," +
720                 "\"subscriberCommonSiteId\":\"\"},\"placementDemands\":[{\"resourceModuleName\":\"ALLOTTED_RESOURCE\"" +
721                 ",\"serviceResourceId\":\"testResourceIdAR\",\"tenantId\":" +
722                 "\"null\",\"resourceModelInfo\":{\"modelInvariantId\":\"testModelInvariantIdAR\"," +
723                 "\"modelVersionId\":\"testARModelUuid\",\"modelName\":\"testModelNameAR\",\"modelType\":" +
724                 "\"testModelTypeAR\",\"modelVersion\":\"testModelVersionAR\",\"modelCustomizationName\":\"\"}}," +
725                 "{\"resourceModuleName\":\"ALLOTTED_RESOURCE\",\"serviceResourceId\":\"testResourceIdAR2\"," +
726                 "\"tenantId\":\"null\",\"resourceModelInfo\":{\"modelInvariantId\":\"testModelInvariantIdAR2\"," +
727                 "\"modelVersionId\":\"testAr2ModelUuid\",\"modelName\":\"testModelNameAR2\"," +
728                 "\"modelType\":\"testModelTypeAR2\",\"modelVersion\":\"testModelVersionAR2\"," +
729                 "\"modelCustomizationName\":\"\"}}]},\"serviceInfo\":" +
730                 "{\"serviceInstanceId\":\"testServiceInstanceId123\"," +
731                 "\"serviceName\":\"null\",\"modelInfo\":{\"modelType\":\"\",\"modelInvariantId\":" +
732                 "\"testModelInvariantId\",\"modelVersionId\":\"testModelUuid\",\"modelName\":\"testModelName\"," +
733                 "\"modelVersion\":\"testModelVersion\",\"modelCustomizationName\":\"" +
734                 "\"}}}";
735         return request;
736     }
737
738     private String verifyOofRequestExistingLicense(){
739         String request = "{\"requestInfo\":{\"transactionId\":\"testRequestId\",\"requestId\":\"testRequestId\"," +
740                 "\"callbackUrl\":\"http://localhost:28090/workflows/messages/message/SNIROResponse/testRequestId\"," +
741                 "\"sourceId\":\"mso\",\"requestType\":\"speedchanged\",\"optimizer\":[\"placement\",\"license\"]," +
742                 "\"numSolutions\":1,\"timeout\":1800},\"placementInfo\":{\"serviceModelInfo\":{\"modelType\":\"\"," +
743                 "\"modelInvariantId\":\"testModelInvariantId\",\"modelVersionId\":\"testModelUuid\",\"modelName\":" +
744                 "\"testModelName\",\"modelVersion\":\"testModelVersion\"},\"subscriberInfo\":" +
745                 "{\"globalSubscriberId\":\"SUB12_0322_DS_1201\",\"subscriberName\":\"SUB_12_0322_DS_1201\"," +
746                 "\"subscriberCommonSiteId\":\"\"},\"demandInfo\":{\"placementDemand\":[{\"resourceInstanceType\":" +
747                 "\"ALLOTTED_RESOURCE\",\"serviceResourceId\":\"testResourceIdAR\",\"resourceModuleName\":\"\"," +
748                 "\"resourceModelInfo\":{\"modelCustomizationId\":\"testModelCustomizationUuidAR\"," +
749                 "\"modelInvariantId\":\"testModelInvariantIdAR\",\"modelName\":\"testModelNameAR\"," +
750                 "\"modelVersion\":\"testModelVersionAR\",\"modelVersionId\":\"testARModelUuid\",\"modelType\":" +
751                 "\"testModelTypeAR\"},\"tenantId\":\"\",\"tenantName\":\"\"},{\"resourceInstanceType\":" +
752                 "\"ALLOTTED_RESOURCE\",\"serviceResourceId\":\"testResourceIdAR2\",\"resourceModuleName\":" +
753                 "\"\",\"resourceModelInfo\":{\"modelCustomizationId\":\"testModelCustomizationUuidAR2\"," +
754                 "\"modelInvariantId\":\"testModelInvariantIdAR2\",\"modelName\":\"testModelNameAR2\"," +
755                 "\"modelVersion\":\"testModelVersionAR2\",\"modelVersionId\":\"testAr2ModelUuid\"," +
756                 "\"modelType\":\"testModelTypeAR2\"},\"tenantId\":\"\",\"tenantName\":\"\"}],\"licenseDemand\":" +
757                 "[{\"resourceInstanceType\":\"VNF\",\"serviceResourceId\":\"testResourceIdVNF\"," +
758                 "\"resourceModuleName\":\"\",\"resourceModelInfo\":{\"modelCustomizationId\":" +
759                 "\"testModelCustomizationUuidVNF\",\"modelInvariantId\":\"testModelInvariantIdVNF\"," +
760                 "\"modelName\":\"testModelNameVNF\",\"modelVersion\":\"testModelVersionVNF\"," +
761                 "\"modelVersionId\":\"testVnfModelUuid\",\"modelType\":\"testModelTypeVNF\"}," +
762                 "\"existingLicense\":[{\"entitlementPoolUUID\":[\"testEntitlementPoolId1\"," +
763                 "\"testEntitlementPoolId2\"],\"licenseKeyGroupUUID\":[\"testLicenseKeyGroupId1\"," +
764                 "\"testLicenseKeyGroupId2\"]}]}]},\"policyId\":[],\"serviceInstanceId\":" +
765                 "\"testServiceInstanceId123\",\"orderInfo\":\"{\\\"requestParameters\\\":null}\"}}";
766         return request;
767     }
768 }