1 package org.onap.vid.api;
3 import static net.javacrumbs.jsonunit.JsonMatchers.jsonEquals;
4 import static net.javacrumbs.jsonunit.core.Option.IGNORING_ARRAY_ORDER;
5 import static net.javacrumbs.jsonunit.core.Option.IGNORING_EXTRA_FIELDS;
6 import static org.apache.commons.text.StringEscapeUtils.escapeJson;
7 import static org.hamcrest.CoreMatchers.is;
8 import static org.hamcrest.MatcherAssert.assertThat;
9 import static org.hamcrest.Matchers.containsString;
10 import static org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetCloudOwnersByCloudRegionId.ATT_AIC;
11 import static org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetCloudOwnersByCloudRegionId.ATT_NC;
12 import static org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetCloudOwnersByCloudRegionId.AUK51A;
13 import static org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetCloudOwnersByCloudRegionId.hvf6;
14 import static org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetCloudOwnersByCloudRegionId.olson3;
15 import static org.onap.simulator.presetGenerator.presets.aai.PresetAAIStandardQueryGet.defaultPlacement;
16 import static vid.automation.test.services.SimulatorApi.RegistrationStrategy.CLEAR_THEN_SET;
18 import com.google.common.collect.ImmutableList;
19 import com.google.common.collect.ImmutableMap;
20 import com.google.common.collect.ImmutableMultimap;
21 import com.google.common.collect.Multimap;
23 import java.util.UUID;
24 import org.onap.simulator.presetGenerator.presets.aai.Placement;
25 import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetCloudRegionFromVnf;
26 import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetServiceInstancesByInvariantId;
27 import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetSubscribersGet;
28 import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetVfModulesByVnf;
29 import org.onap.simulator.presetGenerator.presets.aai.PresetAAIModelsByInvariantIdGet;
30 import org.onap.simulator.presetGenerator.presets.aai.PresetAAIStandardQueryGet;
31 import org.onap.simulator.presetGenerator.presets.ecompportal_att.PresetGetSessionSlotCheckIntervalGet;
32 import org.onap.simulator.presetGenerator.presets.sdc.PresetSDCGetServiceMetadataGet;
33 import org.onap.simulator.presetGenerator.presets.sdc.PresetSDCGetServiceToscaModelGet;
34 import org.onap.vid.more.LoggerFormatTest;
35 import org.springframework.http.HttpStatus;
36 import org.springframework.http.ResponseEntity;
37 import org.testng.ITestResult;
38 import org.testng.annotations.BeforeClass;
39 import org.testng.annotations.Test;
40 import org.testng.util.RetryAnalyzerCount;
41 import vid.automation.test.services.SimulatorApi;
42 import vid.automation.test.services.SimulatorApi.RegistrationStrategy;
44 public class ServiceTreeApiTest extends BaseApiTest {
46 private static final String API_URL = "/aai_get_service_instance_topology/{subscriberId}/{serviceType}/{serviceInstanceId}";
54 public void serviceWithNoChildren_requestDoesSomething() {
55 final PresetAAIStandardQueryGet serviceInstance =
56 PresetAAIStandardQueryGet.ofServiceInstance("service-instance-id", "7a6ee536-f052-46fa-aa7e-2fca9d674c44", "service-instance-model-invariant-id", "global-customer-id", "service-instance-type", ImmutableMultimap.of());
58 SimulatorApi.registerExpectationFromPresets(ImmutableList.of(
60 new PresetAAIModelsByInvariantIdGet(ImmutableList.of("service-instance-model-invariant-id")),
61 new PresetSDCGetServiceMetadataGet("7a6ee536-f052-46fa-aa7e-2fca9d674c44", "service-instance-model-invariant-id", "csar15782222_instantiationTypeMacroWithNetwork.zip"),
62 new PresetSDCGetServiceToscaModelGet("7a6ee536-f052-46fa-aa7e-2fca9d674c44", "csar15782222_instantiationTypeMacroWithNetwork.zip")
64 final String response = restTemplate.getForObject(buildUri(API_URL), String.class, "global-customer-id", "service-instance-type", "service-instance-id");
66 assertJsonEquals(response, "" +
68 " \"instanceName\": \"" + escapeJson(serviceInstance.getInstanceName()) + "\"," +
69 " \"action\": \"None\"," +
70 " \"instanceId\": \"service-instance-id\"," +
71 " \"orchStatus\": \"GARBAGE DATA\"," +
72 " \"globalSubscriberId\": \"global-customer-id\"," +
73 " \"subscriptionServiceType\": \"service-instance-type\"," +
74 " \"owningEntityId\": null," +
75 " \"owningEntityName\": null," +
76 " \"productFamilyId\": null," +
77 " \"lcpCloudRegionId\": null," +
78 " \"tenantId\": null," +
79 " \"tenantName\": null," +
80 " \"aicZoneId\": null," +
81 " \"aicZoneName\": null," +
82 " \"projectName\": null," +
83 " \"rollbackOnFailure\": null," +
85 " \"modelInvariantId\": \"service-instance-model-invariant-id\"," +
86 " \"modelVersionId\": \"7a6ee536-f052-46fa-aa7e-2fca9d674c44\"," +
87 " \"modelName\": \"vf_vEPDG\"," +
88 " \"modelType\": \"service\"," +
89 " \"modelVersion\": \"2.0\"" +
92 " \"networks\": {}," +
93 " \"vnfGroups\": {}," +
94 " \"validationCounter\": 0," +
95 " \"existingVNFCounterMap\": {}," +
96 " \"existingNetworksCounterMap\": {}," +
97 " \"existingVnfGroupCounterMap\": {}," +
98 " \"isALaCarte\": false" +
103 public void searchGroupMembers_expected4vnfs() {
104 PresetAAIStandardQueryGet instanceGroup1 = PresetAAIStandardQueryGet.ofInstanceGroup("L3-NETWORK", "SUB_INTERFACE", ImmutableMultimap.of());
105 PresetAAIStandardQueryGet instanceGroup2 = PresetAAIStandardQueryGet.ofInstanceGroup("LOAD-GROUP", "SERVICE-ACCESS", ImmutableMultimap.of());
107 PresetAAIStandardQueryGet vnfPreset1 =
108 PresetAAIStandardQueryGet.ofRelatedVnf(randUuid(), "7a6ee536-f052-46fa-aa7e-2fca9d674c44", "",
109 ImmutableMultimap.of("instance-group", instanceGroup1.getReqPath()));
111 PresetAAIStandardQueryGet vnfPreset2 =
112 PresetAAIStandardQueryGet.ofRelatedVnf(randUuid(), "eb5f56bf-5855-4e61-bd00-3e19a953bf02",
113 "\"in-maint\": true,", ImmutableMultimap.of());
115 PresetAAIStandardQueryGet vnfPreset3 =
116 PresetAAIStandardQueryGet.ofRelatedVnf(randUuid(), "4117a0b6-e234-467d-b5b9-fe2f68c8b0fc", "",
117 ImmutableMultimap.of("instance-group", instanceGroup1.getReqPath()));
119 PresetAAIStandardQueryGet vnfPreset4 =
120 PresetAAIStandardQueryGet.ofRelatedVnf(randUuid(), "b7f2e8fb-ac71-4ea0-a801-06ef1479ea84",
121 "\"in-maint\": true,", ImmutableMultimap.of());
123 PresetAAIStandardQueryGet vnfPreset5 =
124 PresetAAIStandardQueryGet.ofRelatedVnf(randUuid(), "b7f2e8fb-ac71-4ea0-a801-06ef1479ea84",
125 "\"in-maint\": true,", ImmutableMultimap.of("instance-group", instanceGroup2.getReqPath()));
127 Multimap<String, String> serviceInstance1 = ImmutableMultimap.<String, String>builder()
128 .putAll("generic-vnf", vnfPreset1.getReqPath())
129 .putAll("generic-vnf", vnfPreset3.getReqPath())
132 Multimap<String, String> serviceInstance2 = ImmutableMultimap.<String, String>builder()
133 .putAll("generic-vnf", vnfPreset2.getReqPath())
134 .putAll("generic-vnf", vnfPreset4.getReqPath())
135 .putAll("generic-vnf", vnfPreset5.getReqPath())
138 PresetAAIGetServiceInstancesByInvariantId serviceInstancesList = new PresetAAIGetServiceInstancesByInvariantId(
139 "global-customer-id", "service-instance-type", "24632e6b-584b-4f45-80d4-fefd75fd9f14",
140 ImmutableMap.of("service-instance-id1", serviceInstance1,
141 "service-instance-id2", serviceInstance2));
144 SimulatorApi.registerExpectationFromPresets(
145 ImmutableList.of(serviceInstancesList,
146 vnfPreset1, instanceGroup1,
150 vnfPreset5, instanceGroup2, //this vnf should be filtered out
151 new PresetAAIModelsByInvariantIdGet(ImmutableList.of("vnf-instance-model-invariant-id")),
152 new PresetAAIGetCloudRegionFromVnf(vnfPreset1.getInstanceId()),
153 new PresetAAIGetCloudRegionFromVnf(vnfPreset2.getInstanceId()),
154 new PresetAAIGetCloudRegionFromVnf(vnfPreset3.getInstanceId()),
155 new PresetAAIGetCloudRegionFromVnf(vnfPreset4.getInstanceId()),
156 new PresetAAIGetSubscribersGet()
159 String api_url = "aai_search_group_members?subscriberId={subscriberId}&serviceType={serviceType}&serviceInvariantId={serviceInvariantId}" +
160 "&groupType={groupType}&groupRole={groupRole}";
162 final ResponseEntity<String> responseEntity = restTemplate.getForEntity(buildUri(api_url), String.class, "global-customer-id", "service-instance-type", "24632e6b-584b-4f45-80d4-fefd75fd9f14", "LOAD-GROUP", "SERVICE-ACCESS");
163 String response = responseEntity.getBody();
165 LOGGER.info(response);
167 String expected = TestUtils.convertRequest(objectMapper, "VnfGroup/searchMembersResponse.json");
169 .replace("VNF1_INSTANCE_NAME", vnfPreset1.getInstanceName())
170 .replace("VNF1_INSTANCE_ID", vnfPreset1.getInstanceId())
171 .replace("VNF1_INSTANCE_TYPE", vnfPreset1.getInstanceType())
172 .replace("VNF2_INSTANCE_NAME", vnfPreset2.getInstanceName())
173 .replace("VNF2_INSTANCE_ID", vnfPreset2.getInstanceId())
174 .replace("VNF2_INSTANCE_TYPE", vnfPreset2.getInstanceType())
175 .replace("VNF3_INSTANCE_NAME", vnfPreset3.getInstanceName())
176 .replace("VNF3_INSTANCE_ID", vnfPreset3.getInstanceId())
177 .replace("VNF3_INSTANCE_TYPE", vnfPreset3.getInstanceType())
178 .replace("VNF4_INSTANCE_NAME", vnfPreset4.getInstanceName())
179 .replace("VNF4_INSTANCE_ID", vnfPreset4.getInstanceId())
180 .replace("VNF4_INSTANCE_TYPE", vnfPreset4.getInstanceType());
182 assertJsonEquals(response, expected);
184 SimulatorApi.registerExpectationFromPreset(new PresetAAIGetSubscribersGet(), RegistrationStrategy.APPEND);
185 LoggerFormatTest.assertHeadersAndMetricLogs(restTemplate, uri, echoedRequestId(responseEntity), "/network/generic-vnfs/generic-vnf/", 5);
186 // org.onap.vid.aai.AaiClient.getCloudRegionAndTenantByVnfId for presets PresetAAIGetCloudRegionFromVnf is
187 // PUTing to AAI, so path is just /aai/v../query
188 LoggerFormatTest.assertHeadersAndMetricLogs(restTemplate, uri, echoedRequestId(responseEntity), "/query", 4);
192 public void searchGroupMembers_expectedNoResult() {
193 PresetAAIGetServiceInstancesByInvariantId serviceInstancesList = new PresetAAIGetServiceInstancesByInvariantId(
194 "global-customer-id", "service-instance-type", "24632e6b-584b-4f45-80d4-fefd75fd9f14",
195 ImmutableMap.of("service-instance-id1", ImmutableMultimap.of(),
196 "service-instance-id2", ImmutableMultimap.of()));
199 SimulatorApi.registerExpectationFromPreset(serviceInstancesList, CLEAR_THEN_SET);
201 String api_url = "aai_search_group_members?subscriberId={subscriberId}&serviceType={serviceType}&serviceInvariantId={serviceInvariantId}" +
202 "&groupType={groupType}&groupRole={groupRole}";
204 final String response = restTemplate.getForObject(buildUri(api_url), String.class, "global-customer-id", "service-instance-type", "24632e6b-584b-4f45-80d4-fefd75fd9f14", "LOAD-GROUP", "SERVICE-ACCESS");
206 assertJsonEquals(response, "[]");
210 public void serviceWithMultiplePlys_responseIsReasonable() {
212 PresetAAIStandardQueryGet l3NetworkPreset1 =
213 PresetAAIStandardQueryGet.ofL3Network("CONTRAIL30_BASIC", "Assigned",
214 ImmutableMultimap.of());
216 PresetAAIStandardQueryGet vlanTag1 = PresetAAIStandardQueryGet.ofVlanTag(44);
218 PresetAAIStandardQueryGet l3NetworkPreset2 =
220 PresetAAIStandardQueryGet.ofL3Network("CONTRAIL30_BASIC", "Created",
221 ImmutableMultimap.of("vlan-tag", vlanTag1.getReqPath()));
223 PresetAAIStandardQueryGet l3NetworkPreset3 =
224 PresetAAIStandardQueryGet.ofL3Network("CONTRAIL30_BASIC", "Assigned", "nvtprov", "ddc3f20c-08b5-40fd-af72-c6d14636b986","94fdd893-4a36-4d70-b16a-ec29c54c184f",
225 ImmutableMultimap.of());
227 PresetAAIStandardQueryGet l3NetworkPreset4 =
228 PresetAAIStandardQueryGet.ofL3Network("CONTRAIL30_HIMELGUARD", "Created", "preprov", "ddc3f20c-08b5-40fd-af72-c6d14636b986","94fdd893-4a36-4d70-b16a-ec29c54c184f",
229 ImmutableMultimap.of());
231 PresetAAIStandardQueryGet volumeGroup1 =
232 PresetAAIStandardQueryGet.ofVolumeGroup("vSON_test", ImmutableMultimap.of());
234 PresetAAIStandardQueryGet instanceGroup1 = PresetAAIStandardQueryGet.ofInstanceGroup("L3-NETWORK", "Ruby Figueroa", ImmutableMultimap.of());
236 PresetAAIStandardQueryGet collection1 =
237 PresetAAIStandardQueryGet.ofCollectionResource(
239 ImmutableMultimap.of("instance-group", instanceGroup1.getReqPath()),
240 "081ceb56-eb71-4566-a72d-3e7cbee5cdf1",
241 "ce8c98bc-4691-44fb-8ff0-7a47487c11c4"
244 PresetAAIStandardQueryGet vnfPreset1 =
245 PresetAAIStandardQueryGet.ofVnf(randUuid(),
246 ImmutableMultimap.of("l3-network", l3NetworkPreset1.getReqPath(), "l3-network", l3NetworkPreset2.getReqPath()),
247 new Placement(ATT_NC, olson3, "229bcdc6eaeb4ca59d55221141d01f8e"));
249 PresetAAIStandardQueryGet vnfPreset2 =
250 PresetAAIStandardQueryGet.ofVnf(randUuid(), "d6557200-ecf2-4641-8094-5393ae3aae60","91415b44-753d-494c-926a-456a9172bbb9",
251 "\"in-maint\": true,", ImmutableMultimap.of("volume-group", volumeGroup1.getReqPath()),
252 new Placement(ATT_AIC, hvf6, "88a6ca3ee0394ade9403f075db23167e"));
255 Placement vfModule2Placement
256 = new Placement(ATT_NC, AUK51A, "73bb4c548dc048d78eccecd445ac06fc");
258 PresetAAIGetVfModulesByVnf twoVfModulesPreset =
259 new PresetAAIGetVfModulesByVnf(vnfPreset2.getInstanceId(), vfModule2Placement);
261 final PresetAAIStandardQueryGet serviceInstance =
262 PresetAAIStandardQueryGet.ofServiceInstance("service-instance-id", "6e59c5de-f052-46fa-aa7e-2fca9d674c44", "d27e42cf-087e-4d31-88ac-6c4b7585f800", "global-customer-id", "service-instance-type",
263 ImmutableMultimap.<String, String>builder()
264 .putAll("l3-network", l3NetworkPreset3.getReqPath(), l3NetworkPreset4.getReqPath())
265 .putAll("collection", collection1.getReqPath())
266 .putAll("generic-vnf", vnfPreset1.getReqPath(), vnfPreset2.getReqPath())
270 SimulatorApi.registerExpectationFromPresets(ImmutableList.of(
272 l3NetworkPreset3, l3NetworkPreset4, vnfPreset1, vnfPreset2, collection1,
273 volumeGroup1, l3NetworkPreset1, l3NetworkPreset2, instanceGroup1,
274 vlanTag1, twoVfModulesPreset,
275 new PresetAAIModelsByInvariantIdGet(ImmutableList.of("d27e42cf-087e-4d31-88ac-6c4b7585f800")),
276 new PresetGetSessionSlotCheckIntervalGet(),
277 new PresetAAIGetSubscribersGet(),
278 new PresetSDCGetServiceMetadataGet("6e59c5de-f052-46fa-aa7e-2fca9d674c44", "d27e42cf-087e-4d31-88ac-6c4b7585f800", "csar15782222_instantiationTypeMacroWithNetwork.zip"),
279 new PresetSDCGetServiceToscaModelGet("6e59c5de-f052-46fa-aa7e-2fca9d674c44", "csar15782222_instantiationTypeMacroWithNetwork.zip")
282 String expected = TestUtils.convertRequest(objectMapper, "aaiGetInstanceTopology/ServiceTreeWithMultipleChildren_serviceInstance.json");
284 .replace("SERVICE_INSTANCE_NAME", serviceInstance.getInstanceName())
285 .replace("VNF1_INSTANCE_NAME", vnfPreset1.getInstanceName())
286 .replace("VNF1_INSTANCE_ID", vnfPreset1.getInstanceId())
287 .replace("VNF1_INSTANCE_TYPE", vnfPreset1.getInstanceType())
288 .replace("VNF2_INSTANCE_NAME", vnfPreset2.getInstanceName())
289 .replace("VNF2_INSTANCE_ID", vnfPreset2.getInstanceId())
290 .replace("VNF2_INSTANCE_TYPE", vnfPreset2.getInstanceType())
291 .replace("NETWORK1_INSTANCE_NAME", l3NetworkPreset1.getInstanceName())
292 .replace("NETWORK1_INSTANCE_ID", l3NetworkPreset1.getInstanceId())
293 .replace("NETWORK2_INSTANCE_NAME", l3NetworkPreset2.getInstanceName())
294 .replace("NETWORK2_INSTANCE_ID", l3NetworkPreset2.getInstanceId())
295 .replace("NETWORK3_INSTANCE_NAME", l3NetworkPreset3.getInstanceName())
296 .replace("NETWORK3_INSTANCE_ID", l3NetworkPreset3.getInstanceId())
297 .replace("NETWORK4_INSTANCE_NAME", l3NetworkPreset4.getInstanceName())
298 .replace("NETWORK4_INSTANCE_ID", l3NetworkPreset4.getInstanceId());
300 ResponseEntity<String> response = restTemplate.getForEntity(buildUri(API_URL), String.class, "global-customer-id", "service-instance-type", "service-instance-id");
302 assertJsonEquals(response.getBody(), expected);
303 LoggerFormatTest.assertHeadersAndMetricLogs(restTemplate, uri, echoedRequestId(response), "/vf-modules", 2);
306 private String echoedRequestId(ResponseEntity<?> response) {
307 return response.getHeaders().getFirst("X-ECOMP-RequestID-echo");
311 protected void assertJsonEquals(String actual, String expected) {
312 assertThat(actual, jsonEquals(expected)
313 .when(IGNORING_ARRAY_ORDER)
314 .when(IGNORING_EXTRA_FIELDS)
319 public void serviceWithVnfGotError_exceptionIsThrown() {
321 PresetAAIStandardQueryGet vnfPreset =
322 PresetAAIStandardQueryGet.ofVnf(randUuid(),
323 ImmutableMultimap.of("l3-network", "/aai/v../I'm a wrong path"),
326 final PresetAAIStandardQueryGet serviceInstance =
327 PresetAAIStandardQueryGet.ofServiceInstance("service-instance-id", "7a6ee536-f052-46fa-aa7e-2fca9d674c44", "service-instance-model-invariant-id", "global-customer-id", "service-instance-type",
328 ImmutableMultimap.<String, String>builder()
329 .putAll("generic-vnf", vnfPreset.getReqPath())
333 SimulatorApi.registerExpectationFromPresets(ImmutableList.of(
336 new PresetAAIModelsByInvariantIdGet(ImmutableList.of("service-instance-model-invariant-id")),
337 new PresetSDCGetServiceMetadataGet("7a6ee536-f052-46fa-aa7e-2fca9d674c44", "service-instance-model-invariant-id", "csar15782222_instantiationTypeMacroWithNetwork.zip"),
338 new PresetSDCGetServiceToscaModelGet("7a6ee536-f052-46fa-aa7e-2fca9d674c44", "csar15782222_instantiationTypeMacroWithNetwork.zip"),
339 new PresetGetSessionSlotCheckIntervalGet(),
340 new PresetAAIGetSubscribersGet()
343 final ResponseEntity<String> response = restTemplateErrorAgnostic.getForEntity(buildUri(API_URL), String.class, "global-customer-id", "service-instance-type", "service-instance-id");
344 assertThat(response.getBody(),containsString("AAI node fetching failed"));
345 assertThat(response.getStatusCode(), is(HttpStatus.INTERNAL_SERVER_ERROR));
349 public void serviceWithTwoVnfGroupsAndRelatedVnfs() {
350 PresetAAIStandardQueryGet relatedVnf1 =
351 PresetAAIStandardQueryGet.ofRelatedVnf(randUuid(), "7a6ee536-f052-46fa-aa7e-2fca9d674c44",
352 "", ImmutableMultimap.of());
354 PresetAAIStandardQueryGet relatedVnf2 =
355 PresetAAIStandardQueryGet.ofRelatedVnf(randUuid(), "d6557200-ecf2-4641-8094-5393ae3aae60",
356 "", ImmutableMultimap.of());
358 PresetAAIStandardQueryGet relatedVnf3 =
359 PresetAAIStandardQueryGet.ofRelatedVnf(randUuid(), "d6557200-ecf2-4641-8094-5393ae3aae60",
360 "", ImmutableMultimap.of());
362 final PresetAAIStandardQueryGet vnfGroup1 =
363 PresetAAIStandardQueryGet.ofInstanceGroup("vnfGroup-type", "Teresa Bradley",
364 ImmutableMultimap.<String, String>builder()
365 .putAll("generic-vnf", relatedVnf1.getReqPath(), relatedVnf2.getReqPath(), relatedVnf3.getReqPath())
369 final PresetAAIStandardQueryGet vnfGroup2 =
370 PresetAAIStandardQueryGet.ofInstanceGroup("vnfGroup-type", "Stanley Mccarthy", ImmutableMultimap.of());
372 final PresetAAIStandardQueryGet serviceInstance =
373 PresetAAIStandardQueryGet.ofServiceInstance("service-instance-id", "4117a0b6-e234-467d-b5b9-fe2f68c8b0fc", "7ee41ce4-4827-44b0-a48e-2707a59905d2", "global-customer-id", "service-instance-type",
374 ImmutableMultimap.<String, String>builder()
375 .putAll("instance-group", vnfGroup1.getReqPath(),vnfGroup2.getReqPath())
379 SimulatorApi.registerExpectationFromPresets(ImmutableList.of(
381 vnfGroup1,vnfGroup2, relatedVnf1, relatedVnf2, relatedVnf3,
382 new PresetAAIModelsByInvariantIdGet(ImmutableList.of("7ee41ce4-4827-44b0-a48e-2707a59905d2", "vnf-instance-model-invariant-id")),
383 new PresetGetSessionSlotCheckIntervalGet(),
384 new PresetAAIGetSubscribersGet(),
385 new PresetSDCGetServiceMetadataGet("4117a0b6-e234-467d-b5b9-fe2f68c8b0fc", "7ee41ce4-4827-44b0-a48e-2707a59905d2", "service-vnf-grouping-csar.zip"),
386 new PresetSDCGetServiceToscaModelGet("4117a0b6-e234-467d-b5b9-fe2f68c8b0fc", "service-vnf-grouping-csar.zip")
389 String expected = TestUtils.convertRequest(objectMapper, "VnfGroup/serviceWithVnfGroupsChildren_serviceInstance.json");
391 .replace("SERVICE_INSTANCE_NAME", serviceInstance.getInstanceName())
392 .replace("VNF_GROUP1_INSTANCE_ID", vnfGroup1.getInstanceId())
393 .replace("VNF_GROUP1_INSTANCE_NAME", vnfGroup1.getInstanceName())
394 .replace("VNF_GROUP1_INSTANCE_TYPE", vnfGroup1.getInstanceType())
395 .replace("VNF_GROUP1_INSTANCE_ROLE", vnfGroup1.getInstanceRole())
397 .replace("RELATED_VNF1_INSTANCE_ID", relatedVnf1.getInstanceId())
398 .replace("RELATED_VNF1_INSTANCE_NAME", relatedVnf1.getInstanceName())
399 .replace("RELATED_VNF1_INSTANCE_TYPE", relatedVnf1.getInstanceType())
401 .replace("RELATED_VNF2_INSTANCE_ID", relatedVnf2.getInstanceId())
402 .replace("RELATED_VNF2_INSTANCE_NAME", relatedVnf2.getInstanceName())
403 .replace("RELATED_VNF2_INSTANCE_TYPE", relatedVnf2.getInstanceType())
405 .replace("RELATED_VNF3_INSTANCE_ID", relatedVnf3.getInstanceId())
406 .replace("RELATED_VNF3_INSTANCE_NAME", relatedVnf3.getInstanceName())
407 .replace("RELATED_VNF3_INSTANCE_TYPE", relatedVnf3.getInstanceType())
409 .replace("VNF_GROUP2_INSTANCE_ID", vnfGroup2.getInstanceId())
410 .replace("VNF_GROUP2_INSTANCE_NAME", vnfGroup2.getInstanceName())
411 .replace("VNF_GROUP2_INSTANCE_TYPE", vnfGroup2.getInstanceType())
412 .replace("VNF_GROUP2_INSTANCE_ROLE", vnfGroup2.getInstanceRole());
414 final String response = restTemplate.getForObject(buildUri(API_URL), String.class, "global-customer-id", "service-instance-type", "service-instance-id");
416 assertJsonEquals(response, expected);
419 public static class RetryServiceWithVrf extends RetryAnalyzerCount {
420 // For an unknown reason serviceWithVrf_resultAsExpected test is failing sometimes.
421 // This single retry might shed more light on the situation: will it work the 2nd
422 // time, or still fail 2 times in strike?
424 public RetryServiceWithVrf() {
429 public boolean retryMethod(ITestResult result) {
430 if (result.isSuccess()) {
433 LOGGER.error(result.getName() + " failed; retrying (" + this.getClass().getCanonicalName() + ")");
439 @Test(retryAnalyzer = RetryServiceWithVrf.class)
440 public void serviceWithVrf_resultAsExpected() {
441 PresetAAIStandardQueryGet vpnBindingPreset =
442 PresetAAIStandardQueryGet.ofVpn("Active", ImmutableMultimap.of(), "mock-global-1", "mock-role-x", "VPN1260","USA,EMEA");
444 // in order to verify thst only one route target is parsed from the Vpn - binding of the network
445 PresetAAIStandardQueryGet vpnBindingPresetOnlyForTheNetwork =
446 PresetAAIStandardQueryGet.ofVpn("Active", ImmutableMultimap.of(), "shouldNotBeOnResult", "shouldNotBeOnResult","shouldNotBeOnResult","shouldNotBeOnResult");
448 PresetAAIStandardQueryGet l3NetworkPreset =
449 PresetAAIStandardQueryGet.ofL3Network("SR-IOV-PROVIDER2-2", "Assigned",
450 ImmutableMultimap.of("vpn-binding", vpnBindingPreset.getReqPath(),
451 "vpn-binding", vpnBindingPresetOnlyForTheNetwork.getReqPath()));
453 PresetAAIStandardQueryGet vrfPreset =
454 PresetAAIStandardQueryGet.ofVrf("Create",
455 ImmutableMultimap.of(
456 "l3-network", l3NetworkPreset.getReqPath(),
457 "vpn-binding", vpnBindingPreset.getReqPath()));
459 final PresetAAIStandardQueryGet serviceInstance =
460 PresetAAIStandardQueryGet.ofServiceInstance("service-instance-id", "BONDING", "INFRASTRUCTURE-VPN", "f028b2e2-7080-4b13-91b2-94944d4c42d8",
461 "dfc2c44c-2429-44ca-ae26-1e6dc1f207fb", "global-customer-id", "service-instance-type", "GARBAGE DATA",
462 ImmutableMultimap.of("configuration", vrfPreset.getReqPath()));
464 String expected = TestUtils.convertRequest(objectMapper, "aaiGetInstanceTopology/serviceWithVrfTopology.json");
466 .replace("SERVICE_INSTANCE_NAME", serviceInstance.getInstanceName())
467 .replace("VRF_INSTANCE_ID", vrfPreset.getInstanceId())
468 .replace("VRF_INSTANCE_NAME", vrfPreset.getInstanceName())
469 .replace("VPN_INSTANCE_ID", vpnBindingPreset.getInstanceId())
470 .replace("VPN_INSTANCE_NAME", vpnBindingPreset.getInstanceName())
471 .replace("NETWORK_INSTANCE_NAME", l3NetworkPreset.getInstanceName())
472 .replace("NETWORK_INSTANCE_ROLE", l3NetworkPreset.getInstanceRole())
473 .replace("NETWORK_INSTANCE_ID", l3NetworkPreset.getInstanceId());
475 SimulatorApi.registerExpectationFromPresets(ImmutableList.of(
480 new PresetAAIModelsByInvariantIdGet(ImmutableList.of("network-instance-model-invariant-id", "dfc2c44c-2429-44ca-ae26-1e6dc1f207fb", "b67a289b-1688-496d-86e8-1583c828be0a" )),
481 new PresetGetSessionSlotCheckIntervalGet(),
482 new PresetAAIGetSubscribersGet(),
483 new PresetSDCGetServiceMetadataGet("f028b2e2-7080-4b13-91b2-94944d4c42d8", "dfc2c44c-2429-44ca-ae26-1e6dc1f207fb", "service-Infravpn-csar.zip"),
484 new PresetSDCGetServiceToscaModelGet("f028b2e2-7080-4b13-91b2-94944d4c42d8", "service-Infravpn-csar.zip")
487 final String response = restTemplate.getForObject(buildUri(API_URL), String.class, "global-customer-id", "service-instance-type", "service-instance-id");
490 assertJsonEquals(response, expected);
491 } catch (AssertionError error) {
492 // Logs what happens on simulator's end when error occures
493 final Map<String, Long> recordedSimulatorPaths = SimulatorApi.retrieveRecordedRequestsPathCounter();
494 System.err.println(recordedSimulatorPaths);
495 LOGGER.error(recordedSimulatorPaths);
500 private String randUuid() {
501 return UUID.randomUUID().toString();