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