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