1 package org.onap.vid.api;
3 import com.google.common.collect.ImmutableList;
4 import com.google.common.collect.ImmutableMap;
5 import org.onap.simulator.presetGenerator.presets.BasePresets.BaseMSOPreset;
6 import org.onap.simulator.presetGenerator.presets.BasePresets.BasePreset;
7 import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetCloudOwnersByCloudRegionId;
8 import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetSubscribersGet;
9 import org.onap.simulator.presetGenerator.presets.aai.PresetAAISearchNodeQueryNonEmptyResult;
10 import org.onap.simulator.presetGenerator.presets.ecompportal_att.PresetGetSessionSlotCheckIntervalGet;
11 import org.onap.simulator.presetGenerator.presets.mso.*;
12 import org.onap.simulator.presetGenerator.presets.mso.PresetMSOAddOrRemoveOneInstanceGroupMember.InstanceGroupMemberAction;
13 import org.onap.simulator.presetGenerator.presets.sdc.PresetSDCGetServiceMetadataGet;
14 import org.onap.simulator.presetGenerator.presets.sdc.PresetSDCGetServiceToscaModelGet;
15 import org.onap.vid.model.asyncInstantiation.JobAuditStatus;
16 import org.onap.vid.model.asyncInstantiation.JobAuditStatus.SourceStatus;
17 import org.onap.vid.model.asyncInstantiation.ServiceInfo;
18 import org.testng.annotations.AfterMethod;
19 import org.testng.annotations.DataProvider;
20 import org.testng.annotations.Test;
21 import vid.automation.test.infra.FeatureTogglingTest;
22 import vid.automation.test.infra.Features;
23 import vid.automation.test.model.JobStatus;
24 import vid.automation.test.model.ServiceAction;
25 import vid.automation.test.services.AsyncJobsService;
26 import vid.automation.test.services.SimulatorApi;
27 import vid.automation.test.services.SimulatorApi.RegistrationStrategy;
29 import java.util.List;
31 import java.util.UUID;
32 import java.util.function.Function;
34 import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic;
35 import static org.hamcrest.CoreMatchers.is;
36 import static org.hamcrest.CoreMatchers.nullValue;
37 import static org.hamcrest.MatcherAssert.assertThat;
38 import static org.hamcrest.Matchers.allOf;
39 import static org.hamcrest.Matchers.not;
40 import static org.hamcrest.collection.IsCollectionWithSize.hasSize;
41 import static org.onap.simulator.presetGenerator.presets.mso.PresetMSOBaseCreateInstancePost.DEFAULT_REQUEST_ID;
42 import static org.onap.simulator.presetGenerator.presets.mso.PresetMSOOrchestrationRequestGet.COMPLETE;
43 import static org.onap.simulator.presetGenerator.presets.mso.PresetMSOServiceInstanceGen2WithNames.Keys.*;
44 import static vid.automation.test.services.SimulatorApi.registerExpectationFromPreset;
45 import static vid.automation.test.services.SimulatorApi.registerExpectationFromPresets;
47 @FeatureTogglingTest({Features.FLAG_ASYNC_ALACARTE_VNF})
48 public class AsyncInstantiationALaCarteApiTest3 extends AsyncInstantiationBase {
50 private static final String CREATE_BULK_OF_ALACARTE_REQUEST = "asyncInstantiation/vidRequestCreateALaCarte.json";
51 private static final String CREATE_BULK_OF_ALACARTE_MULTIPLE_VNF_NETWORK_REQUEST_CYPRESS = "a-la-carte/redux-multiple-vnf-network.json";
52 private static final String CREATE_BULK_OF_ALACARTE_REQUEST_WITH_VNF_GROUP = "VnfGroup/serviceWithVnfGroupCreateRequest.json";
53 private static final String PAYLOAD_TEMPLATE_1_VNF_GROUP_WITH_3_MEMBERS_REQUEST = "VnfGroup/payloadTemplate1VnfGroupWith3MembersRequest.json";
54 private static final String DELETE_AND_CREATE_NETWORK_FROM_SERVICE = "asyncInstantiation/vidRequestDelete1Create1Network.json";
55 private static final String DELETE_SERVICE_WITH_NETWORK = "asyncInstantiation/vidRequestDeleteServiceWithNetwork.json";
56 private static final String DELETE_AND_CREATE_VNF_FROM_SERVICE = "asyncInstantiation/vidRequestDelete1Create1Vnf.json";
57 private static final String DELETE_SERVICE_WITH_VNF = "asyncInstantiation/vidRequestDeleteServiceWithVnf.json";
60 private static final String FIRST_REQUEST_ID = "d1011670-0e1a-4b74-945d-8bf5aede1d9c";
61 private static final String SECOND_REQUEST_ID = "e2011670-0e1a-4b74-945d-8bf5aede1d9c";
62 private static final String THIRD_REQUEST_ID = "f3011670-0e1a-4b74-945d-8bf5aede1d9c";
63 private static final String SERVICE_INSTANCE_ID = BaseMSOPreset.DEFAULT_INSTANCE_ID;
64 private static final String MSO_COMPLETE_STATUS = "COMPLETE";
65 private static final String MSO_FAILED_STATUS = "FAILED";
69 public static Object[][] scenarios() {
70 return new Object[][]{
73 // {Scenario.NAME_TAKEN}, Not relevant because the name uniqueness is supported only for bulk in Macro
74 // {Scenario.DUPLICATE_NAME}, Not relevant because name duplication is not handled in A La Carte
75 {Scenario.IN_PROGRESS},
81 protected void dropAllFromNameCounter() {
82 AsyncJobsService asyncJobsService = new AsyncJobsService();
83 asyncJobsService.dropAllFromNameCounter();
86 @Test(dataProvider = "multipleVnfDataProvider")
87 public void deployServiceFromCypress__multipleVnfsAndNetwork(String expectedStatus, JobStatus expectedJobStatus) {
88 dropAllFromNameCounter();// needed because each data provider info not going to after method
89 final ImmutableMap<PresetMSOServiceInstanceGen2WithNames.Keys, String> names = ImmutableMap.of(SERVICE_NAME, "serviceInstanceName");
91 List<PresetMSOBaseCreateInstancePost> createPresets = ImmutableList.of(
92 new PresetMSOCreateServiceInstanceMultipleVnfsServiceCypress(names, 0, DEFAULT_REQUEST_ID),
93 new PresetMSOCreateVnfALaCarteServiceCypress(FIRST_REQUEST_ID, SERVICE_INSTANCE_ID,"VFvGeraldine00001", "zzz1"),
94 new PresetMSOCreateVnfALaCarteServiceCypress(SECOND_REQUEST_ID, SERVICE_INSTANCE_ID,"VFvGeraldine00001_001", "ONAP"),
95 new PresetMSOCreateNetworkALaCarteServiceCypress2(THIRD_REQUEST_ID, SERVICE_INSTANCE_ID, "ExtVL")
97 List<PresetMSOOrchestrationRequestGet> inProgressPresets = ImmutableList.of(
98 new PresetMSOOrchestrationRequestGet(expectedStatus.equals("SERVICE_FAILED") ? MSO_FAILED_STATUS : MSO_COMPLETE_STATUS, DEFAULT_REQUEST_ID),
99 new PresetMSOOrchestrationRequestGet( MSO_COMPLETE_STATUS, FIRST_REQUEST_ID, "First VNF instance was created successfully." ),
100 new PresetMSOOrchestrationRequestGet(expectedStatus, SECOND_REQUEST_ID, expectedStatus.equals(MSO_COMPLETE_STATUS)?"Second VNF instance was created successfully.": MSO_BASE_ERROR),
101 new PresetMSOOrchestrationRequestGet(MSO_COMPLETE_STATUS, THIRD_REQUEST_ID,"Network was created successfully.")
103 List<BasePreset> presets = getPresets( createPresets, inProgressPresets);
105 registerExpectationFromPresets(presets, RegistrationStrategy.CLEAR_THEN_SET);
106 registerExpectationFromPreset(PresetAAIGetCloudOwnersByCloudRegionId.PRESET_MTN6_TO_ATT_AIC, RegistrationStrategy.APPEND);
108 final List<String> uuids = createBulkOfInstances(false, 1, names, CREATE_BULK_OF_ALACARTE_MULTIPLE_VNF_NETWORK_REQUEST_CYPRESS);
110 assertThat(uuids, hasSize(1));
111 final String jobId = uuids.get(0);
113 //expected vid statuses
114 ImmutableList<JobAuditStatus> vidAuditStatuses;
116 if (expectedStatus.equals(MSO_COMPLETE_STATUS)){
117 vidAuditStatuses = vidAuditStatusesCompleted(jobId);
118 } else if (expectedStatus.equals("SERVICE_FAILED")){
119 vidAuditStatuses = vidAuditStatusesFailed(jobId);
121 vidAuditStatuses = vidAuditStatusesCompletedWithErrors(jobId);
124 assertServiceInfoSpecific3(jobId, expectedJobStatus , names.get(SERVICE_NAME));
125 assertAuditStatuses(jobId, vidAuditStatuses, null);
130 Object[][] multipleVnfDataProvider() {
131 return new Object[][]{{MSO_FAILED_STATUS, JobStatus.COMPLETED_WITH_ERRORS},{MSO_COMPLETE_STATUS, JobStatus.COMPLETED}, {"SERVICE_FAILED", JobStatus.FAILED}};
135 @FeatureTogglingTest(Features.FLAG_1902_VNF_GROUPING)
136 public void deploy1ServiceWith1VnfGroup() {
137 final ImmutableMap<PresetMSOServiceInstanceGen2WithNames.Keys, String> names = ImmutableMap.of(SERVICE_NAME, "Grouping_Service_Instance");
138 String serviceReqId = "3cf5ea96-6b34-4945-b5b1-4a7798b1caf2";
139 String serviceInstanceId = BaseMSOPreset.DEFAULT_INSTANCE_ID;
140 String instanceGroupReqId = "715a5106-cdcc-44ee-8923-83d68a896908";
142 List<PresetMSOBaseCreateInstancePost> createPresets = ImmutableList.of(
143 new PresetMSOCreateServiceInstanceGen2WithNamesAlacarteGroupingService(names, 0, serviceReqId),
144 new PresetMSOCreateVnfGroup("ABC", instanceGroupReqId, PresetMSOCreateVnfGroup.MODEL_INFO_1, serviceInstanceId, false));
145 List<PresetMSOOrchestrationRequestGet> inProgressPresets = ImmutableList.of(
146 new PresetMSOOrchestrationRequestGet("COMPLETE", serviceReqId),
147 new PresetMSOOrchestrationRequestGet("COMPLETE", instanceGroupReqId, "Instance group was created successfully."));
148 List<BasePreset> presets = getPresets(createPresets, inProgressPresets);
150 registerExpectationFromPresets(presets, RegistrationStrategy.CLEAR_THEN_SET);
152 final List<String> uuids = createBulkOfInstances(false, 1, names, CREATE_BULK_OF_ALACARTE_REQUEST_WITH_VNF_GROUP);
154 assertThat(uuids, hasSize(1));
155 final String jobId = uuids.get(0);
157 assertExpectedStatusAndServiceInfo(JobStatus.COMPLETED, jobId, new ServiceInfo(
158 "us16807000", JobStatus.COMPLETED, false,
159 "d61e6f2d-12fa-4cc2-91df-7c244011d6fc", "WayneHolland", "WATKINS",
163 "TYLER SILVIA", "SILVIA ROBBINS",
164 null, names.get(SERVICE_NAME),
165 "4117a0b6-e234-467d-b5b9-fe2f68c8b0fc", "Grouping Service for Test", "1.0",
166 jobId, null, ServiceAction.INSTANTIATE, false));
169 assertAuditStatuses(jobId, vidAuditStatusesCompleted(jobId),null);
171 assertThat(SimulatorApi.retrieveRecordedRequestsPathCounter(), allOf(
172 TestUtils.hasOrLacksOfEntry(createPresets.get(0).getReqPath(), 1L),
173 TestUtils.hasOrLacksOfEntry(createPresets.get(1).getReqPath(), 1L),
174 TestUtils.hasOrLacksOfEntry(inProgressPresets.get(0).getReqPath(), 1L),
175 TestUtils.hasOrLacksOfEntry(inProgressPresets.get(1).getReqPath(), 1L)));
179 public static Object[][] addAndDeleteMembersMsoStatus() {
180 return new Object[][]{
181 {MSO_COMPLETE_STATUS, MSO_COMPLETE_STATUS, JobStatus.COMPLETED},
182 {MSO_FAILED_STATUS, MSO_FAILED_STATUS, JobStatus.FAILED},
183 {MSO_COMPLETE_STATUS, MSO_FAILED_STATUS, JobStatus.COMPLETED_WITH_ERRORS}
187 @Test(dataProvider = "addAndDeleteMembersMsoStatus")
188 @FeatureTogglingTest(Features.FLAG_1902_VNF_GROUPING)
189 public void add1delete1GroupMembers_withGoodResponseFromMso_verifyStatusAndRequests(String firstMemberStatus, String secondMemberStatus, JobStatus expectedJobStatus) {
191 String firstMemberRequestId = UUID.randomUUID().toString();
192 String secondMemberRequestId = UUID.randomUUID().toString();
194 List<PresetMSOAddOrRemoveOneInstanceGroupMember> instanceGroupMemberPreset = ImmutableList.of(
195 new PresetMSOAddOrRemoveOneInstanceGroupMember("VNF_GROUP1_INSTANCE_ID", "RELATED_VNF1_INSTANCE_ID", getUserCredentials().getUserId(), firstMemberRequestId, InstanceGroupMemberAction.Add),
196 new PresetMSOAddOrRemoveOneInstanceGroupMember("VNF_GROUP1_INSTANCE_ID", "RELATED_VNF2_INSTANCE_ID", getUserCredentials().getUserId(), secondMemberRequestId, InstanceGroupMemberAction.Remove)
198 List<PresetMSOOrchestrationRequestGet> inProgressPresets = ImmutableList.of(
199 new PresetMSOOrchestrationRequestGet(firstMemberStatus, firstMemberRequestId),
200 new PresetMSOOrchestrationRequestGet(secondMemberStatus, secondMemberRequestId)
203 List<BasePreset> presets = getGroupMembersPresets(instanceGroupMemberPreset,inProgressPresets);
204 registerExpectationFromPresets(presets, RegistrationStrategy.CLEAR_THEN_SET);
205 final List<String> uuids = createBulkOfInstances(false, 1, ImmutableMap.of(
206 VNF_GROUP1_ACTION, "None",
207 RELATED_VNF1_ACTION, "Create",
208 RELATED_VNF2_ACTION, "None_Delete"
209 ), PAYLOAD_TEMPLATE_1_VNF_GROUP_WITH_3_MEMBERS_REQUEST);
211 assertThat(uuids, hasSize(1));
212 final String jobId = uuids.get(0);
214 assertAuditStatuses(jobId, vidAuditStatuses(jobId, expectedJobStatus), null, 60);
215 assertThat(SimulatorApi.retrieveRecordedRequestsPathCounter(), allOf(
216 TestUtils.hasOrLacksOfEntry(instanceGroupMemberPreset.get(0).getReqPath(), 1L),
217 TestUtils.hasOrLacksOfEntry(instanceGroupMemberPreset.get(1).getReqPath(), 1L),
218 TestUtils.hasOrLacksOfEntry(inProgressPresets.get(0).getReqPath(), 1L),
219 TestUtils.hasOrLacksOfEntry(inProgressPresets.get(1).getReqPath(), 1L)
224 @FeatureTogglingTest(Features.FLAG_1902_VNF_GROUPING)
225 public void addVnfGroupWith2GroupMembers_withGoodResponseFromMso_verifyStatusAndRequests() {
227 String vnfGroupRequestId = UUID.randomUUID().toString();
228 String firstMemberRequestId = UUID.randomUUID().toString();
229 String secondMemberRequestId = UUID.randomUUID().toString();
231 List <PresetMSOCreateVnfGroup> vnfGroupPreset = ImmutableList.of(
232 new PresetMSOCreateVnfGroup("VNF_GROUP1_INSTANCE_NAME",vnfGroupRequestId,PresetMSOCreateVnfGroup.MODEL_INFO_0,"service-instance-id", true));
233 List<PresetMSOAddOrRemoveOneInstanceGroupMember> instanceGroupMemberPreset = ImmutableList.of(
234 new PresetMSOAddOrRemoveOneInstanceGroupMember("VNF_GROUP1_INSTANCE_ID", "RELATED_VNF1_INSTANCE_ID", getUserCredentials().getUserId(), firstMemberRequestId, InstanceGroupMemberAction.Add),
235 new PresetMSOAddOrRemoveOneInstanceGroupMember("VNF_GROUP1_INSTANCE_ID", "RELATED_VNF2_INSTANCE_ID", getUserCredentials().getUserId(), secondMemberRequestId, InstanceGroupMemberAction.Add)
237 List<PresetMSOOrchestrationRequestGet> inProgressPresets = ImmutableList.of(
238 new PresetMSOOrchestrationRequestGet(MSO_COMPLETE_STATUS, vnfGroupRequestId),
239 new PresetMSOOrchestrationRequestGet(MSO_COMPLETE_STATUS, firstMemberRequestId),
240 new PresetMSOOrchestrationRequestGet(MSO_COMPLETE_STATUS, secondMemberRequestId)
243 final ImmutableList.Builder<BasePreset> basePresetBuilder = new ImmutableList.Builder<>();
245 .add(new PresetGetSessionSlotCheckIntervalGet())
246 .add(new PresetAAIGetSubscribersGet())
247 .addAll(instanceGroupMemberPreset)
248 .addAll(inProgressPresets)
249 .addAll(vnfGroupPreset);
250 List<BasePreset> presets = basePresetBuilder.build();
252 registerExpectationFromPresets(presets, RegistrationStrategy.CLEAR_THEN_SET);
253 final List<String> uuids = createBulkOfInstances(false, 1, ImmutableMap.of(
254 VNF_GROUP1_ACTION, "Create",
255 RELATED_VNF1_ACTION, "Create",
256 RELATED_VNF2_ACTION, "Create"
257 ), PAYLOAD_TEMPLATE_1_VNF_GROUP_WITH_3_MEMBERS_REQUEST);
259 assertThat(uuids, hasSize(1));
260 final String jobId = uuids.get(0);
262 assertAuditStatuses(jobId, vidAuditStatusesCompleted(jobId), null, 60);
263 assertThat(SimulatorApi.retrieveRecordedRequestsPathCounter(), allOf(
264 TestUtils.hasOrLacksOfEntry(vnfGroupPreset.get(0).getReqPath(), 1L),
265 TestUtils.hasOrLacksOfEntry(instanceGroupMemberPreset.get(0).getReqPath(), 2L),
266 TestUtils.hasOrLacksOfEntry(inProgressPresets.get(0).getReqPath(), 1L),
267 TestUtils.hasOrLacksOfEntry(inProgressPresets.get(1).getReqPath(), 1L),
268 TestUtils.hasOrLacksOfEntry(inProgressPresets.get(2).getReqPath(), 1L)
272 @Test(dataProvider = "scenarios")
273 public void aLaCarteServiceScenarioRunner(Scenario scenario) {
275 This tests creates one or more a-la-carte requests, following one of the these scenarios:
277 MSO_FAIL: Submits to MSO, but while getting Orchestration status -> MSO
279 COMPLETED: Clean legit flow.
280 NAME_TAKEN: Sends request for instance, where AAI reports the name is
281 already taken. Therefore, MSO expects added postfix _001.
282 IN_PROGRESS: Submits to MSO, but while getting Orchestration status -> MSO
283 reports IN_PROGRESS endlessly
284 DUPLICATE_NAME: Sends two requests for instances with the same name.
285 PARALLEL: Submits 3 requests, that must not interfere with each other.
288 registerExpectationFromPresets(ImmutableList.of(
289 new PresetGetSessionSlotCheckIntervalGet(),
290 new PresetAAIGetSubscribersGet()
291 ), RegistrationStrategy.CLEAR_THEN_SET);
294 final String name0 = randomAlphabetic(18);
296 OneServiceActor inProgressCase = new OneServiceActor(
297 scenario == Scenario.PARALLEL || scenario == Scenario.IN_PROGRESS || scenario == Scenario.DUPLICATE_NAME,
298 "IN_PROGRESS", "status #1",
299 ImmutableMap.of(SERVICE_NAME, name0), 0,
300 JobStatus.IN_PROGRESS, this::vidAuditStatusesInProgress
303 OneServiceActor completedCase = new OneServiceActor(
304 scenario == Scenario.PARALLEL || scenario == Scenario.COMPLETED,
305 MSO_COMPLETE_STATUS, "status #2",
306 ImmutableMap.of(SERVICE_NAME, randomAlphabetic(5)), 0,
307 JobStatus.COMPLETED, this::vidAuditStatusesCompleted
310 final String name1 = randomAlphabetic(5);
311 OneServiceActor occupiedNameCase = new OneServiceActor(
312 scenario == Scenario.NAME_TAKEN,
313 MSO_COMPLETE_STATUS, "status #6",
314 ImmutableMap.of(SERVICE_NAME, name1), 1,
315 JobStatus.COMPLETED, this::vidAuditStatusesCompleted,
316 ImmutableList.of(new PresetAAISearchNodeQueryNonEmptyResult("service-instance", name1))
319 OneServiceActor failedCase = new OneServiceActor(
320 scenario == Scenario.PARALLEL || scenario == Scenario.MSO_FAIL,
321 "FAILED", "status #3",
322 ImmutableMap.of(SERVICE_NAME, randomAlphabetic(10)), 0,
323 JobStatus.FAILED, this::vidAuditStatusesFailed
326 OneServiceActor duplicateNameCase = new OneServiceActor(
327 scenario == Scenario.DUPLICATE_NAME,
328 MSO_COMPLETE_STATUS, "status #4",
329 ImmutableMap.of(SERVICE_NAME, name0), 1,
330 JobStatus.COMPLETED, this::vidAuditStatusesCompleted
333 OneServiceActor inProgressTooLongCase = new OneServiceActor(
334 scenario == Scenario.IN_PROGRESS,
335 "IN_PROGRESS", "status #5",
336 ImmutableMap.of(SERVICE_NAME, randomAlphabetic(10)), 0,
337 JobStatus.FAILED, this::vidAuditStatusesFailed, 24
340 final List<OneServiceActor> servicesActors =
341 ImmutableList.of(inProgressCase, completedCase, occupiedNameCase, failedCase, duplicateNameCase, inProgressTooLongCase);
343 servicesActors.forEach(actor -> registerExpectationFromPresets(actor.getPresets(),
344 RegistrationStrategy.APPEND));
346 servicesActors.forEach(OneServiceActor::createInstances);
348 servicesActors.forEach(OneServiceActor::assertServiceInfo);
349 servicesActors.forEach(OneServiceActor::assertAuditStatuses2);
353 public void delete1Create1NetworkFromService() {
354 String deleteRequestId = UUID.randomUUID().toString();
355 String createRequestId = UUID.randomUUID().toString();
356 String serviceInstanceId = BaseMSOPreset.DEFAULT_INSTANCE_ID;
357 String networkInstanceId = "NETWORK_INSTANCE_ID";
359 registerExpectationFromPresets(ImmutableList.of(
360 new PresetMSODeleteNetworkAlaCarteCypress(deleteRequestId, serviceInstanceId, networkInstanceId, "us16807000"),
361 new PresetMSOOrchestrationRequestGet(COMPLETE, deleteRequestId),
362 new PresetMSOCreateNetworkALaCarteServiceCypress2(createRequestId, serviceInstanceId, "ExtVL", "action-data", "6b528779-44a3-4472-bdff-9cd15ec93450"),
363 new PresetMSOOrchestrationRequestGet(COMPLETE, createRequestId),
364 PresetAAIGetCloudOwnersByCloudRegionId.PRESET_MTN6_TO_ATT_AIC
365 ), RegistrationStrategy.CLEAR_THEN_SET);
367 List<String> uuids = createBulkOfInstances(false, 1, ImmutableMap.of(), DELETE_AND_CREATE_NETWORK_FROM_SERVICE);
368 assertThat(uuids, hasSize(1));
369 String jobId = uuids.get(0);
371 assertExpectedStatusAndServiceInfo(JobStatus.COMPLETED, jobId, PATIENCE_LEVEL.FAIL_SLOW, new ServiceInfo(
372 "us16807000", JobStatus.COMPLETED, false,
373 "d61e6f2d-12fa-4cc2-91df-7c244011d6fc", "WayneHolland", "WATKINS",
374 "JAG1", "YUDFJULP-JAG1",
375 "092eb9e8e4b7412e8787dd091bc58e86", "USP-SIP-IC-24335-T-01",
377 "TYLER SILVIA", null,
378 null, "InstanceName",
379 "6b528779-44a3-4472-bdff-9cd15ec93450", "action-data", "1.0",
380 jobId, null, ServiceAction.UPDATE, false)
385 public void deleteServiceWithNetwork() {
386 String deleteNetworkRequestId = UUID.randomUUID().toString();
387 String deleteServiceRequestId = UUID.randomUUID().toString();
388 String serviceInstanceId = BaseMSOPreset.DEFAULT_INSTANCE_ID;
389 String networkInstanceId = "NETWORK_INSTANCE_ID";
391 registerExpectationFromPresets(ImmutableList.of(
392 new PresetMSODeleteNetworkAlaCarteCypress(deleteNetworkRequestId, serviceInstanceId, networkInstanceId, "us16807000"),
393 new PresetMSOOrchestrationRequestGet(COMPLETE, deleteNetworkRequestId),
394 new PresetMSODeleteService(deleteServiceRequestId, serviceInstanceId),
395 new PresetMSOOrchestrationRequestGet(COMPLETE, deleteServiceRequestId),
396 PresetAAIGetCloudOwnersByCloudRegionId.PRESET_MTN6_TO_ATT_AIC
397 ), RegistrationStrategy.CLEAR_THEN_SET);
399 List<String> uuids = createBulkOfInstances(false, 1, ImmutableMap.of(), DELETE_SERVICE_WITH_NETWORK);
400 assertThat(uuids, hasSize(1));
401 String jobId = uuids.get(0);
403 assertExpectedStatusAndServiceInfo(JobStatus.COMPLETED, jobId, PATIENCE_LEVEL.FAIL_SLOW, new ServiceInfo(
404 "us16807000", JobStatus.COMPLETED, false,
405 "d61e6f2d-12fa-4cc2-91df-7c244011d6fc", "WayneHolland", "WATKINS",
406 "JAG1", "YUDFJULP-JAG1",
407 "092eb9e8e4b7412e8787dd091bc58e86", "USP-SIP-IC-24335-T-01",
409 "TYLER SILVIA", null,
410 null, "InstanceName",
411 "6b528779-44a3-4472-bdff-9cd15ec93450", "action-data", "1.0",
412 jobId, null, ServiceAction.DELETE, false)
417 public void delete1VnfWithVfModulesAndCreate1VnfFromService() {
418 String deleteVnfRequestId = UUID.randomUUID().toString();
419 String createVnfRequestId = UUID.randomUUID().toString();
420 String deleteVfModuleRequestId = UUID.randomUUID().toString();
421 String deleteBaseVfModuleRequestId = UUID.randomUUID().toString();
422 String serviceInstanceId = BaseMSOPreset.DEFAULT_INSTANCE_ID;
423 String vnfInstanceId = "VNF_INSTANCE_ID";
425 registerExpectationFromPresets(ImmutableList.of(
426 new PresetAAIGetSubscribersGet(),
427 new PresetMSODeleteVnfAlaCarteCypress(deleteVnfRequestId, serviceInstanceId, vnfInstanceId, "us16807000"),
428 new PresetMSOOrchestrationRequestGet(COMPLETE, deleteVnfRequestId),
429 new PresetSDCGetServiceToscaModelGet("6b528779-44a3-4472-bdff-9cd15ec93450", "csar-withDynamicFields-ecompNamingFalse-partialModelDetails-vnfEcompNamingFalse.zip"),
430 new PresetSDCGetServiceMetadataGet("6b528779-44a3-4472-bdff-9cd15ec93450", "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0" , "csar-withDynamicFields-ecompNamingFalse-partialModelDetails-vnfEcompNamingFalse.zip"),
431 new PresetMSODeleteVfModuleCypress(deleteVfModuleRequestId, serviceInstanceId, vnfInstanceId, "VF_MODULE_INSTANCE_ID"),
432 new PresetMSOOrchestrationRequestGet(COMPLETE, deleteVfModuleRequestId),
433 new PresetMSODeleteBaseVfModuleCypress(deleteBaseVfModuleRequestId, serviceInstanceId, vnfInstanceId, "VF_MODULE_BASE_INSTANCE_ID"),
434 new PresetMSOOrchestrationRequestGet(COMPLETE, deleteBaseVfModuleRequestId),
435 new PresetMSOCreateVnfALaCarteServiceCypress2(createVnfRequestId, serviceInstanceId, "2017388_PASQUALEvPEmCaNkinstanceName", "zzz1"),
436 new PresetMSOOrchestrationRequestGet(COMPLETE, createVnfRequestId),
437 PresetAAIGetCloudOwnersByCloudRegionId.PRESET_SOME_LEGACY_REGION_TO_ATT_AIC,
438 PresetAAIGetCloudOwnersByCloudRegionId.PRESET_MTN6_TO_ATT_AIC,
439 PresetAAIGetCloudOwnersByCloudRegionId.PRESET_AAIAIC25_TO_ATT_AIC
440 ), RegistrationStrategy.CLEAR_THEN_SET);
442 List<String> uuids = createBulkOfInstances(false, 1, ImmutableMap.of(), DELETE_AND_CREATE_VNF_FROM_SERVICE);
443 assertThat(uuids, hasSize(1));
444 String jobId = uuids.get(0);
446 assertExpectedStatusAndServiceInfo(JobStatus.COMPLETED, jobId, PATIENCE_LEVEL.FAIL_SLOW, new ServiceInfo(
447 "us16807000", JobStatus.COMPLETED, false,
448 "d61e6f2d-12fa-4cc2-91df-7c244011d6fc", "WayneHolland", "WATKINS",
449 "NFT1", "NFTJSSSS-NFT1",
450 "bae71557c5bb4d5aac6743a4e5f1d054", "AIN Web Tool-15-D-testalexandria",
452 "TYLER SILVIA", null,
453 "f8791436-8d55-4fde-b4d5-72dd2cf13cfb", "mCaNkinstancename",
454 "6b528779-44a3-4472-bdff-9cd15ec93450", "action-data", "1.0",
455 jobId, null, ServiceAction.UPDATE, false)
460 public void deleteServiceWithVnf() {
461 String deleteVnfRequestId = UUID.randomUUID().toString();
462 String deleteServiceRequestId = UUID.randomUUID().toString();
463 String serviceInstanceId = BaseMSOPreset.DEFAULT_INSTANCE_ID;
464 String vnfInstanceId = "VNF_INSTANCE_ID";
466 registerExpectationFromPresets(ImmutableList.of(
467 new PresetMSODeleteVnfAlaCarteCypress(deleteVnfRequestId, serviceInstanceId, vnfInstanceId, "us16807000"),
468 new PresetMSOOrchestrationRequestGet(COMPLETE, deleteVnfRequestId),
469 new PresetMSODeleteService(deleteServiceRequestId, serviceInstanceId),
470 new PresetMSOOrchestrationRequestGet(COMPLETE, deleteServiceRequestId),
471 PresetAAIGetCloudOwnersByCloudRegionId.PRESET_SOME_LEGACY_REGION_TO_ATT_AIC
472 ), RegistrationStrategy.CLEAR_THEN_SET);
474 List<String> uuids = createBulkOfInstances(false, 1, ImmutableMap.of(), DELETE_SERVICE_WITH_VNF);
475 assertThat(uuids, hasSize(1));
476 String jobId = uuids.get(0);
478 assertExpectedStatusAndServiceInfo(JobStatus.COMPLETED, jobId, PATIENCE_LEVEL.FAIL_SLOW, new ServiceInfo(
479 "us16807000", JobStatus.COMPLETED, false,
480 "d61e6f2d-12fa-4cc2-91df-7c244011d6fc", "WayneHolland", "WATKINS",
481 "NFT1", "NFTJSSSS-NFT1",
482 "bae71557c5bb4d5aac6743a4e5f1d054", "AIN Web Tool-15-D-testalexandria",
484 "TYLER SILVIA", null,
485 "f8791436-8d55-4fde-b4d5-72dd2cf13cfb", "mCaNkinstancename",
486 "6b528779-44a3-4472-bdff-9cd15ec93450", "action-data", "1.0",
487 jobId, null, ServiceAction.DELETE, false)
491 private ImmutableList<JobAuditStatus> vidAuditStatusesInProgress(String jobId) {
492 return ImmutableList.of(
493 vidAuditStatus(jobId, "PENDING", false),
494 vidAuditStatus(jobId, "IN_PROGRESS", false)
498 private ImmutableList<JobAuditStatus> vidAuditStatusesCompleted(String jobId) {
499 return ImmutableList.of(
500 vidAuditStatus(jobId, "PENDING", false),
501 vidAuditStatus(jobId, "IN_PROGRESS", false),
502 vidAuditStatus(jobId, "COMPLETED", true)
506 private ImmutableList<JobAuditStatus> vidAuditStatuses(String jobId, JobStatus jobStatus) {
509 return vidAuditStatusesCompleted(jobId);
510 case COMPLETED_WITH_ERRORS:
511 return vidAuditStatusesCompletedWithErrors(jobId);
513 return vidAuditStatusesFailed(jobId);
515 return vidAuditStatusesInProgress(jobId);
521 private ImmutableList<JobAuditStatus> msoAuditStatuses(String jobId , String lastStatus, String lastAdditionalInfo) {
522 final List<JobAuditStatus> auditMsoStatuses = getAuditStatuses(jobId, SourceStatus.MSO.name());
523 final UUID actualRequestId = auditMsoStatuses.get(0).getRequestId();
524 return ImmutableList.of(
525 msoAuditStatus(jobId, "REQUESTED", null, actualRequestId),
526 msoAuditStatus(jobId, lastStatus, lastAdditionalInfo, actualRequestId)
530 private JobAuditStatus msoAuditStatus(String jobId, String jobStatus, String additionalInfo, UUID requestId) {
531 return new JobAuditStatus(UUID.fromString(jobId), jobStatus, SourceStatus.MSO, requestId, additionalInfo, false);
534 private void assertServiceInfoSpecific3(String jobId, JobStatus jobStatus, String serviceInstanceName) {
535 assertExpectedStatusAndServiceInfo(jobStatus, jobId, PATIENCE_LEVEL.FAIL_SLOW, new ServiceInfo(
536 "us16807000", jobStatus, false,
537 "aaa1", "aaa1", "yyy1",
538 "YYY1", "UUUAIAAI-YYY1",
539 "1178612d2b394be4834ad77f567c0af2", "AIN Web Tool-15-D-SSPtestcustome",
541 "TYLER SILVIA", null,
542 null, serviceInstanceName,
543 "6e59c5de-f052-46fa-aa7e-2fca9d674c44", "ComplexService", "1.0",
544 jobId, null, ServiceAction.INSTANTIATE, false)
548 private List<BasePreset> getGroupMembersPresets(List<PresetMSOAddOrRemoveOneInstanceGroupMember> deleteMembersPreset, List<PresetMSOOrchestrationRequestGet> inProgressPresets) {
549 final ImmutableList.Builder<BasePreset> basePresetBuilder = new ImmutableList.Builder<>();
551 .add(new PresetGetSessionSlotCheckIntervalGet())
552 .add(new PresetAAIGetSubscribersGet())
553 .addAll(deleteMembersPreset)
554 .addAll(inProgressPresets);
555 return basePresetBuilder.build();
560 PARALLEL, COMPLETED, NAME_TAKEN, DUPLICATE_NAME, IN_PROGRESS, MSO_FAIL
563 class OneServiceActor {
564 private final boolean isRelevant;
565 private final String requestId;
566 private final String msoInfo;
567 private final Map<PresetMSOServiceInstanceGen2WithNames.Keys, String> serviceNames;
568 private final int suffix;
569 private final String expectedMsoLastStatus;
570 private final JobStatus jobStatus;
571 private final Function<String, List<JobAuditStatus>> jobAuditStatusesProvider;
572 private String jobId;
573 private int startedHoursAgo = 1;
574 private List<BasePreset> morePresets = ImmutableList.of();
576 private OneServiceActor(boolean isRelevant, String msoLastStatus, String msoInfo, Map<PresetMSOServiceInstanceGen2WithNames.Keys, String> serviceNames, int suffix, JobStatus jobStatus, Function<String, List<JobAuditStatus>> jobAuditStatusesProvider) {
577 this.isRelevant = isRelevant;
578 this.requestId = UUID.randomUUID().toString();
579 this.msoInfo = msoInfo;
580 this.serviceNames = serviceNames;
581 this.suffix = suffix;
582 this.expectedMsoLastStatus = msoLastStatus;
583 this.jobStatus = jobStatus;
584 this.jobAuditStatusesProvider = jobAuditStatusesProvider;
587 private OneServiceActor(boolean isRelevant, String msoLastStatus, String msoInfo, Map<PresetMSOServiceInstanceGen2WithNames.Keys, String> serviceNames, int suffix, JobStatus jobStatus, Function<String, List<JobAuditStatus>> jobAuditStatusesProvider, int startedHoursAgo) {
588 this(isRelevant, msoLastStatus, msoInfo, serviceNames, suffix, jobStatus, jobAuditStatusesProvider);
589 this.startedHoursAgo = startedHoursAgo;
592 private OneServiceActor(boolean isRelevant, String msoLastStatus, String msoInfo, Map<PresetMSOServiceInstanceGen2WithNames.Keys, String> serviceNames, int suffix, JobStatus jobStatus, Function<String, List<JobAuditStatus>> jobAuditStatusesProvider, List<BasePreset> morePresets) {
593 this(isRelevant, msoLastStatus, msoInfo, serviceNames, suffix, jobStatus, jobAuditStatusesProvider);
594 this.morePresets = morePresets;
597 public List<BasePreset> getPresets() {
598 // if not relevant -> return empty list
600 ImmutableList.<BasePreset>builder().add(
601 new PresetMSOCreateServiceInstanceGen2WithNamesAlacarteService(serviceNames, suffix, requestId),
602 new PresetMSOOrchestrationRequestGet(expectedMsoLastStatus, requestId, msoInfo, startedHoursAgo)
603 ).addAll(morePresets).build()
604 : ImmutableList.of();
607 private void createInstances() {
608 // call VID with 1 request, keep the job id
609 if (!isRelevant) return;
610 final List<String> jobIds = createBulkOfInstances(false, 1, serviceNames, CREATE_BULK_OF_ALACARTE_REQUEST);
611 assertThat(jobIds, hasSize(1));
612 jobId = jobIds.get(0);
615 private void assertServiceInfo() {
616 if (!isRelevant) return;
617 assertThat(jobId, is(not(nullValue())));
618 assertServiceInfoSpecific1(jobId, jobStatus, serviceNames.get(SERVICE_NAME));
621 private void assertAuditStatuses2() {
622 if (!isRelevant) return;
623 assertThat(jobId, is(not(nullValue())));
624 assertAuditStatuses(jobId, jobAuditStatusesProvider.apply(jobId), msoAuditStatuses(jobId, expectedMsoLastStatus, msoInfo));