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