Replaced all tabs with spaces in java and pom.xml
[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  * Modifications Copyright (c) 2019 Samsung
8  * ================================================================================
9  * Licensed under the Apache License, Version 2.0 (the "License");
10  * you may not use this file except in compliance with the License.
11  * You may obtain a copy of the License at
12  * 
13  *      http://www.apache.org/licenses/LICENSE-2.0
14  * 
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  * ============LICENSE_END=========================================================
21  */
22
23 package org.onap.so.bpmn.common;
24
25 import static org.onap.so.bpmn.mock.StubResponseDatabase.MockGetServiceResourcesCatalogDataByModelUuid;
26 import static org.onap.so.bpmn.mock.StubResponseSNIRO.*;
27 import static org.junit.Assert.*;
28 import java.io.IOException;
29 import java.util.ArrayList;
30 import java.util.HashMap;
31 import java.util.List;
32 import java.util.Map;
33 import java.util.UUID;
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.slf4j.Logger;
42 import org.slf4j.LoggerFactory;
43
44
45 /**
46  * Test the SNIRO Homing subflow building block.
47  */
48 @Ignore
49 public class SniroHomingV1IT extends BaseIntegrationTest {
50
51     Logger logger = LoggerFactory.getLogger(SniroHomingV1IT.class);
52
53
54     ServiceDecomposition serviceDecomposition = new ServiceDecomposition();
55     String subscriber = "";
56     String subscriber2 = "";
57
58     private final CallbackSet callbacks = new CallbackSet();
59
60     public SniroHomingV1IT() throws IOException {
61         String sniroCallback = FileUtil.readResourceFile("__files/BuildingBlocks/sniroCallback2AR1Vnf");
62         String sniroCallback2 = FileUtil.readResourceFile("__files/BuildingBlocks/sniroCallback2AR1Vnf2Net");
63         String sniroCallback3 = FileUtil.readResourceFile("__files/BuildingBlocks/sniroCallbackInfraVnf");
64         String sniroCallbackNoSolution =
65                 FileUtil.readResourceFile("__files/BuildingBlocks/sniroCallbackNoSolutionFound");
66         String sniroCallbackPolicyException =
67                 FileUtil.readResourceFile("__files/BuildingBlocks/sniroCallbackPolicyException");
68         String sniroCallbackServiceException =
69                 FileUtil.readResourceFile("__files/BuildingBlocks/sniroCallbackServiceException");
70         callbacks.put("sniro", JSON, "SNIROResponse", sniroCallback);
71         callbacks.put("sniro2", JSON, "SNIROResponse", sniroCallback2);
72         callbacks.put("sniro3", JSON, "SNIROResponse", sniroCallback3);
73         callbacks.put("sniroNoSol", JSON, "SNIROResponse", sniroCallbackNoSolution);
74         callbacks.put("sniroPolicyEx", JSON, "SNIROResponse", sniroCallbackPolicyException);
75         callbacks.put("sniroServiceEx", JSON, "SNIROResponse", sniroCallbackServiceException);
76
77         // Service Model
78         ModelInfo sModel = new ModelInfo();
79         sModel.setModelCustomizationUuid("testModelCustomizationUuid");
80         sModel.setModelInstanceName("testModelInstanceName");
81         sModel.setModelInvariantUuid("testModelInvariantId");
82         sModel.setModelName("testModelName");
83         sModel.setModelUuid("testModelUuid");
84         sModel.setModelVersion("testModelVersion");
85         // Service Instance
86         ServiceInstance si = new ServiceInstance();
87         si.setInstanceId("testServiceInstanceId123");
88         // Allotted Resources
89         List<AllottedResource> arList = new ArrayList<AllottedResource>();
90         AllottedResource ar = new AllottedResource();
91         ar.setResourceId("testResourceIdAR");
92         ar.setResourceInstanceName("testARInstanceName");
93         ModelInfo arModel = new ModelInfo();
94         arModel.setModelCustomizationUuid("testModelCustomizationUuidAR");
95         arModel.setModelInvariantUuid("testModelInvariantIdAR");
96         arModel.setModelName("testModelNameAR");
97         arModel.setModelVersion("testModelVersionAR");
98         arModel.setModelUuid("testARModelUuid");
99         arModel.setModelType("testModelTypeAR");
100         ar.setModelInfo(arModel);
101         AllottedResource ar2 = new AllottedResource();
102         ar2.setResourceId("testResourceIdAR2");
103         ar2.setResourceInstanceName("testAR2InstanceName");
104         ModelInfo arModel2 = new ModelInfo();
105         arModel2.setModelCustomizationUuid("testModelCustomizationUuidAR2");
106         arModel2.setModelInvariantUuid("testModelInvariantIdAR2");
107         arModel2.setModelName("testModelNameAR2");
108         arModel2.setModelVersion("testModelVersionAR2");
109         arModel2.setModelUuid("testAr2ModelUuid");
110         arModel2.setModelType("testModelTypeAR2");
111         ar2.setModelInfo(arModel2);
112         arList.add(ar);
113         arList.add(ar2);
114         // Vnfs
115         List<VnfResource> vnfList = new ArrayList<VnfResource>();
116         VnfResource vnf = new VnfResource();
117         vnf.setResourceId("testResourceIdVNF");
118         vnf.setResourceInstanceName("testVnfInstanceName");
119         ModelInfo vnfModel = new ModelInfo();
120         vnfModel.setModelCustomizationUuid("testModelCustomizationUuidVNF");
121         vnfModel.setModelInvariantUuid("testModelInvariantIdVNF");
122         vnfModel.setModelName("testModelNameVNF");
123         vnfModel.setModelVersion("testModelVersionVNF");
124         vnfModel.setModelUuid("testVnfModelUuid");
125         vnfModel.setModelType("testModelTypeVNF");
126         vnf.setModelInfo(vnfModel);
127         vnfList.add(vnf);
128         logger.debug("SERVICE DECOMP: {}", serviceDecomposition.getServiceResourcesJsonString());
129         serviceDecomposition.setModelInfo(sModel);
130         serviceDecomposition.setAllottedResources(arList);
131         serviceDecomposition.setVnfResources(vnfList);
132         serviceDecomposition.setServiceInstance(si);
133
134         // Subscriber
135         subscriber =
136                 "{\"globalSubscriberId\": \"SUB12_0322_DS_1201\",\"subscriberCommonSiteId\": \"DALTX0101\",\"subscriberName\": \"SUB_12_0322_DS_1201\"}";
137         subscriber2 = "{\"globalSubscriberId\": \"SUB12_0322_DS_1201\",\"subscriberName\": \"SUB_12_0322_DS_1201\"}";
138     }
139
140     @Test
141     // 1802 merge
142
143     public void testHoming_success_2AR1Vnf() throws Exception {
144
145         mockSNIRO(wireMockServer);
146
147         String businessKey = UUID.randomUUID().toString();
148         Map<String, Object> variables = new HashMap<>();
149         setVariables(variables);
150
151         invokeSubProcess("Homing", businessKey, variables);
152
153         injectWorkflowMessages(callbacks, "sniro");
154
155         waitForProcessEnd(businessKey, 10000);
156
157         // Get Variables
158         WorkflowException workflowException =
159                 (WorkflowException) getVariableFromHistory(businessKey, "WorkflowException");
160         ServiceDecomposition serviceDecompositionExp =
161                 (ServiceDecomposition) getVariableFromHistory(businessKey, "serviceDecomposition");
162         String expectedSniroRequest = (String) getVariableFromHistory(businessKey, "sniroRequest");
163
164         Resource resourceAR = serviceDecompositionExp.getServiceResource("testResourceIdAR");
165         HomingSolution resourceARHoming = resourceAR.getHomingSolution();
166         Resource resourceAR2 = serviceDecompositionExp.getServiceResource("testResourceIdAR2");
167         HomingSolution resourceARHoming2 = resourceAR2.getHomingSolution();
168         Resource resourceVNF = serviceDecompositionExp.getServiceResource("testResourceIdVNF");
169         HomingSolution resourceVNFHoming = resourceVNF.getHomingSolution();
170         String resourceARHomingString = resourceARHoming.toString();
171         resourceARHomingString = resourceARHomingString.replaceAll("\\s+", " ");
172         String resourceARHoming2String = resourceARHoming2.toString();
173         resourceARHoming2String = resourceARHoming2String.replaceAll("\\s+", " ");
174         String resourceVNFHomingString = resourceVNFHoming.toString();
175         resourceVNFHomingString = resourceVNFHomingString.replaceAll("\\s+", " ");
176         expectedSniroRequest = expectedSniroRequest.replaceAll("\\s+", "");
177
178         assertNull(workflowException);
179         assertEquals(
180                 homingSolutionService("service", "testSIID1", "MDTNJ01", "aic", "dfwtx", "KDTNJ01", "3.0",
181                         "\"f1d563e8-e714-4393-8f99-cc480144a05e\", \"j1d563e8-e714-4393-8f99-cc480144a05e\"",
182                         "\"s1d563e8-e714-4393-8f99-cc480144a05e\", \"b1d563e8-e714-4393-8f99-cc480144a05e\""),
183                 resourceARHomingString);
184         assertEquals(homingSolutionService("service", "testSIID2", "testVnfHostname2", "aic", "testCloudRegionId2",
185                 "testAicClli2", "3.0", null, null), resourceARHoming2String);
186         assertEquals(
187                 homingSolutionCloud("cloud", "", "", "aic", "testCloudRegionId3", "testAicClli3", "3.0",
188                         "\"91d563e8-e714-4393-8f99-cc480144a05e\", \"21d563e8-e714-4393-8f99-cc480144a05e\"",
189                         "\"31d563e8-e714-4393-8f99-cc480144a05e\", \"71d563e8-e714-4393-8f99-cc480144a05e\""),
190                 resourceVNFHomingString);
191         assertEquals(verifySniroRequest(), expectedSniroRequest);
192
193     }
194
195     @Test
196     // 1802 merge
197
198     public void testHoming_success_2AR1Vnf2Net() throws Exception {
199
200         mockSNIRO(wireMockServer);
201
202         String businessKey = UUID.randomUUID().toString();
203         Map<String, Object> variables = new HashMap<>();
204         setVariables2(variables);
205
206         invokeSubProcess("Homing", businessKey, variables);
207
208         injectWorkflowMessages(callbacks, "sniro2");
209
210         waitForProcessEnd(businessKey, 10000);
211
212         // Get Variables
213         WorkflowException workflowException =
214                 (WorkflowException) getVariableFromHistory(businessKey, "WorkflowException");
215         ServiceDecomposition serviceDecompositionExp =
216                 (ServiceDecomposition) getVariableFromHistory(businessKey, "serviceDecomposition");
217         String expectedSniroRequest = (String) getVariableFromHistory(businessKey, "sniroRequest");
218
219         Resource resourceAR = serviceDecompositionExp.getServiceResource("testResourceIdAR");
220         HomingSolution resourceARHoming = resourceAR.getHomingSolution();
221         Resource resourceAR2 = serviceDecompositionExp.getServiceResource("testResourceIdAR2");
222         HomingSolution resourceARHoming2 = resourceAR2.getHomingSolution();
223         Resource resourceVNF = serviceDecompositionExp.getServiceResource("testResourceIdVNF");
224         HomingSolution resourceVNFHoming = resourceVNF.getHomingSolution();
225         Resource resourceNet = serviceDecompositionExp.getServiceResource("testResourceIdNet");
226         HomingSolution resourceNetHoming = resourceNet.getHomingSolution();
227         Resource resourceNet2 = serviceDecompositionExp.getServiceResource("testResourceIdNet2");
228         HomingSolution resourceNetHoming2 = resourceNet2.getHomingSolution();
229
230         String resourceARHomingString = resourceARHoming.toString();
231         resourceARHomingString = resourceARHomingString.replaceAll("\\s+", " ");
232         String resourceARHoming2String = resourceARHoming2.toString();
233         resourceARHoming2String = resourceARHoming2String.replaceAll("\\s+", " ");
234         String resourceVNFHomingString = resourceVNFHoming.toString();
235         resourceVNFHomingString = resourceVNFHomingString.replaceAll("\\s+", " ");
236         String resourceNetHomingString = resourceNetHoming.toString();
237         resourceNetHomingString = resourceNetHomingString.replaceAll("\\s+", " ");
238         String resourceNetHoming2String = resourceNetHoming2.toString();
239         resourceNetHoming2String = resourceNetHoming2String.replaceAll("\\s+", " ");
240         expectedSniroRequest = expectedSniroRequest.replaceAll("\\s+", "");
241
242         assertNull(workflowException);
243         assertEquals(
244                 homingSolutionService("service", "testSIID1", "MDTNJ01", "aic", "dfwtx", "KDTNJ01", "3.0",
245                         "\"f1d563e8-e714-4393-8f99-cc480144a05e\", \"j1d563e8-e714-4393-8f99-cc480144a05e\"",
246                         "\"s1d563e8-e714-4393-8f99-cc480144a05e\", \"b1d563e8-e714-4393-8f99-cc480144a05e\""),
247                 resourceARHomingString);
248         assertEquals(homingSolutionService("service", "testSIID2", "testVnfHostname2", "aic", "testCloudRegionId2",
249                 "testAicClli2", "3.0", null, null), resourceARHoming2String);
250         assertEquals(
251                 homingSolutionCloud("cloud", "", "", "aic", "testCloudRegionId3", "testAicClli3", "3.0",
252                         "\"91d563e8-e714-4393-8f99-cc480144a05e\", \"21d563e8-e714-4393-8f99-cc480144a05e\"",
253                         "\"31d563e8-e714-4393-8f99-cc480144a05e\", \"71d563e8-e714-4393-8f99-cc480144a05e\""),
254                 resourceVNFHomingString);
255         assertEquals(homingSolutionService("service", "testServiceInstanceIdNet", "testVnfHostNameNet", "aic",
256                 "testCloudRegionIdNet", "testAicClliNet", "3.0", null, null), resourceNetHomingString);
257         assertEquals(
258                 homingSolutionCloud("cloud", "", "", "aic", "testCloudRegionIdNet2", "testAicClliNet2", "3.0",
259                         "\"f1d563e8-e714-4393-8f99-cc480144a05n\", \"j1d563e8-e714-4393-8f99-cc480144a05n\"",
260                         "\"s1d563e8-e714-4393-8f99-cc480144a05n\", \"b1d563e8-e714-4393-8f99-cc480144a05n\""),
261                 resourceNetHoming2String);
262         assertEquals(verifySniroRequest(), expectedSniroRequest);
263     }
264
265     @Test
266     // 1802 merge
267
268     public void testHoming_success_vnfResourceList() throws Exception {
269
270         // Create a Service Decomposition
271         MockGetServiceResourcesCatalogDataByModelUuid(wireMockServer, "2f7f309d-c842-4644-a2e4-34167be5eeb4",
272                 "/BuildingBlocks/catalogResp.json");
273         String busKey = UUID.randomUUID().toString();
274         Map<String, Object> vars = new HashMap<>();
275         setVariablesForServiceDecomposition(vars, "testRequestId123", "ff5256d2-5a33-55df-13ab-12abad84e7ff");
276         invokeSubProcess("DecomposeService", busKey, vars);
277
278         ServiceDecomposition sd = (ServiceDecomposition) getVariableFromHistory(busKey, "serviceDecomposition");
279         List<VnfResource> vnfResourceList = sd.getVnfResources();
280         vnfResourceList.get(0).setResourceId("test-resource-id-000");
281
282         // Invoke Homing
283
284         mockSNIRO(wireMockServer);
285
286         String businessKey = UUID.randomUUID().toString();
287         Map<String, Object> variables = new HashMap<>();
288         variables.put("homingService", "sniro");
289         variables.put("isDebugLogEnabled", "true");
290         variables.put("msoRequestId", "testRequestId");
291         variables.put("serviceInstanceId", "testServiceInstanceId");
292         variables.put("serviceDecomposition", sd);
293         variables.put("subscriberInfo", subscriber2);
294
295         invokeSubProcess("Homing", businessKey, variables);
296         injectWorkflowMessages(callbacks, "sniro3");
297         waitForProcessEnd(businessKey, 10000);
298
299         // Get Variables
300
301         WorkflowException workflowException =
302                 (WorkflowException) getVariableFromHistory(businessKey, "WorkflowException");
303         ServiceDecomposition serviceDecompositionExp =
304                 (ServiceDecomposition) getVariableFromHistory(businessKey, "serviceDecomposition");
305
306         Resource resourceVnf = serviceDecompositionExp.getServiceResource("test-resource-id-000");
307         HomingSolution resourceVnfHoming = resourceVnf.getHomingSolution();
308
309         String resourceVnfHomingString = resourceVnfHoming.toString();
310         resourceVnfHomingString = resourceVnfHomingString.replaceAll("\\s+", " ");
311
312         assertNull(workflowException);
313
314         // Verify request
315         String sniroRequest = (String) getVariableFromHistory(businessKey, "sniroRequest");
316         assertEquals(
317                 FileUtil.readResourceFile("__files/BuildingBlocks/sniroRequest_infravnf").replaceAll("\n", "")
318                         .replaceAll("\r", "").replaceAll("\t", ""),
319                 sniroRequest.replaceAll("\n", "").replaceAll("\r", "").replaceAll("\t", ""));
320
321         assertEquals(homingSolutionService("service", "service-instance-01234", "MDTNJ01", "CloudOwner", "mtmnj1a",
322                 "KDTNJ01", "3.0", "\"f1d563e8-e714-4393-8f99-cc480144a05e\", \"j1d563e8-e714-4393-8f99-cc480144a05e\"",
323                 "\"s1d563e8-e714-4393-8f99-cc480144a05e\", \"b1d563e8-e714-4393-8f99-cc480144a05e\""),
324                 resourceVnfHomingString);
325     }
326
327     @Test
328
329     public void testHoming_success_existingLicense() throws Exception {
330
331         mockSNIRO(wireMockServer);
332
333         String businessKey = UUID.randomUUID().toString();
334         Map<String, Object> variables = new HashMap<String, Object>();
335         setVariablesExistingLicense(variables);
336
337         invokeSubProcess("Homing", businessKey, variables);
338
339         injectWorkflowMessages(callbacks, "sniro");
340
341         waitForProcessEnd(businessKey, 10000);
342
343         // Get Variables
344         WorkflowException workflowException =
345                 (WorkflowException) getVariableFromHistory(businessKey, "WorkflowException");
346         ServiceDecomposition serviceDecompositionExp =
347                 (ServiceDecomposition) getVariableFromHistory(businessKey, "serviceDecomposition");
348         String sniroRequest = (String) getVariableFromHistory(businessKey, "sniroRequest");
349
350         Resource resourceAR = serviceDecompositionExp.getServiceResource("testResourceIdAR");
351         HomingSolution resourceARHoming = resourceAR.getHomingSolution();
352         Resource resourceAR2 = serviceDecompositionExp.getServiceResource("testResourceIdAR2");
353         HomingSolution resourceARHoming2 = resourceAR2.getHomingSolution();
354         Resource resourceVNF = serviceDecompositionExp.getServiceResource("testResourceIdVNF");
355         HomingSolution resourceVNFHoming = resourceVNF.getHomingSolution();
356         String resourceARHomingString = resourceARHoming.toString();
357         resourceARHomingString = resourceARHomingString.replaceAll("\\s+", " ");
358         String resourceARHoming2String = resourceARHoming2.toString();
359         resourceARHoming2String = resourceARHoming2String.replaceAll("\\s+", " ");
360         String resourceVNFHomingString = resourceVNFHoming.toString();
361         resourceVNFHomingString = resourceVNFHomingString.replaceAll("\\s+", " ");
362         sniroRequest = sniroRequest.replaceAll("\\s+", "");
363
364         assertNull(workflowException);
365         assertEquals(
366                 homingSolutionService("service", "testSIID1", "MDTNJ01", "aic", "dfwtx", "KDTNJ01", "3.0",
367                         "\"f1d563e8-e714-4393-8f99-cc480144a05e\", \"j1d563e8-e714-4393-8f99-cc480144a05e\"",
368                         "\"s1d563e8-e714-4393-8f99-cc480144a05e\", \"b1d563e8-e714-4393-8f99-cc480144a05e\""),
369                 resourceARHomingString);
370         assertEquals(homingSolutionService("service", "testSIID2", "testVnfHostname2", "aic", "testCloudRegionId2",
371                 "testAicClli2", "3.0", null, null), resourceARHoming2String);
372         assertEquals(
373                 homingSolutionCloud("cloud", "", "", "aic", "testCloudRegionId3", "testAicClli3", "3.0",
374                         "\"91d563e8-e714-4393-8f99-cc480144a05e\", \"21d563e8-e714-4393-8f99-cc480144a05e\"",
375                         "\"31d563e8-e714-4393-8f99-cc480144a05e\", \"71d563e8-e714-4393-8f99-cc480144a05e\""),
376                 resourceVNFHomingString);
377         assertEquals(verifySniroRequest_existingLicense(), sniroRequest);
378
379     }
380
381
382     @Test
383
384     public void testHoming_error_inputVariable() throws Exception {
385
386         String businessKey = UUID.randomUUID().toString();
387         Map<String, Object> variables = new HashMap<>();
388         setVariables3(variables);
389
390         invokeSubProcess("Homing", businessKey, variables);
391
392         waitForProcessEnd(businessKey, 10000);
393
394         // Get Variables
395         WorkflowException workflowException =
396                 (WorkflowException) getVariableFromHistory(businessKey, "WorkflowException");
397
398         assertEquals(
399                 "WorkflowException[processKey=Homing,errorCode=4000,errorMessage=A required input variable is missing or null]",
400                 workflowException.toString());
401     }
402
403     @Test
404
405     public void testHoming_error_badResponse() throws Exception {
406         mockSNIRO_500(wireMockServer);
407
408         String businessKey = UUID.randomUUID().toString();
409         Map<String, Object> variables = new HashMap<>();
410         setVariables(variables);
411
412         invokeSubProcess("Homing", businessKey, variables);
413
414         waitForProcessEnd(businessKey, 10000);
415
416         // Get Variables
417         WorkflowException workflowException =
418                 (WorkflowException) getVariableFromHistory(businessKey, "WorkflowException");
419
420         assertEquals(
421                 "WorkflowException[processKey=Homing,errorCode=500,errorMessage=Received a Bad Sync Response from Sniro/OOF.]",
422                 workflowException.toString());
423     }
424
425     @Test
426     // 1802 merge
427
428     public void testHoming_error_sniroNoSolution() throws Exception {
429         mockSNIRO(wireMockServer);
430
431         String businessKey = UUID.randomUUID().toString();
432         Map<String, Object> variables = new HashMap<>();
433         setVariables(variables);
434
435         invokeSubProcess("Homing", businessKey, variables);
436
437         injectWorkflowMessages(callbacks, "sniroNoSol");
438
439         waitForProcessEnd(businessKey, 10000);
440
441         // Get Variables
442         WorkflowException workflowException =
443                 (WorkflowException) getVariableFromHistory(businessKey, "WorkflowException");
444
445         assertEquals(
446                 "WorkflowException[processKey=Homing,errorCode=400,errorMessage=No solution found for plan 08e1b8cf-144a-4bac-b293-d5e2eedc97e8]",
447                 workflowException.toString());
448     }
449
450     @Test
451
452     public void testHoming_error_sniroPolicyException() throws Exception {
453         mockSNIRO(wireMockServer);
454
455         String businessKey = UUID.randomUUID().toString();
456         Map<String, Object> variables = new HashMap<>();
457         setVariables(variables);
458
459         invokeSubProcess("Homing", businessKey, variables);
460
461         injectWorkflowMessages(callbacks, "sniroPolicyEx");
462
463         waitForProcessEnd(businessKey, 10000);
464
465         // Get Variables
466         WorkflowException workflowException =
467                 (WorkflowException) getVariableFromHistory(businessKey, "WorkflowException");
468
469         assertEquals(
470                 "WorkflowException[processKey=Homing,errorCode=400,errorMessage=Sniro Async Callback Response contains a Request Error Policy Exception: Message content size exceeds the allowable limit]",
471                 workflowException.toString());
472     }
473
474     @Test
475
476     public void testHoming_error_sniroServiceException() throws Exception {
477         mockSNIRO(wireMockServer);
478
479         String businessKey = UUID.randomUUID().toString();
480         Map<String, Object> variables = new HashMap<>();
481         setVariables(variables);
482
483         invokeSubProcess("Homing", businessKey, variables);
484
485         injectWorkflowMessages(callbacks, "sniroServiceEx");
486
487         waitForProcessEnd(businessKey, 10000);
488
489         // Get Variables
490         WorkflowException workflowException =
491                 (WorkflowException) getVariableFromHistory(businessKey, "WorkflowException");
492
493         assertEquals(
494                 "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]",
495                 workflowException.toString());
496     }
497
498
499
500     private void setVariables(Map<String, Object> variables) {
501         variables.put("homingService", "sniro");
502         variables.put("isDebugLogEnabled", "true");
503         // variables.put("mso-request-id", "testRequestId");
504         variables.put("msoRequestId", "testRequestId");
505         variables.put("serviceInstanceId", "testServiceInstanceId");
506         variables.put("serviceDecomposition", serviceDecomposition);
507         variables.put("subscriberInfo", subscriber2);
508
509     }
510
511     private void setVariables2(Map<String, Object> variables) {
512         List<NetworkResource> netList = new ArrayList<NetworkResource>();
513         NetworkResource net = new NetworkResource();
514         net.setResourceId("testResourceIdNet");
515         ModelInfo netModel = new ModelInfo();
516         netModel.setModelCustomizationUuid("testModelCustomizationUuidNet");
517         netModel.setModelInvariantUuid("testModelInvariantIdNet");
518         netModel.setModelName("testModelNameNet");
519         netModel.setModelVersion("testModelVersionNet");
520         net.setModelInfo(netModel);
521         netList.add(net);
522         NetworkResource net2 = new NetworkResource();
523         net2.setResourceId("testResourceIdNet2");
524         ModelInfo netModel2 = new ModelInfo();
525         netModel2.setModelCustomizationUuid("testModelCustomizationUuidNet2");
526         netModel2.setModelInvariantUuid("testModelInvariantIdNet2");
527         netModel2.setModelName("testModelNameNet2");
528         netModel2.setModelVersion("testModelVersionNet2");
529         net2.setModelInfo(netModel2);
530         netList.add(net2);
531         serviceDecomposition.setNetworkResources(netList);
532
533         variables.put("homingService", "sniro");
534         variables.put("isDebugLogEnabled", "true");
535         variables.put("msoRequestId", "testRequestId");
536         variables.put("serviceInstanceId", "testServiceInstanceId");
537         variables.put("serviceDecomposition", serviceDecomposition);
538         variables.put("subscriberInfo", subscriber2);
539     }
540
541     private void setVariables3(Map<String, Object> variables) {
542         variables.put("homingService", "sniro");
543         variables.put("isDebugLogEnabled", "true");
544         // variables.put("mso-request-id", "testRequestId");
545         variables.put("msoRequestId", "testRequestId");
546         variables.put("serviceInstanceId", "testServiceInstanceId");
547         variables.put("serviceDecomposition", null);
548         variables.put("subscriberInfo", subscriber2);
549
550     }
551
552     private void setVariablesExistingLicense(Map<String, Object> variables) {
553         HomingSolution currentHomingSolution = new HomingSolution();
554         serviceDecomposition.getVnfResources().get(0).setCurrentHomingSolution(currentHomingSolution);
555         serviceDecomposition.getVnfResources().get(0).getCurrentHomingSolution().getLicense()
556                 .addEntitlementPool("testEntitlementPoolId1");
557         serviceDecomposition.getVnfResources().get(0).getCurrentHomingSolution().getLicense()
558                 .addEntitlementPool("testEntitlementPoolId2");
559
560         serviceDecomposition.getVnfResources().get(0).getCurrentHomingSolution().getLicense()
561                 .addLicenseKeyGroup("testLicenseKeyGroupId1");
562         serviceDecomposition.getVnfResources().get(0).getCurrentHomingSolution().getLicense()
563                 .addLicenseKeyGroup("testLicenseKeyGroupId2");
564
565         variables.put("isDebugLogEnabled", "true");
566         // variables.put("mso-request-id", "testRequestId");
567         variables.put("msoRequestId", "testRequestId");
568         variables.put("serviceInstanceId", "testServiceInstanceId");
569         variables.put("serviceDecomposition", serviceDecomposition);
570         variables.put("subscriberInfo", subscriber2);
571
572     }
573
574     private String homingSolutionService(String type, String serviceInstanceId, String vnfHostname, String cloudOwner,
575             String cloudRegionId, String aicClli, String aicVersion, String enList, String licenseList) {
576         String solution = "";
577         if (enList == null) {
578             solution = "{ \"homingSolution\" : { \"inventoryType\" : \"" + type + "\", \"serviceInstanceId\" : \""
579                     + serviceInstanceId + "\", \"vnfHostname\" : \"" + vnfHostname + "\", \"cloudOwner\" : \""
580                     + cloudOwner + "\", \"cloudRegionId\" : \"" + cloudRegionId + "\", \"aicClli\" : \"" + aicClli
581                     + "\", \"aicVersion\" : \"" + aicVersion + "\", \"license\" : { }, \"rehome\" : false } }";
582         } else {
583             solution = "{ \"homingSolution\" : { \"inventoryType\" : \"" + type + "\", \"serviceInstanceId\" : \""
584                     + serviceInstanceId + "\", \"vnfHostname\" : \"" + vnfHostname + "\", \"cloudOwner\" : \""
585                     + cloudOwner + "\", \"cloudRegionId\" : \"" + cloudRegionId + "\", \"aicClli\" : \"" + aicClli
586                     + "\", \"aicVersion\" : \"" + aicVersion + "\", \"license\" : { \"entitlementPoolList\" : [ "
587                     + enList + " ], \"licenseKeyGroupList\" : [ " + licenseList + " ] }, \"rehome\" : false } }";
588         }
589         return solution;
590     }
591
592     private String homingSolutionCloud(String type, String serviceInstanceId, String vnfHostname, String cloudOwner,
593             String cloudRegionId, String aicClli, String aicVersion, String enList, String licenseList) {
594         String solution = "";
595         if (enList == null) {
596             solution = "{ \"homingSolution\" : { \"inventoryType\" : \"" + type + "\", \"cloudOwner\" : \"" + cloudOwner
597                     + "\", \"cloudRegionId\" : \"" + cloudRegionId + "\", \"aicClli\" : \"" + aicClli
598                     + "\", \"aicVersion\" : \"" + aicVersion + "\", \"license\" : { }, \"rehome\" : false } }";
599         } else {
600             solution = "{ \"homingSolution\" : { \"inventoryType\" : \"" + type + "\", \"cloudOwner\" : \"" + cloudOwner
601                     + "\", \"cloudRegionId\" : \"" + cloudRegionId + "\", \"aicClli\" : \"" + aicClli
602                     + "\", \"aicVersion\" : \"" + aicVersion + "\", \"license\" : { \"entitlementPoolList\" : [ "
603                     + enList + " ], \"licenseKeyGroupList\" : [ " + licenseList + " ] }, \"rehome\" : false } }";
604         }
605         return solution;
606     }
607
608     private void setVariablesForServiceDecomposition(Map<String, Object> variables, String requestId, String siId) {
609         variables.put("homingService", "sniro");
610         variables.put("isDebugLogEnabled", "true");
611         variables.put("mso-request-id", requestId);
612         variables.put("msoRequestId", requestId);
613         variables.put("serviceInstanceId", siId);
614
615         String serviceModelInfo = "{ " + "\"modelType\": \"service\","
616                 + "\"modelInvariantUuid\": \"1cc4e2e4-eb6e-404d-a66f-c8733cedcce8\","
617                 + "\"modelUuid\": \"2f7f309d-c842-4644-a2e4-34167be5eeb4\","
618                 + "\"modelName\": \"ADIOD vRouter vCE 011017 Service\"," + "\"modelVersion\": \"5.0\"," + "}";
619         variables.put("serviceModelInfo", serviceModelInfo);
620     }
621
622     private String verifySniroRequest() {
623         String request =
624                 "{\"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}\"}}";
625         return request;
626     }
627
628     private String verifySniroRequest_existingLicense() {
629         String request =
630                 "{\"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}\"}}";
631         return request;
632     }
633
634 }