Containerization feature of SO
[so.git] / bpmn / mso-infrastructure-bpmn / src / test / java / org / onap / so / bpmn / common / SniroHomingV1IT.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 package org.onap.so.bpmn.common;
22
23 import static org.onap.so.bpmn.mock.StubResponseDatabase.MockGetServiceResourcesCatalogDataByModelUuid;
24 import static org.onap.so.bpmn.mock.StubResponseSNIRO.*;
25 import static org.junit.Assert.*;
26
27 import java.io.IOException;
28 import java.util.ArrayList;
29 import java.util.HashMap;
30 import java.util.List;
31 import java.util.Map;
32 import java.util.UUID;
33
34 import org.camunda.bpm.engine.test.Deployment;
35 import org.junit.Ignore;
36 import org.junit.Test;
37 import org.onap.so.BaseIntegrationTest;
38 import org.onap.so.bpmn.core.WorkflowException;
39 import org.onap.so.bpmn.core.domain.*;
40 import org.onap.so.bpmn.mock.FileUtil;
41 import org.onap.so.logger.MsoLogger;
42
43
44 /**
45  * Test the SNIRO Homing subflow building block.
46  */
47 @Ignore
48 public class SniroHomingV1IT extends BaseIntegrationTest {
49         
50         MsoLogger logger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL,SniroHomingV1IT.class);
51         
52
53         ServiceDecomposition serviceDecomposition = new ServiceDecomposition();
54         String subscriber = "";
55         String subscriber2 = "";
56
57         private final CallbackSet callbacks = new CallbackSet();
58
59         public SniroHomingV1IT() throws IOException {
60                 String sniroCallback = FileUtil.readResourceFile("__files/BuildingBlocks/sniroCallback2AR1Vnf");
61                 String sniroCallback2 = FileUtil.readResourceFile("__files/BuildingBlocks/sniroCallback2AR1Vnf2Net");
62                 String sniroCallback3 = FileUtil.readResourceFile("__files/BuildingBlocks/sniroCallbackInfraVnf");
63                 String sniroCallbackNoSolution = FileUtil.readResourceFile("__files/BuildingBlocks/sniroCallbackNoSolutionFound");
64                 String sniroCallbackPolicyException = FileUtil.readResourceFile("__files/BuildingBlocks/sniroCallbackPolicyException");
65                 String sniroCallbackServiceException = FileUtil.readResourceFile("__files/BuildingBlocks/sniroCallbackServiceException");
66                 callbacks.put("sniro", JSON, "SNIROResponse", sniroCallback);
67                 callbacks.put("sniro2", JSON, "SNIROResponse", sniroCallback2);
68                 callbacks.put("sniro3", JSON, "SNIROResponse", sniroCallback3);
69                 callbacks.put("sniroNoSol", JSON, "SNIROResponse", sniroCallbackNoSolution);
70                 callbacks.put("sniroPolicyEx", JSON, "SNIROResponse", sniroCallbackPolicyException);
71                 callbacks.put("sniroServiceEx", JSON, "SNIROResponse", sniroCallbackServiceException);
72
73                 // Service Model
74                 ModelInfo sModel = new ModelInfo();
75                 sModel.setModelCustomizationUuid("testModelCustomizationUuid");
76                 sModel.setModelInstanceName("testModelInstanceName");
77                 sModel.setModelInvariantUuid("testModelInvariantId");
78                 sModel.setModelName("testModelName");
79                 sModel.setModelUuid("testModelUuid");
80                 sModel.setModelVersion("testModelVersion");
81                 // Service Instance
82                 ServiceInstance si = new ServiceInstance();
83                 si.setInstanceId("testServiceInstanceId123");
84                 // Allotted Resources
85                 List<AllottedResource> arList = new ArrayList<AllottedResource>();
86                 AllottedResource ar = new AllottedResource();
87                 ar.setResourceId("testResourceIdAR");
88                 ar.setResourceInstanceName("testARInstanceName");
89                 ModelInfo arModel = new ModelInfo();
90                 arModel.setModelCustomizationUuid("testModelCustomizationUuidAR");
91                 arModel.setModelInvariantUuid("testModelInvariantIdAR");
92                 arModel.setModelName("testModelNameAR");
93                 arModel.setModelVersion("testModelVersionAR");
94                 arModel.setModelUuid("testARModelUuid");
95                 arModel.setModelType("testModelTypeAR");
96                 ar.setModelInfo(arModel);
97                 AllottedResource ar2 = new AllottedResource();
98                 ar2.setResourceId("testResourceIdAR2");
99                 ar2.setResourceInstanceName("testAR2InstanceName");
100                 ModelInfo arModel2 = new ModelInfo();
101                 arModel2.setModelCustomizationUuid("testModelCustomizationUuidAR2");
102                 arModel2.setModelInvariantUuid("testModelInvariantIdAR2");
103                 arModel2.setModelName("testModelNameAR2");
104                 arModel2.setModelVersion("testModelVersionAR2");
105                 arModel2.setModelUuid("testAr2ModelUuid");
106                 arModel2.setModelType("testModelTypeAR2");
107                 ar2.setModelInfo(arModel2);
108                 arList.add(ar);
109                 arList.add(ar2);
110                 // Vnfs
111                 List<VnfResource> vnfList = new ArrayList<VnfResource>();
112                 VnfResource vnf = new VnfResource();
113                 vnf.setResourceId("testResourceIdVNF");
114                 vnf.setResourceInstanceName("testVnfInstanceName");
115                 ModelInfo vnfModel = new ModelInfo();
116                 vnfModel.setModelCustomizationUuid("testModelCustomizationUuidVNF");
117                 vnfModel.setModelInvariantUuid("testModelInvariantIdVNF");
118                 vnfModel.setModelName("testModelNameVNF");
119                 vnfModel.setModelVersion("testModelVersionVNF");
120                 vnfModel.setModelUuid("testVnfModelUuid");
121                 vnfModel.setModelType("testModelTypeVNF");
122                 vnf.setModelInfo(vnfModel);
123                 vnfList.add(vnf);
124                 logger.debug("SERVICE DECOMP: " + serviceDecomposition.getServiceResourcesJsonString());
125                 serviceDecomposition.setModelInfo(sModel);
126                 serviceDecomposition.setAllottedResources(arList);
127                 serviceDecomposition.setVnfResources(vnfList);
128                 serviceDecomposition.setServiceInstance(si);
129
130                 // Subscriber
131                 subscriber = "{\"globalSubscriberId\": \"SUB12_0322_DS_1201\",\"subscriberCommonSiteId\": \"DALTX0101\",\"subscriberName\": \"SUB_12_0322_DS_1201\"}";
132                 subscriber2 = "{\"globalSubscriberId\": \"SUB12_0322_DS_1201\",\"subscriberName\": \"SUB_12_0322_DS_1201\"}";
133         }
134
135         @Test
136          // 1802 merge
137         
138         public void testHoming_success_2AR1Vnf() throws Exception {
139
140                 mockSNIRO();
141
142                 String businessKey = UUID.randomUUID().toString();
143                 Map<String, Object> variables = new HashMap<>();
144                 setVariables(variables);
145
146                 invokeSubProcess("Homing", businessKey, variables);
147
148                 injectWorkflowMessages(callbacks, "sniro");
149
150                 waitForProcessEnd(businessKey, 10000);
151
152                 //Get Variables
153                 WorkflowException workflowException = (WorkflowException) getVariableFromHistory(businessKey, "WorkflowException");
154                 ServiceDecomposition serviceDecompositionExp = (ServiceDecomposition) getVariableFromHistory(businessKey, "serviceDecomposition");
155                 String expectedSniroRequest = (String) getVariableFromHistory(businessKey, "sniroRequest");
156
157                 Resource resourceAR = serviceDecompositionExp.getServiceResource("testResourceIdAR");
158                 HomingSolution resourceARHoming = resourceAR.getHomingSolution();
159                 Resource resourceAR2 = serviceDecompositionExp.getServiceResource("testResourceIdAR2");
160                 HomingSolution resourceARHoming2 = resourceAR2.getHomingSolution();
161                 Resource resourceVNF = serviceDecompositionExp.getServiceResource("testResourceIdVNF");
162                 HomingSolution resourceVNFHoming = resourceVNF.getHomingSolution();
163                 String resourceARHomingString = resourceARHoming.toString();
164                 resourceARHomingString = resourceARHomingString.replaceAll("\\s+", " ");
165                 String resourceARHoming2String = resourceARHoming2.toString();
166                 resourceARHoming2String = resourceARHoming2String.replaceAll("\\s+", " ");
167                 String resourceVNFHomingString = resourceVNFHoming.toString();
168                 resourceVNFHomingString = resourceVNFHomingString.replaceAll("\\s+", " ");
169                 expectedSniroRequest = expectedSniroRequest.replaceAll("\\s+", "");
170
171                 assertNull(workflowException);
172                 assertEquals(homingSolutionService("service", "testSIID1", "MDTNJ01", "aic", "dfwtx", "KDTNJ01", "3.0", "\"f1d563e8-e714-4393-8f99-cc480144a05e\", \"j1d563e8-e714-4393-8f99-cc480144a05e\"", "\"s1d563e8-e714-4393-8f99-cc480144a05e\", \"b1d563e8-e714-4393-8f99-cc480144a05e\""), resourceARHomingString);
173                 assertEquals(homingSolutionService("service", "testSIID2", "testVnfHostname2", "aic", "testCloudRegionId2", "testAicClli2", "3.0", null, null), resourceARHoming2String);
174                 assertEquals(homingSolutionCloud("cloud", "", "", "aic", "testCloudRegionId3", "testAicClli3", "3.0", "\"91d563e8-e714-4393-8f99-cc480144a05e\", \"21d563e8-e714-4393-8f99-cc480144a05e\"", "\"31d563e8-e714-4393-8f99-cc480144a05e\", \"71d563e8-e714-4393-8f99-cc480144a05e\""), resourceVNFHomingString);
175                 assertEquals(verifySniroRequest(), expectedSniroRequest);
176
177         }
178
179         @Test
180          // 1802 merge
181         
182         public void testHoming_success_2AR1Vnf2Net() throws Exception {
183
184                 mockSNIRO();
185
186                 String businessKey = UUID.randomUUID().toString();
187                 Map<String, Object> variables = new HashMap<>();
188                 setVariables2(variables);
189
190                 invokeSubProcess("Homing", businessKey, variables);
191
192                 injectWorkflowMessages(callbacks, "sniro2");
193
194                 waitForProcessEnd(businessKey, 10000);
195
196                 //Get Variables
197                 WorkflowException workflowException = (WorkflowException) getVariableFromHistory(businessKey, "WorkflowException");
198                 ServiceDecomposition serviceDecompositionExp = (ServiceDecomposition) getVariableFromHistory(businessKey, "serviceDecomposition");
199                 String expectedSniroRequest = (String) getVariableFromHistory(businessKey, "sniroRequest");
200
201                 Resource resourceAR = serviceDecompositionExp.getServiceResource("testResourceIdAR");
202                 HomingSolution resourceARHoming = resourceAR.getHomingSolution();
203                 Resource resourceAR2 = serviceDecompositionExp.getServiceResource("testResourceIdAR2");
204                 HomingSolution resourceARHoming2 = resourceAR2.getHomingSolution();
205                 Resource resourceVNF = serviceDecompositionExp.getServiceResource("testResourceIdVNF");
206                 HomingSolution resourceVNFHoming = resourceVNF.getHomingSolution();
207                 Resource resourceNet = serviceDecompositionExp.getServiceResource("testResourceIdNet");
208                 HomingSolution resourceNetHoming = resourceNet.getHomingSolution();
209                 Resource resourceNet2 = serviceDecompositionExp.getServiceResource("testResourceIdNet2");
210                 HomingSolution resourceNetHoming2 = resourceNet2.getHomingSolution();
211
212                 String resourceARHomingString = resourceARHoming.toString();
213                 resourceARHomingString = resourceARHomingString.replaceAll("\\s+", " ");
214                 String resourceARHoming2String = resourceARHoming2.toString();
215                 resourceARHoming2String = resourceARHoming2String.replaceAll("\\s+", " ");
216                 String resourceVNFHomingString = resourceVNFHoming.toString();
217                 resourceVNFHomingString = resourceVNFHomingString.replaceAll("\\s+", " ");
218                 String resourceNetHomingString = resourceNetHoming.toString();
219                 resourceNetHomingString = resourceNetHomingString.replaceAll("\\s+", " ");
220                 String resourceNetHoming2String = resourceNetHoming2.toString();
221                 resourceNetHoming2String = resourceNetHoming2String.replaceAll("\\s+", " ");
222                 expectedSniroRequest = expectedSniroRequest.replaceAll("\\s+", "");
223
224                 assertNull(workflowException);
225                 assertEquals(homingSolutionService("service", "testSIID1", "MDTNJ01", "aic", "dfwtx", "KDTNJ01", "3.0", "\"f1d563e8-e714-4393-8f99-cc480144a05e\", \"j1d563e8-e714-4393-8f99-cc480144a05e\"", "\"s1d563e8-e714-4393-8f99-cc480144a05e\", \"b1d563e8-e714-4393-8f99-cc480144a05e\""), resourceARHomingString);
226                 assertEquals(homingSolutionService("service", "testSIID2", "testVnfHostname2", "aic", "testCloudRegionId2", "testAicClli2", "3.0", null, null), resourceARHoming2String);
227                 assertEquals(homingSolutionCloud("cloud", "", "", "aic", "testCloudRegionId3", "testAicClli3", "3.0", "\"91d563e8-e714-4393-8f99-cc480144a05e\", \"21d563e8-e714-4393-8f99-cc480144a05e\"", "\"31d563e8-e714-4393-8f99-cc480144a05e\", \"71d563e8-e714-4393-8f99-cc480144a05e\""), resourceVNFHomingString);
228                 assertEquals(homingSolutionService("service", "testServiceInstanceIdNet", "testVnfHostNameNet", "aic", "testCloudRegionIdNet", "testAicClliNet", "3.0", null, null), resourceNetHomingString);
229                 assertEquals(homingSolutionCloud("cloud", "", "", "aic", "testCloudRegionIdNet2", "testAicClliNet2", "3.0", "\"f1d563e8-e714-4393-8f99-cc480144a05n\", \"j1d563e8-e714-4393-8f99-cc480144a05n\"", "\"s1d563e8-e714-4393-8f99-cc480144a05n\", \"b1d563e8-e714-4393-8f99-cc480144a05n\""), resourceNetHoming2String);
230                 assertEquals(verifySniroRequest(), expectedSniroRequest);
231         }
232
233         @Test
234          // 1802 merge
235         
236         public void testHoming_success_vnfResourceList() throws Exception {
237
238                 // Create a Service Decomposition 
239                 MockGetServiceResourcesCatalogDataByModelUuid("2f7f309d-c842-4644-a2e4-34167be5eeb4", "/BuildingBlocks/catalogResp.json");
240                 String busKey = UUID.randomUUID().toString();
241                 Map<String, Object> vars = new HashMap<>();
242                 setVariablesForServiceDecomposition(vars, "testRequestId123", "ff5256d2-5a33-55df-13ab-12abad84e7ff");
243                 invokeSubProcess("DecomposeService", busKey, vars);
244
245                 ServiceDecomposition sd = (ServiceDecomposition) getVariableFromHistory(busKey, "serviceDecomposition");
246                 List<VnfResource> vnfResourceList = sd.getVnfResources();
247                 vnfResourceList.get(0).setResourceId("test-resource-id-000");
248
249                 // Invoke Homing
250
251                 mockSNIRO();
252
253                 String businessKey = UUID.randomUUID().toString();
254                 Map<String, Object> variables = new HashMap<>();
255                 variables.put("homingService", "sniro");
256                 variables.put("isDebugLogEnabled", "true");
257                 variables.put("msoRequestId", "testRequestId");
258                 variables.put("serviceInstanceId", "testServiceInstanceId");
259                 variables.put("serviceDecomposition", sd);
260                 variables.put("subscriberInfo", subscriber2);
261
262                 invokeSubProcess("Homing", businessKey, variables);
263                 injectWorkflowMessages(callbacks, "sniro3");
264                 waitForProcessEnd(businessKey, 10000);
265
266                 //Get Variables
267
268                 WorkflowException workflowException = (WorkflowException) getVariableFromHistory(businessKey, "WorkflowException");
269                 ServiceDecomposition serviceDecompositionExp = (ServiceDecomposition) getVariableFromHistory(businessKey, "serviceDecomposition");
270
271                 Resource resourceVnf = serviceDecompositionExp.getServiceResource("test-resource-id-000");
272                 HomingSolution resourceVnfHoming = resourceVnf.getHomingSolution();
273
274                 String resourceVnfHomingString = resourceVnfHoming.toString();
275                 resourceVnfHomingString = resourceVnfHomingString.replaceAll("\\s+", " ");
276
277                 assertNull(workflowException);
278
279                 //Verify request
280                 String sniroRequest = (String) getVariableFromHistory(businessKey, "sniroRequest");
281                 assertEquals(FileUtil.readResourceFile("__files/BuildingBlocks/sniroRequest_infravnf").replaceAll("\n", "").replaceAll("\r", "").replaceAll("\t", ""), sniroRequest.replaceAll("\n", "").replaceAll("\r", "").replaceAll("\t", ""));
282
283                 assertEquals(homingSolutionService("service", "service-instance-01234", "MDTNJ01", "att-aic", "mtmnj1a", "KDTNJ01", "3.0", "\"f1d563e8-e714-4393-8f99-cc480144a05e\", \"j1d563e8-e714-4393-8f99-cc480144a05e\"", "\"s1d563e8-e714-4393-8f99-cc480144a05e\", \"b1d563e8-e714-4393-8f99-cc480144a05e\""), resourceVnfHomingString);
284         }
285
286         @Test
287         
288         public void testHoming_success_existingLicense() throws Exception {
289
290                 mockSNIRO();
291
292                 String businessKey = UUID.randomUUID().toString();
293                 Map<String, Object> variables = new HashMap<String, Object>();
294                 setVariablesExistingLicense(variables);
295
296                 invokeSubProcess("Homing", businessKey, variables);
297
298                 injectWorkflowMessages(callbacks, "sniro");
299
300                 waitForProcessEnd(businessKey, 10000);
301
302                 //Get Variables
303                 WorkflowException workflowException = (WorkflowException) getVariableFromHistory(businessKey, "WorkflowException");
304                 ServiceDecomposition serviceDecompositionExp = (ServiceDecomposition) getVariableFromHistory(businessKey, "serviceDecomposition");
305                 String sniroRequest = (String) getVariableFromHistory(businessKey, "sniroRequest");
306
307                 Resource resourceAR = serviceDecompositionExp.getServiceResource("testResourceIdAR");
308                 HomingSolution resourceARHoming = resourceAR.getHomingSolution();
309                 Resource resourceAR2 = serviceDecompositionExp.getServiceResource("testResourceIdAR2");
310                 HomingSolution resourceARHoming2 = resourceAR2.getHomingSolution();
311                 Resource resourceVNF = serviceDecompositionExp.getServiceResource("testResourceIdVNF");
312                 HomingSolution resourceVNFHoming = resourceVNF.getHomingSolution();
313                 String resourceARHomingString = resourceARHoming.toString();
314                 resourceARHomingString = resourceARHomingString.replaceAll("\\s+", " ");
315                 String resourceARHoming2String = resourceARHoming2.toString();
316                 resourceARHoming2String = resourceARHoming2String.replaceAll("\\s+", " ");
317                 String resourceVNFHomingString = resourceVNFHoming.toString();
318                 resourceVNFHomingString = resourceVNFHomingString.replaceAll("\\s+", " ");
319                 sniroRequest = sniroRequest.replaceAll("\\s+", "");
320
321                 assertNull(workflowException);
322                 assertEquals(homingSolutionService("service", "testSIID1", "MDTNJ01", "aic", "dfwtx", "KDTNJ01", "3.0", "\"f1d563e8-e714-4393-8f99-cc480144a05e\", \"j1d563e8-e714-4393-8f99-cc480144a05e\"", "\"s1d563e8-e714-4393-8f99-cc480144a05e\", \"b1d563e8-e714-4393-8f99-cc480144a05e\""), resourceARHomingString);
323                 assertEquals(homingSolutionService("service", "testSIID2", "testVnfHostname2", "aic", "testCloudRegionId2", "testAicClli2", "3.0", null, null), resourceARHoming2String);
324                 assertEquals(homingSolutionCloud("cloud", "", "", "aic", "testCloudRegionId3", "testAicClli3", "3.0", "\"91d563e8-e714-4393-8f99-cc480144a05e\", \"21d563e8-e714-4393-8f99-cc480144a05e\"", "\"31d563e8-e714-4393-8f99-cc480144a05e\", \"71d563e8-e714-4393-8f99-cc480144a05e\""), resourceVNFHomingString);
325                 assertEquals(verifySniroRequest_existingLicense(), sniroRequest);
326
327         }
328
329
330         @Test
331         
332         public void testHoming_error_inputVariable() throws Exception {
333
334                 String businessKey = UUID.randomUUID().toString();
335                 Map<String, Object> variables = new HashMap<>();
336                 setVariables3(variables);
337
338                 invokeSubProcess("Homing", businessKey, variables);
339
340                 waitForProcessEnd(businessKey, 10000);
341
342                 //Get Variables
343                 WorkflowException workflowException = (WorkflowException) getVariableFromHistory(businessKey, "WorkflowException");
344
345                 assertEquals("WorkflowException[processKey=Homing,errorCode=4000,errorMessage=A required input variable is missing or null]", workflowException.toString());
346         }
347
348         @Test
349         
350         public void testHoming_error_badResponse() throws Exception {
351                 mockSNIRO_500();
352
353                 String businessKey = UUID.randomUUID().toString();
354                 Map<String, Object> variables = new HashMap<>();
355                 setVariables(variables);
356
357                 invokeSubProcess("Homing", businessKey, variables);
358
359                 waitForProcessEnd(businessKey, 10000);
360
361                 //Get Variables
362                 WorkflowException workflowException = (WorkflowException) getVariableFromHistory(businessKey, "WorkflowException");
363
364                 assertEquals("WorkflowException[processKey=Homing,errorCode=500,errorMessage=Received a Bad Sync Response from Sniro/OOF.]", workflowException.toString());
365         }
366
367         @Test
368          // 1802 merge
369         
370         public void testHoming_error_sniroNoSolution() throws Exception {
371                 mockSNIRO();
372
373                 String businessKey = UUID.randomUUID().toString();
374                 Map<String, Object> variables = new HashMap<>();
375                 setVariables(variables);
376
377                 invokeSubProcess("Homing", businessKey, variables);
378
379                 injectWorkflowMessages(callbacks, "sniroNoSol");
380
381                 waitForProcessEnd(businessKey, 10000);
382
383                 //Get Variables
384                 WorkflowException workflowException = (WorkflowException) getVariableFromHistory(businessKey, "WorkflowException");
385
386                 assertEquals("WorkflowException[processKey=Homing,errorCode=400,errorMessage=No solution found for plan 08e1b8cf-144a-4bac-b293-d5e2eedc97e8]", workflowException.toString());
387         }
388
389         @Test
390         
391         public void testHoming_error_sniroPolicyException() throws Exception {
392                 mockSNIRO();
393
394                 String businessKey = UUID.randomUUID().toString();
395                 Map<String, Object> variables = new HashMap<>();
396                 setVariables(variables);
397
398                 invokeSubProcess("Homing", businessKey, variables);
399
400                 injectWorkflowMessages(callbacks, "sniroPolicyEx");
401
402                 waitForProcessEnd(businessKey, 10000);
403
404                 //Get Variables
405                 WorkflowException workflowException = (WorkflowException) getVariableFromHistory(businessKey, "WorkflowException");
406
407                 assertEquals("WorkflowException[processKey=Homing,errorCode=400,errorMessage=Sniro Async Callback Response contains a Request Error Policy Exception: Message content size exceeds the allowable limit]", workflowException.toString());
408         }
409
410         @Test
411         
412         public void testHoming_error_sniroServiceException() throws Exception {
413                 mockSNIRO();
414
415                 String businessKey = UUID.randomUUID().toString();
416                 Map<String, Object> variables = new HashMap<>();
417                 setVariables(variables);
418
419                 invokeSubProcess("Homing", businessKey, variables);
420
421                 injectWorkflowMessages(callbacks, "sniroServiceEx");
422
423                 waitForProcessEnd(businessKey, 10000);
424
425                 //Get Variables
426                 WorkflowException workflowException = (WorkflowException) getVariableFromHistory(businessKey, "WorkflowException");
427
428                 assertEquals("WorkflowException[processKey=Homing,errorCode=400,errorMessage=Sniro Async Callback Response contains a Request Error Service Exception: SNIROPlacementError: requests.exceptions.HTTPError: 404 Client Error: Not Found for url: http://135.21.171.200:8091/v1/plans/97b4e303-5f75-492c-8fb2-21098281c8b8]", workflowException.toString());
429         }
430
431
432
433         private void setVariables(Map<String, Object> variables) {
434                 variables.put("homingService", "sniro");
435                 variables.put("isDebugLogEnabled", "true");
436         //      variables.put("mso-request-id", "testRequestId");
437                 variables.put("msoRequestId", "testRequestId");
438                 variables.put("serviceInstanceId", "testServiceInstanceId");
439                 variables.put("serviceDecomposition", serviceDecomposition);
440                 variables.put("subscriberInfo", subscriber2);
441
442         }
443
444         private void setVariables2(Map<String, Object> variables) {
445                 List<NetworkResource> netList = new ArrayList<NetworkResource>();
446                 NetworkResource net = new NetworkResource();
447                 net.setResourceId("testResourceIdNet");
448                 ModelInfo netModel = new ModelInfo();
449                 netModel.setModelCustomizationUuid("testModelCustomizationUuidNet");
450                 netModel.setModelInvariantUuid("testModelInvariantIdNet");
451                 netModel.setModelName("testModelNameNet");
452                 netModel.setModelVersion("testModelVersionNet");
453                 net.setModelInfo(netModel);
454                 netList.add(net);
455                 NetworkResource net2 = new NetworkResource();
456                 net2.setResourceId("testResourceIdNet2");
457                 ModelInfo netModel2 = new ModelInfo();
458                 netModel2.setModelCustomizationUuid("testModelCustomizationUuidNet2");
459                 netModel2.setModelInvariantUuid("testModelInvariantIdNet2");
460                 netModel2.setModelName("testModelNameNet2");
461                 netModel2.setModelVersion("testModelVersionNet2");
462                 net2.setModelInfo(netModel2);
463                 netList.add(net2);
464                 serviceDecomposition.setNetworkResources(netList);
465
466                 variables.put("homingService", "sniro");
467                 variables.put("isDebugLogEnabled", "true");
468                 variables.put("msoRequestId", "testRequestId");
469                 variables.put("serviceInstanceId", "testServiceInstanceId");
470                 variables.put("serviceDecomposition", serviceDecomposition);
471                 variables.put("subscriberInfo", subscriber2);
472         }
473
474         private void setVariables3(Map<String, Object> variables) {
475                 variables.put("homingService", "sniro");
476                 variables.put("isDebugLogEnabled", "true");
477         //      variables.put("mso-request-id", "testRequestId");
478                 variables.put("msoRequestId", "testRequestId");
479                 variables.put("serviceInstanceId", "testServiceInstanceId");
480                 variables.put("serviceDecomposition", null);
481                 variables.put("subscriberInfo", subscriber2);
482
483         }
484
485         private void setVariablesExistingLicense(Map<String, Object> variables) {
486                 HomingSolution currentHomingSolution = new HomingSolution();
487                 serviceDecomposition.getVnfResources().get(0).setCurrentHomingSolution(currentHomingSolution);
488                 serviceDecomposition.getVnfResources().get(0).getCurrentHomingSolution().getLicense().addEntitlementPool("testEntitlementPoolId1");
489                 serviceDecomposition.getVnfResources().get(0).getCurrentHomingSolution().getLicense().addEntitlementPool("testEntitlementPoolId2");
490
491                 serviceDecomposition.getVnfResources().get(0).getCurrentHomingSolution().getLicense().addLicenseKeyGroup("testLicenseKeyGroupId1");
492                 serviceDecomposition.getVnfResources().get(0).getCurrentHomingSolution().getLicense().addLicenseKeyGroup("testLicenseKeyGroupId2");
493
494                 variables.put("isDebugLogEnabled", "true");
495         //      variables.put("mso-request-id", "testRequestId");
496                 variables.put("msoRequestId", "testRequestId");
497                 variables.put("serviceInstanceId", "testServiceInstanceId");
498                 variables.put("serviceDecomposition", serviceDecomposition);
499                 variables.put("subscriberInfo", subscriber2);
500
501         }
502
503         private String homingSolutionService(String type, String serviceInstanceId, String vnfHostname, String cloudOwner, String cloudRegionId, String aicClli, String aicVersion, String enList, String licenseList){
504                 String solution = "";
505                 if(enList == null){
506                         solution = "{ \"homingSolution\" : { \"inventoryType\" : \"" + type + "\", \"serviceInstanceId\" : \"" + serviceInstanceId + "\", \"vnfHostname\" : \"" + vnfHostname + "\", \"cloudOwner\" : \"" + cloudOwner + "\", \"cloudRegionId\" : \"" + cloudRegionId + "\", \"aicClli\" : \"" + aicClli + "\", \"aicVersion\" : \"" + aicVersion + "\", \"license\" : { }, \"rehome\" : false } }";
507                 }else{
508                         solution = "{ \"homingSolution\" : { \"inventoryType\" : \"" + type + "\", \"serviceInstanceId\" : \"" + serviceInstanceId + "\", \"vnfHostname\" : \"" + vnfHostname + "\", \"cloudOwner\" : \"" + cloudOwner + "\", \"cloudRegionId\" : \"" + cloudRegionId + "\", \"aicClli\" : \"" + aicClli + "\", \"aicVersion\" : \"" + aicVersion + "\", \"license\" : { \"entitlementPoolList\" : [ " + enList +  " ], \"licenseKeyGroupList\" : [ " + licenseList +  " ] }, \"rehome\" : false } }";
509                 }
510                 return solution;
511         }
512
513         private String homingSolutionCloud(String type, String serviceInstanceId, String vnfHostname, String cloudOwner, String cloudRegionId, String aicClli, String aicVersion, String enList, String licenseList){
514                 String solution = "";
515                 if(enList == null){
516                         solution = "{ \"homingSolution\" : { \"inventoryType\" : \"" + type + "\", \"cloudOwner\" : \"" + cloudOwner + "\", \"cloudRegionId\" : \"" + cloudRegionId + "\", \"aicClli\" : \"" + aicClli + "\", \"aicVersion\" : \"" + aicVersion + "\", \"license\" : { }, \"rehome\" : false } }";
517                 }else{
518                         solution = "{ \"homingSolution\" : { \"inventoryType\" : \"" + type + "\", \"cloudOwner\" : \"" + cloudOwner + "\", \"cloudRegionId\" : \"" + cloudRegionId + "\", \"aicClli\" : \"" + aicClli + "\", \"aicVersion\" : \"" + aicVersion + "\", \"license\" : { \"entitlementPoolList\" : [ " + enList +  " ], \"licenseKeyGroupList\" : [ " + licenseList +  " ] }, \"rehome\" : false } }";
519                 }
520                 return solution;
521         }
522
523         private void setVariablesForServiceDecomposition(Map<String, Object> variables, String requestId, String siId) {
524                 variables.put("homingService", "sniro");
525                 variables.put("isDebugLogEnabled", "true");
526                 variables.put("mso-request-id", requestId);
527                 variables.put("msoRequestId", requestId);
528                 variables.put("serviceInstanceId",siId);
529
530                 String serviceModelInfo = "{ "+ "\"modelType\": \"service\"," +
531                                 "\"modelInvariantUuid\": \"1cc4e2e4-eb6e-404d-a66f-c8733cedcce8\"," +
532                                 "\"modelUuid\": \"2f7f309d-c842-4644-a2e4-34167be5eeb4\"," +
533                                 "\"modelName\": \"ADIOD vRouter vCE 011017 Service\"," +
534                                 "\"modelVersion\": \"5.0\"," +
535                                 "}";
536                 variables.put("serviceModelInfo", serviceModelInfo);
537         }
538
539         private String verifySniroRequest(){
540                 String request = "{\"requestInfo\":{\"transactionId\":\"testRequestId\",\"requestId\":\"testRequestId\",\"callbackUrl\":\"http://localhost:28090/workflows/messages/message/SNIROResponse/testRequestId\",\"sourceId\":\"mso\",\"requestType\":\"initial\",\"optimizer\":[\"placement\",\"license\"],\"numSolutions\":1,\"timeout\":1800},\"placementInfo\":{\"serviceModelInfo\":{\"modelType\":\"\",\"modelInvariantId\":\"testModelInvariantId\",\"modelVersionId\":\"testModelUuid\",\"modelName\":\"testModelName\",\"modelVersion\":\"testModelVersion\"},\"subscriberInfo\":{\"globalSubscriberId\":\"SUB12_0322_DS_1201\",\"subscriberName\":\"SUB_12_0322_DS_1201\",\"subscriberCommonSiteId\":\"\"},\"demandInfo\":{\"placementDemand\":[{\"resourceInstanceType\":\"ALLOTTED_RESOURCE\",\"serviceResourceId\":\"testResourceIdAR\",\"resourceModuleName\":\"\",\"resourceModelInfo\":{\"modelCustomizationId\":\"testModelCustomizationUuidAR\",\"modelInvariantId\":\"testModelInvariantIdAR\",\"modelName\":\"testModelNameAR\",\"modelVersion\":\"testModelVersionAR\",\"modelVersionId\":\"testARModelUuid\",\"modelType\":\"testModelTypeAR\"},\"tenantId\":\"\",\"tenantName\":\"\"},{\"resourceInstanceType\":\"ALLOTTED_RESOURCE\",\"serviceResourceId\":\"testResourceIdAR2\",\"resourceModuleName\":\"\",\"resourceModelInfo\":{\"modelCustomizationId\":\"testModelCustomizationUuidAR2\",\"modelInvariantId\":\"testModelInvariantIdAR2\",\"modelName\":\"testModelNameAR2\",\"modelVersion\":\"testModelVersionAR2\",\"modelVersionId\":\"testAr2ModelUuid\",\"modelType\":\"testModelTypeAR2\"},\"tenantId\":\"\",\"tenantName\":\"\"}],\"licenseDemand\":[{\"resourceInstanceType\":\"VNF\",\"serviceResourceId\":\"testResourceIdVNF\",\"resourceModuleName\":\"\",\"resourceModelInfo\":{\"modelCustomizationId\":\"testModelCustomizationUuidVNF\",\"modelInvariantId\":\"testModelInvariantIdVNF\",\"modelName\":\"testModelNameVNF\",\"modelVersion\":\"testModelVersionVNF\",\"modelVersionId\":\"testVnfModelUuid\",\"modelType\":\"testModelTypeVNF\"}}]},\"policyId\":[],\"serviceInstanceId\":\"testServiceInstanceId123\",\"orderInfo\":\"{\\\"requestParameters\\\":null}\"}}";
541                 return request;
542         }
543
544         private String verifySniroRequest_existingLicense(){
545                 String request = "{\"requestInfo\":{\"transactionId\":\"testRequestId\",\"requestId\":\"testRequestId\",\"callbackUrl\":\"http://localhost:28090/workflows/messages/message/SNIROResponse/testRequestId\",\"sourceId\":\"mso\",\"requestType\":\"speedchanged\",\"optimizer\":[\"placement\",\"license\"],\"numSolutions\":1,\"timeout\":1800},\"placementInfo\":{\"serviceModelInfo\":{\"modelType\":\"\",\"modelInvariantId\":\"testModelInvariantId\",\"modelVersionId\":\"testModelUuid\",\"modelName\":\"testModelName\",\"modelVersion\":\"testModelVersion\"},\"subscriberInfo\":{\"globalSubscriberId\":\"SUB12_0322_DS_1201\",\"subscriberName\":\"SUB_12_0322_DS_1201\",\"subscriberCommonSiteId\":\"\"},\"demandInfo\":{\"placementDemand\":[{\"resourceInstanceType\":\"ALLOTTED_RESOURCE\",\"serviceResourceId\":\"testResourceIdAR\",\"resourceModuleName\":\"\",\"resourceModelInfo\":{\"modelCustomizationId\":\"testModelCustomizationUuidAR\",\"modelInvariantId\":\"testModelInvariantIdAR\",\"modelName\":\"testModelNameAR\",\"modelVersion\":\"testModelVersionAR\",\"modelVersionId\":\"testARModelUuid\",\"modelType\":\"testModelTypeAR\"},\"tenantId\":\"\",\"tenantName\":\"\"},{\"resourceInstanceType\":\"ALLOTTED_RESOURCE\",\"serviceResourceId\":\"testResourceIdAR2\",\"resourceModuleName\":\"\",\"resourceModelInfo\":{\"modelCustomizationId\":\"testModelCustomizationUuidAR2\",\"modelInvariantId\":\"testModelInvariantIdAR2\",\"modelName\":\"testModelNameAR2\",\"modelVersion\":\"testModelVersionAR2\",\"modelVersionId\":\"testAr2ModelUuid\",\"modelType\":\"testModelTypeAR2\"},\"tenantId\":\"\",\"tenantName\":\"\"}],\"licenseDemand\":[{\"resourceInstanceType\":\"VNF\",\"serviceResourceId\":\"testResourceIdVNF\",\"resourceModuleName\":\"\",\"resourceModelInfo\":{\"modelCustomizationId\":\"testModelCustomizationUuidVNF\",\"modelInvariantId\":\"testModelInvariantIdVNF\",\"modelName\":\"testModelNameVNF\",\"modelVersion\":\"testModelVersionVNF\",\"modelVersionId\":\"testVnfModelUuid\",\"modelType\":\"testModelTypeVNF\"},\"existingLicense\":[{\"entitlementPoolUUID\":[\"testEntitlementPoolId1\",\"testEntitlementPoolId2\"],\"licenseKeyGroupUUID\":[\"testLicenseKeyGroupId1\",\"testLicenseKeyGroupId2\"]}]}]},\"policyId\":[],\"serviceInstanceId\":\"testServiceInstanceId123\",\"orderInfo\":\"{\\\"requestParameters\\\":null}\"}}";
546                 return request;
547         }
548
549 }