1 package org.onap.vid.api;
3 import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic;
4 import static org.hamcrest.CoreMatchers.is;
5 import static org.hamcrest.CoreMatchers.nullValue;
6 import static org.hamcrest.MatcherAssert.assertThat;
7 import static org.hamcrest.Matchers.allOf;
8 import static org.hamcrest.Matchers.not;
9 import static org.hamcrest.collection.IsCollectionWithSize.hasSize;
10 import static org.onap.simulator.presetGenerator.presets.mso.PresetMSOBaseCreateInstancePost.DEFAULT_REQUEST_ID;
11 import static org.onap.simulator.presetGenerator.presets.mso.PresetMSOOrchestrationRequestGet.COMPLETE;
12 import static org.onap.simulator.presetGenerator.presets.mso.PresetMSOServiceInstanceGen2WithNames.Keys.RELATED_VNF1_ACTION;
13 import static org.onap.simulator.presetGenerator.presets.mso.PresetMSOServiceInstanceGen2WithNames.Keys.RELATED_VNF2_ACTION;
14 import static org.onap.simulator.presetGenerator.presets.mso.PresetMSOServiceInstanceGen2WithNames.Keys.SERVICE_NAME;
15 import static org.onap.simulator.presetGenerator.presets.mso.PresetMSOServiceInstanceGen2WithNames.Keys.VNF_GROUP1_ACTION;
16 import static vid.automation.test.services.SimulatorApi.registerExpectationFromPreset;
17 import static vid.automation.test.services.SimulatorApi.registerExpectationFromPresets;
19 import com.google.common.collect.ImmutableList;
20 import com.google.common.collect.ImmutableMap;
21 import java.util.List;
23 import java.util.UUID;
24 import java.util.function.Function;
25 import org.onap.simulator.presetGenerator.presets.BasePresets.BaseMSOPreset;
26 import org.onap.simulator.presetGenerator.presets.BasePresets.BasePreset;
27 import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetCloudOwnersByCloudRegionId;
28 import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetSubscribersGet;
29 import org.onap.simulator.presetGenerator.presets.aai.PresetAAISearchNodeQueryNonEmptyResult;
30 import org.onap.simulator.presetGenerator.presets.ecompportal_att.PresetGetSessionSlotCheckIntervalGet;
31 import org.onap.simulator.presetGenerator.presets.mso.PresetMSOAddOrRemoveOneInstanceGroupMember;
32 import org.onap.simulator.presetGenerator.presets.mso.PresetMSOAddOrRemoveOneInstanceGroupMember.InstanceGroupMemberAction;
33 import org.onap.simulator.presetGenerator.presets.mso.PresetMSOBaseCreateInstancePost;
34 import org.onap.simulator.presetGenerator.presets.mso.PresetMSOCreateNetworkALaCarteServiceCypress2;
35 import org.onap.simulator.presetGenerator.presets.mso.PresetMSOCreateServiceInstanceGen2WithNamesAlacarteGroupingService;
36 import org.onap.simulator.presetGenerator.presets.mso.PresetMSOCreateServiceInstanceGen2WithNamesAlacarteService;
37 import org.onap.simulator.presetGenerator.presets.mso.PresetMSOCreateServiceInstanceMultipleVnfsServiceCypress;
38 import org.onap.simulator.presetGenerator.presets.mso.PresetMSOCreateVnfALaCarteServiceCypress;
39 import org.onap.simulator.presetGenerator.presets.mso.PresetMSOCreateVnfALaCarteServiceCypress2;
40 import org.onap.simulator.presetGenerator.presets.mso.PresetMSOCreateVnfGroup;
41 import org.onap.simulator.presetGenerator.presets.mso.PresetMSODeleteBaseVfModuleCypress;
42 import org.onap.simulator.presetGenerator.presets.mso.PresetMSODeleteNetworkAlaCarteCypress;
43 import org.onap.simulator.presetGenerator.presets.mso.PresetMSODeleteService;
44 import org.onap.simulator.presetGenerator.presets.mso.PresetMSODeleteVfModuleCypress;
45 import org.onap.simulator.presetGenerator.presets.mso.PresetMSODeleteVnfAlaCarteCypress;
46 import org.onap.simulator.presetGenerator.presets.mso.PresetMSOOrchestrationRequestGet;
47 import org.onap.simulator.presetGenerator.presets.mso.PresetMSOServiceInstanceGen2WithNames;
48 import org.onap.simulator.presetGenerator.presets.sdc.PresetSDCGetServiceMetadataGet;
49 import org.onap.simulator.presetGenerator.presets.sdc.PresetSDCGetServiceToscaModelGet;
50 import org.onap.vid.model.asyncInstantiation.JobAuditStatus;
51 import org.onap.vid.model.asyncInstantiation.JobAuditStatus.SourceStatus;
52 import org.onap.vid.model.asyncInstantiation.ServiceInfo;
53 import org.testng.annotations.AfterMethod;
54 import org.testng.annotations.DataProvider;
55 import org.testng.annotations.Test;
56 import vid.automation.test.infra.FeatureTogglingTest;
57 import vid.automation.test.infra.Features;
58 import vid.automation.test.model.JobStatus;
59 import vid.automation.test.model.ServiceAction;
60 import vid.automation.test.services.AsyncJobsService;
61 import vid.automation.test.services.SimulatorApi;
62 import vid.automation.test.services.SimulatorApi.RegistrationStrategy;
64 @FeatureTogglingTest({Features.FLAG_ASYNC_ALACARTE_VNF})
65 public class AsyncInstantiationALaCarteApiTest3 extends AsyncInstantiationBase {
67 private static final String CREATE_BULK_OF_ALACARTE_REQUEST = "asyncInstantiation/vidRequestCreateALaCarte.json";
68 private static final String CREATE_BULK_OF_ALACARTE_MULTIPLE_VNF_NETWORK_REQUEST_CYPRESS = "a-la-carte/redux-multiple-vnf-network.json";
69 private static final String CREATE_BULK_OF_ALACARTE_REQUEST_WITH_VNF_GROUP = "VnfGroup/serviceWithVnfGroupCreateRequest.json";
70 private static final String PAYLOAD_TEMPLATE_1_VNF_GROUP_WITH_3_MEMBERS_REQUEST = "VnfGroup/payloadTemplate1VnfGroupWith3MembersRequest.json";
71 private static final String DELETE_AND_CREATE_NETWORK_FROM_SERVICE = "asyncInstantiation/vidRequestDelete1Create1Network.json";
72 private static final String DELETE_SERVICE_WITH_NETWORK = "asyncInstantiation/vidRequestDeleteServiceWithNetwork.json";
73 private static final String DELETE_AND_CREATE_VNF_FROM_SERVICE = "asyncInstantiation/vidRequestDelete1Create1Vnf.json";
74 private static final String DELETE_SERVICE_WITH_VNF = "asyncInstantiation/vidRequestDeleteServiceWithVnf.json";
77 private static final String FIRST_REQUEST_ID = "d1011670-0e1a-4b74-945d-8bf5aede1d9c";
78 private static final String SECOND_REQUEST_ID = "e2011670-0e1a-4b74-945d-8bf5aede1d9c";
79 private static final String THIRD_REQUEST_ID = "f3011670-0e1a-4b74-945d-8bf5aede1d9c";
80 private static final String SERVICE_INSTANCE_ID = BaseMSOPreset.DEFAULT_INSTANCE_ID;
81 private static final String MSO_COMPLETE_STATUS = "COMPLETE";
82 private static final String MSO_FAILED_STATUS = "FAILED";
86 public static Object[][] scenarios() {
87 return new Object[][]{
90 // {Scenario.NAME_TAKEN}, Not relevant because the name uniqueness is supported only for bulk in Macro
91 // {Scenario.DUPLICATE_NAME}, Not relevant because name duplication is not handled in A La Carte
92 {Scenario.IN_PROGRESS},
98 protected void dropAllFromNameCounter() {
99 AsyncJobsService asyncJobsService = new AsyncJobsService();
100 asyncJobsService.dropAllFromNameCounter();
103 @Test(dataProvider = "multipleVnfDataProvider")
104 public void deployServiceFromCypress__multipleVnfsAndNetwork(String expectedStatus, JobStatus expectedJobStatus) {
105 dropAllFromNameCounter();// needed because each data provider info not going to after method
106 final ImmutableMap<PresetMSOServiceInstanceGen2WithNames.Keys, String> names = ImmutableMap.of(SERVICE_NAME, "serviceInstanceName");
108 List<PresetMSOBaseCreateInstancePost> createPresets = ImmutableList.of(
109 new PresetMSOCreateServiceInstanceMultipleVnfsServiceCypress(names, 0, DEFAULT_REQUEST_ID),
110 new PresetMSOCreateVnfALaCarteServiceCypress(FIRST_REQUEST_ID, SERVICE_INSTANCE_ID,"VFvGeraldine00001", "zzz1"),
111 new PresetMSOCreateVnfALaCarteServiceCypress(SECOND_REQUEST_ID, SERVICE_INSTANCE_ID,"VFvGeraldine00001_001", "ONAP"),
112 new PresetMSOCreateNetworkALaCarteServiceCypress2(THIRD_REQUEST_ID, SERVICE_INSTANCE_ID, "ExtVL")
114 List<PresetMSOOrchestrationRequestGet> inProgressPresets = ImmutableList.of(
115 new PresetMSOOrchestrationRequestGet(expectedStatus.equals("SERVICE_FAILED") ? MSO_FAILED_STATUS : MSO_COMPLETE_STATUS, DEFAULT_REQUEST_ID),
116 new PresetMSOOrchestrationRequestGet( MSO_COMPLETE_STATUS, FIRST_REQUEST_ID, "First VNF instance was created successfully." ),
117 new PresetMSOOrchestrationRequestGet(expectedStatus, SECOND_REQUEST_ID, expectedStatus.equals(MSO_COMPLETE_STATUS)?"Second VNF instance was created successfully.": MSO_BASE_ERROR),
118 new PresetMSOOrchestrationRequestGet(MSO_COMPLETE_STATUS, THIRD_REQUEST_ID,"Network was created successfully.")
120 List<BasePreset> presets = getPresets( createPresets, inProgressPresets);
122 registerExpectationFromPresets(presets, RegistrationStrategy.CLEAR_THEN_SET);
123 registerExpectationFromPreset(PresetAAIGetCloudOwnersByCloudRegionId.PRESET_MTN6_TO_ATT_AIC, RegistrationStrategy.APPEND);
125 final List<String> uuids = createBulkOfInstances(false, 1, names, CREATE_BULK_OF_ALACARTE_MULTIPLE_VNF_NETWORK_REQUEST_CYPRESS);
127 assertThat(uuids, hasSize(1));
128 final String jobId = uuids.get(0);
130 //expected vid statuses
131 ImmutableList<JobAuditStatus> vidAuditStatuses;
133 if (expectedStatus.equals(MSO_COMPLETE_STATUS)){
134 vidAuditStatuses = vidAuditStatusesCompleted(jobId);
135 } else if (expectedStatus.equals("SERVICE_FAILED")){
136 vidAuditStatuses = vidAuditStatusesFailed(jobId);
138 vidAuditStatuses = vidAuditStatusesCompletedWithErrors(jobId);
141 assertServiceInfoSpecific3(jobId, expectedJobStatus , names.get(SERVICE_NAME));
142 assertAuditStatuses(jobId, vidAuditStatuses, null);
147 Object[][] multipleVnfDataProvider() {
148 return new Object[][]{{MSO_FAILED_STATUS, JobStatus.COMPLETED_WITH_ERRORS},{MSO_COMPLETE_STATUS, JobStatus.COMPLETED}, {"SERVICE_FAILED", JobStatus.FAILED}};
152 @FeatureTogglingTest(Features.FLAG_1902_VNF_GROUPING)
153 public void deploy1ServiceWith1VnfGroup() {
154 final ImmutableMap<PresetMSOServiceInstanceGen2WithNames.Keys, String> names = ImmutableMap.of(SERVICE_NAME, "Grouping_Service_Instance");
155 String serviceReqId = "3cf5ea96-6b34-4945-b5b1-4a7798b1caf2";
156 String serviceInstanceId = BaseMSOPreset.DEFAULT_INSTANCE_ID;
157 String instanceGroupReqId = "715a5106-cdcc-44ee-8923-83d68a896908";
159 List<PresetMSOBaseCreateInstancePost> createPresets = ImmutableList.of(
160 new PresetMSOCreateServiceInstanceGen2WithNamesAlacarteGroupingService(names, 0, serviceReqId),
161 new PresetMSOCreateVnfGroup("ABC", instanceGroupReqId, PresetMSOCreateVnfGroup.MODEL_INFO_1, serviceInstanceId, false));
162 List<PresetMSOOrchestrationRequestGet> inProgressPresets = ImmutableList.of(
163 new PresetMSOOrchestrationRequestGet("COMPLETE", serviceReqId),
164 new PresetMSOOrchestrationRequestGet("COMPLETE", instanceGroupReqId, "Instance group was created successfully."));
165 List<BasePreset> presets = getPresets(createPresets, inProgressPresets);
167 registerExpectationFromPresets(presets, RegistrationStrategy.CLEAR_THEN_SET);
169 final List<String> uuids = createBulkOfInstances(false, 1, names, CREATE_BULK_OF_ALACARTE_REQUEST_WITH_VNF_GROUP);
171 assertThat(uuids, hasSize(1));
172 final String jobId = uuids.get(0);
174 assertExpectedStatusAndServiceInfo(JobStatus.COMPLETED, jobId, new ServiceInfo(
175 "us16807000", JobStatus.COMPLETED, false,
176 "d61e6f2d-12fa-4cc2-91df-7c244011d6fc", "WayneHolland", "WATKINS",
180 "TYLER SILVIA", "SILVIA ROBBINS",
181 null, names.get(SERVICE_NAME),
182 "4117a0b6-e234-467d-b5b9-fe2f68c8b0fc", "Grouping Service for Test", "1.0",
183 jobId, null, ServiceAction.INSTANTIATE, false));
186 assertAuditStatuses(jobId, vidAuditStatusesCompleted(jobId),null);
188 assertThat(SimulatorApi.retrieveRecordedRequestsPathCounter(), allOf(
189 TestUtils.hasOrLacksOfEntry(createPresets.get(0).getReqPath(), 1L),
190 TestUtils.hasOrLacksOfEntry(createPresets.get(1).getReqPath(), 1L),
191 TestUtils.hasOrLacksOfEntry(inProgressPresets.get(0).getReqPath(), 1L),
192 TestUtils.hasOrLacksOfEntry(inProgressPresets.get(1).getReqPath(), 1L)));
196 public static Object[][] addAndDeleteMembersMsoStatus() {
197 return new Object[][]{
198 {MSO_COMPLETE_STATUS, MSO_COMPLETE_STATUS, JobStatus.COMPLETED},
199 {MSO_FAILED_STATUS, MSO_FAILED_STATUS, JobStatus.FAILED},
200 {MSO_COMPLETE_STATUS, MSO_FAILED_STATUS, JobStatus.COMPLETED_WITH_ERRORS}
204 @Test(dataProvider = "addAndDeleteMembersMsoStatus")
205 @FeatureTogglingTest(Features.FLAG_1902_VNF_GROUPING)
206 public void add1delete1GroupMembers_withGoodResponseFromMso_verifyStatusAndRequests(String firstMemberStatus, String secondMemberStatus, JobStatus expectedJobStatus) {
208 String firstMemberRequestId = UUID.randomUUID().toString();
209 String secondMemberRequestId = UUID.randomUUID().toString();
211 List<PresetMSOAddOrRemoveOneInstanceGroupMember> instanceGroupMemberPreset = ImmutableList.of(
212 new PresetMSOAddOrRemoveOneInstanceGroupMember("VNF_GROUP1_INSTANCE_ID", "RELATED_VNF1_INSTANCE_ID", getUserCredentials().getUserId(), firstMemberRequestId, InstanceGroupMemberAction.Add),
213 new PresetMSOAddOrRemoveOneInstanceGroupMember("VNF_GROUP1_INSTANCE_ID", "RELATED_VNF2_INSTANCE_ID", getUserCredentials().getUserId(), secondMemberRequestId, InstanceGroupMemberAction.Remove)
215 List<PresetMSOOrchestrationRequestGet> inProgressPresets = ImmutableList.of(
216 new PresetMSOOrchestrationRequestGet(firstMemberStatus, firstMemberRequestId),
217 new PresetMSOOrchestrationRequestGet(secondMemberStatus, secondMemberRequestId)
220 List<BasePreset> presets = getGroupMembersPresets(instanceGroupMemberPreset,inProgressPresets);
221 registerExpectationFromPresets(presets, RegistrationStrategy.CLEAR_THEN_SET);
222 final List<String> uuids = createBulkOfInstances(false, 1, ImmutableMap.of(
223 VNF_GROUP1_ACTION, "None",
224 RELATED_VNF1_ACTION, "Create",
225 RELATED_VNF2_ACTION, "None_Delete"
226 ), PAYLOAD_TEMPLATE_1_VNF_GROUP_WITH_3_MEMBERS_REQUEST);
228 assertThat(uuids, hasSize(1));
229 final String jobId = uuids.get(0);
231 assertAuditStatuses(jobId, vidAuditStatuses(jobId, expectedJobStatus), null, 60);
232 assertThat(SimulatorApi.retrieveRecordedRequestsPathCounter(), allOf(
233 TestUtils.hasOrLacksOfEntry(instanceGroupMemberPreset.get(0).getReqPath(), 1L),
234 TestUtils.hasOrLacksOfEntry(instanceGroupMemberPreset.get(1).getReqPath(), 1L),
235 TestUtils.hasOrLacksOfEntry(inProgressPresets.get(0).getReqPath(), 1L),
236 TestUtils.hasOrLacksOfEntry(inProgressPresets.get(1).getReqPath(), 1L)
241 @FeatureTogglingTest(Features.FLAG_1902_VNF_GROUPING)
242 public void addVnfGroupWith2GroupMembers_withGoodResponseFromMso_verifyStatusAndRequests() {
244 String vnfGroupRequestId = UUID.randomUUID().toString();
245 String firstMemberRequestId = UUID.randomUUID().toString();
246 String secondMemberRequestId = UUID.randomUUID().toString();
248 List <PresetMSOCreateVnfGroup> vnfGroupPreset = ImmutableList.of(
249 new PresetMSOCreateVnfGroup("VNF_GROUP1_INSTANCE_NAME",vnfGroupRequestId,PresetMSOCreateVnfGroup.MODEL_INFO_0,"service-instance-id", true));
250 List<PresetMSOAddOrRemoveOneInstanceGroupMember> instanceGroupMemberPreset = ImmutableList.of(
251 new PresetMSOAddOrRemoveOneInstanceGroupMember("VNF_GROUP1_INSTANCE_ID", "RELATED_VNF1_INSTANCE_ID", getUserCredentials().getUserId(), firstMemberRequestId, InstanceGroupMemberAction.Add),
252 new PresetMSOAddOrRemoveOneInstanceGroupMember("VNF_GROUP1_INSTANCE_ID", "RELATED_VNF2_INSTANCE_ID", getUserCredentials().getUserId(), secondMemberRequestId, InstanceGroupMemberAction.Add)
254 List<PresetMSOOrchestrationRequestGet> inProgressPresets = ImmutableList.of(
255 new PresetMSOOrchestrationRequestGet(MSO_COMPLETE_STATUS, vnfGroupRequestId),
256 new PresetMSOOrchestrationRequestGet(MSO_COMPLETE_STATUS, firstMemberRequestId),
257 new PresetMSOOrchestrationRequestGet(MSO_COMPLETE_STATUS, secondMemberRequestId)
260 final ImmutableList.Builder<BasePreset> basePresetBuilder = new ImmutableList.Builder<>();
262 .add(new PresetGetSessionSlotCheckIntervalGet())
263 .add(new PresetAAIGetSubscribersGet())
264 .addAll(instanceGroupMemberPreset)
265 .addAll(inProgressPresets)
266 .addAll(vnfGroupPreset);
267 List<BasePreset> presets = basePresetBuilder.build();
269 registerExpectationFromPresets(presets, RegistrationStrategy.CLEAR_THEN_SET);
270 final List<String> uuids = createBulkOfInstances(false, 1, ImmutableMap.of(
271 VNF_GROUP1_ACTION, "Create",
272 RELATED_VNF1_ACTION, "Create",
273 RELATED_VNF2_ACTION, "Create"
274 ), PAYLOAD_TEMPLATE_1_VNF_GROUP_WITH_3_MEMBERS_REQUEST);
276 assertThat(uuids, hasSize(1));
277 final String jobId = uuids.get(0);
279 assertAuditStatuses(jobId, vidAuditStatusesCompleted(jobId), null, 60);
280 assertThat(SimulatorApi.retrieveRecordedRequestsPathCounter(), allOf(
281 TestUtils.hasOrLacksOfEntry(vnfGroupPreset.get(0).getReqPath(), 1L),
282 TestUtils.hasOrLacksOfEntry(instanceGroupMemberPreset.get(0).getReqPath(), 2L),
283 TestUtils.hasOrLacksOfEntry(inProgressPresets.get(0).getReqPath(), 1L),
284 TestUtils.hasOrLacksOfEntry(inProgressPresets.get(1).getReqPath(), 1L),
285 TestUtils.hasOrLacksOfEntry(inProgressPresets.get(2).getReqPath(), 1L)
289 @Test(dataProvider = "scenarios")
290 public void aLaCarteServiceScenarioRunner(Scenario scenario) {
292 This tests creates one or more a-la-carte requests, following one of the these scenarios:
294 MSO_FAIL: Submits to MSO, but while getting Orchestration status -> MSO
296 COMPLETED: Clean legit flow.
297 NAME_TAKEN: Sends request for instance, where AAI reports the name is
298 already taken. Therefore, MSO expects added postfix _001.
299 IN_PROGRESS: Submits to MSO, but while getting Orchestration status -> MSO
300 reports IN_PROGRESS endlessly
301 DUPLICATE_NAME: Sends two requests for instances with the same name.
302 PARALLEL: Submits 3 requests, that must not interfere with each other.
305 registerExpectationFromPresets(ImmutableList.of(
306 new PresetGetSessionSlotCheckIntervalGet(),
307 new PresetAAIGetSubscribersGet()
308 ), RegistrationStrategy.CLEAR_THEN_SET);
311 final String name0 = randomAlphabetic(18);
313 OneServiceActor inProgressCase = new OneServiceActor(
314 scenario == Scenario.PARALLEL || scenario == Scenario.IN_PROGRESS || scenario == Scenario.DUPLICATE_NAME,
315 "IN_PROGRESS", "status #1",
316 ImmutableMap.of(SERVICE_NAME, name0), 0,
317 JobStatus.IN_PROGRESS, this::vidAuditStatusesInProgress
320 OneServiceActor completedCase = new OneServiceActor(
321 scenario == Scenario.PARALLEL || scenario == Scenario.COMPLETED,
322 MSO_COMPLETE_STATUS, "status #2",
323 ImmutableMap.of(SERVICE_NAME, randomAlphabetic(5)), 0,
324 JobStatus.COMPLETED, this::vidAuditStatusesCompleted
327 final String name1 = randomAlphabetic(5);
328 OneServiceActor occupiedNameCase = new OneServiceActor(
329 scenario == Scenario.NAME_TAKEN,
330 MSO_COMPLETE_STATUS, "status #6",
331 ImmutableMap.of(SERVICE_NAME, name1), 1,
332 JobStatus.COMPLETED, this::vidAuditStatusesCompleted,
333 ImmutableList.of(new PresetAAISearchNodeQueryNonEmptyResult("service-instance", name1))
336 OneServiceActor failedCase = new OneServiceActor(
337 scenario == Scenario.PARALLEL || scenario == Scenario.MSO_FAIL,
338 "FAILED", "status #3",
339 ImmutableMap.of(SERVICE_NAME, randomAlphabetic(10)), 0,
340 JobStatus.FAILED, this::vidAuditStatusesFailed
343 OneServiceActor duplicateNameCase = new OneServiceActor(
344 scenario == Scenario.DUPLICATE_NAME,
345 MSO_COMPLETE_STATUS, "status #4",
346 ImmutableMap.of(SERVICE_NAME, name0), 1,
347 JobStatus.COMPLETED, this::vidAuditStatusesCompleted
350 OneServiceActor inProgressTooLongCase = new OneServiceActor(
351 scenario == Scenario.IN_PROGRESS,
352 "IN_PROGRESS", "status #5",
353 ImmutableMap.of(SERVICE_NAME, randomAlphabetic(10)), 0,
354 JobStatus.FAILED, this::vidAuditStatusesFailed, 24
357 final List<OneServiceActor> servicesActors =
358 ImmutableList.of(inProgressCase, completedCase, occupiedNameCase, failedCase, duplicateNameCase, inProgressTooLongCase);
360 servicesActors.forEach(actor -> registerExpectationFromPresets(actor.getPresets(),
361 RegistrationStrategy.APPEND));
363 servicesActors.forEach(OneServiceActor::createInstances);
365 servicesActors.forEach(OneServiceActor::assertServiceInfo);
366 servicesActors.forEach(OneServiceActor::assertAuditStatuses2);
370 public void delete1Create1NetworkFromService() {
371 String deleteRequestId = UUID.randomUUID().toString();
372 String createRequestId = UUID.randomUUID().toString();
373 String serviceInstanceId = BaseMSOPreset.DEFAULT_INSTANCE_ID;
374 String networkInstanceId = "NETWORK_INSTANCE_ID";
376 registerExpectationFromPresets(ImmutableList.of(
377 new PresetAAIGetSubscribersGet(),
378 new PresetMSODeleteNetworkAlaCarteCypress(deleteRequestId, serviceInstanceId, networkInstanceId, "us16807000"),
379 new PresetMSOOrchestrationRequestGet(COMPLETE, deleteRequestId),
380 new PresetMSOCreateNetworkALaCarteServiceCypress2(createRequestId, serviceInstanceId,
381 "ExtVL", "action-data",
382 "6b528779-44a3-4472-bdff-9cd15ec93450", "xxx1,platform"),
383 new PresetMSOOrchestrationRequestGet(COMPLETE, createRequestId),
384 PresetAAIGetCloudOwnersByCloudRegionId.PRESET_MTN6_TO_ATT_AIC
385 ), RegistrationStrategy.CLEAR_THEN_SET);
387 List<String> uuids = createBulkOfInstances(false, 1, ImmutableMap.of(), DELETE_AND_CREATE_NETWORK_FROM_SERVICE);
388 assertThat(uuids, hasSize(1));
389 String jobId = uuids.get(0);
391 assertExpectedStatusAndServiceInfo(JobStatus.COMPLETED, jobId, PATIENCE_LEVEL.FAIL_SLOW, new ServiceInfo(
392 "us16807000", JobStatus.COMPLETED, false,
393 "d61e6f2d-12fa-4cc2-91df-7c244011d6fc", "WayneHolland", "WATKINS",
394 "JAG1", "YUDFJULP-JAG1",
395 "092eb9e8e4b7412e8787dd091bc58e86", "USP-SIP-IC-24335-T-01",
397 "TYLER SILVIA", null,
398 null, "InstanceName",
399 "6b528779-44a3-4472-bdff-9cd15ec93450", "action-data", "1.0",
400 jobId, null, ServiceAction.UPDATE, false)
405 public void deleteServiceWithNetwork() {
406 String deleteNetworkRequestId = UUID.randomUUID().toString();
407 String deleteServiceRequestId = UUID.randomUUID().toString();
408 String serviceInstanceId = BaseMSOPreset.DEFAULT_INSTANCE_ID;
409 String networkInstanceId = "NETWORK_INSTANCE_ID";
411 registerExpectationFromPresets(ImmutableList.of(
412 new PresetAAIGetSubscribersGet(),
413 new PresetMSODeleteNetworkAlaCarteCypress(deleteNetworkRequestId, serviceInstanceId, networkInstanceId, "us16807000"),
414 new PresetMSOOrchestrationRequestGet(COMPLETE, deleteNetworkRequestId),
415 new PresetMSODeleteService(deleteServiceRequestId, serviceInstanceId),
416 new PresetMSOOrchestrationRequestGet(COMPLETE, deleteServiceRequestId),
417 PresetAAIGetCloudOwnersByCloudRegionId.PRESET_MTN6_TO_ATT_AIC
418 ), RegistrationStrategy.CLEAR_THEN_SET);
420 List<String> uuids = createBulkOfInstances(false, 1, ImmutableMap.of(), DELETE_SERVICE_WITH_NETWORK);
421 assertThat(uuids, hasSize(1));
422 String jobId = uuids.get(0);
424 assertExpectedStatusAndServiceInfo(JobStatus.COMPLETED, jobId, PATIENCE_LEVEL.FAIL_SLOW, new ServiceInfo(
425 "us16807000", JobStatus.COMPLETED, false,
426 "d61e6f2d-12fa-4cc2-91df-7c244011d6fc", "WayneHolland", "WATKINS",
427 "JAG1", "YUDFJULP-JAG1",
428 "092eb9e8e4b7412e8787dd091bc58e86", "USP-SIP-IC-24335-T-01",
430 "TYLER SILVIA", null,
431 null, "InstanceName",
432 "6b528779-44a3-4472-bdff-9cd15ec93450", "action-data", "1.0",
433 jobId, null, ServiceAction.DELETE, false)
438 public void delete1VnfWithVfModulesAndCreate1VnfFromService() {
439 String deleteVnfRequestId = UUID.randomUUID().toString();
440 String createVnfRequestId = UUID.randomUUID().toString();
441 String deleteVfModuleRequestId = UUID.randomUUID().toString();
442 String deleteBaseVfModuleRequestId = UUID.randomUUID().toString();
443 String serviceInstanceId = BaseMSOPreset.DEFAULT_INSTANCE_ID;
444 String vnfInstanceId = "VNF_INSTANCE_ID";
446 registerExpectationFromPresets(ImmutableList.of(
447 new PresetAAIGetSubscribersGet(),
448 new PresetMSODeleteVnfAlaCarteCypress(deleteVnfRequestId, serviceInstanceId, vnfInstanceId, "us16807000"),
449 new PresetMSOOrchestrationRequestGet(COMPLETE, deleteVnfRequestId),
450 new PresetSDCGetServiceToscaModelGet("6b528779-44a3-4472-bdff-9cd15ec93450", "csar-withDynamicFields-ecompNamingFalse-partialModelDetails-vnfEcompNamingFalse.zip"),
451 new PresetSDCGetServiceMetadataGet("6b528779-44a3-4472-bdff-9cd15ec93450", "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0" , "csar-withDynamicFields-ecompNamingFalse-partialModelDetails-vnfEcompNamingFalse.zip"),
452 new PresetMSODeleteVfModuleCypress(deleteVfModuleRequestId, serviceInstanceId, vnfInstanceId, "VF_MODULE_INSTANCE_ID"),
453 new PresetMSOOrchestrationRequestGet(COMPLETE, deleteVfModuleRequestId),
454 new PresetMSODeleteBaseVfModuleCypress(deleteBaseVfModuleRequestId, serviceInstanceId, vnfInstanceId, "VF_MODULE_BASE_INSTANCE_ID"),
455 new PresetMSOOrchestrationRequestGet(COMPLETE, deleteBaseVfModuleRequestId),
456 new PresetMSOCreateVnfALaCarteServiceCypress2(createVnfRequestId, serviceInstanceId, "2017388_PASQUALEvPEmCaNkinstanceName", "zzz1"),
457 new PresetMSOOrchestrationRequestGet(COMPLETE, createVnfRequestId),
458 PresetAAIGetCloudOwnersByCloudRegionId.PRESET_SOME_LEGACY_REGION_TO_ATT_AIC,
459 PresetAAIGetCloudOwnersByCloudRegionId.PRESET_MTN6_TO_ATT_AIC,
460 PresetAAIGetCloudOwnersByCloudRegionId.PRESET_AAIAIC25_TO_ATT_AIC
461 ), RegistrationStrategy.CLEAR_THEN_SET);
463 List<String> uuids = createBulkOfInstances(false, 1, ImmutableMap.of(), DELETE_AND_CREATE_VNF_FROM_SERVICE);
464 assertThat(uuids, hasSize(1));
465 String jobId = uuids.get(0);
467 assertExpectedStatusAndServiceInfo(JobStatus.COMPLETED, jobId, PATIENCE_LEVEL.FAIL_SLOW, new ServiceInfo(
468 "us16807000", JobStatus.COMPLETED, false,
469 "d61e6f2d-12fa-4cc2-91df-7c244011d6fc", "WayneHolland", "WATKINS",
470 "NFT1", "NFTJSSSS-NFT1",
471 "bae71557c5bb4d5aac6743a4e5f1d054", "AIN Web Tool-15-D-testalexandria",
473 "TYLER SILVIA", null,
474 "f8791436-8d55-4fde-b4d5-72dd2cf13cfb", "mCaNkinstancename",
475 "6b528779-44a3-4472-bdff-9cd15ec93450", "action-data", "1.0",
476 jobId, null, ServiceAction.UPDATE, false)
481 public void deleteServiceWithVnf() {
482 String deleteVnfRequestId = UUID.randomUUID().toString();
483 String deleteServiceRequestId = UUID.randomUUID().toString();
484 String serviceInstanceId = BaseMSOPreset.DEFAULT_INSTANCE_ID;
485 String vnfInstanceId = "VNF_INSTANCE_ID";
487 registerExpectationFromPresets(ImmutableList.of(
488 new PresetAAIGetSubscribersGet(),
489 new PresetMSODeleteVnfAlaCarteCypress(deleteVnfRequestId, serviceInstanceId, vnfInstanceId, "us16807000"),
490 new PresetMSOOrchestrationRequestGet(COMPLETE, deleteVnfRequestId),
491 new PresetMSODeleteService(deleteServiceRequestId, serviceInstanceId),
492 new PresetMSOOrchestrationRequestGet(COMPLETE, deleteServiceRequestId),
493 PresetAAIGetCloudOwnersByCloudRegionId.PRESET_SOME_LEGACY_REGION_TO_ATT_AIC
494 ), RegistrationStrategy.CLEAR_THEN_SET);
496 List<String> uuids = createBulkOfInstances(false, 1, ImmutableMap.of(), DELETE_SERVICE_WITH_VNF);
497 assertThat(uuids, hasSize(1));
498 String jobId = uuids.get(0);
500 assertExpectedStatusAndServiceInfo(JobStatus.COMPLETED, jobId, PATIENCE_LEVEL.FAIL_SLOW, new ServiceInfo(
501 "us16807000", JobStatus.COMPLETED, false,
502 "d61e6f2d-12fa-4cc2-91df-7c244011d6fc", "WayneHolland", "WATKINS",
503 "NFT1", "NFTJSSSS-NFT1",
504 "bae71557c5bb4d5aac6743a4e5f1d054", "AIN Web Tool-15-D-testalexandria",
506 "TYLER SILVIA", null,
507 "f8791436-8d55-4fde-b4d5-72dd2cf13cfb", "mCaNkinstancename",
508 "6b528779-44a3-4472-bdff-9cd15ec93450", "action-data", "1.0",
509 jobId, null, ServiceAction.DELETE, false)
513 private ImmutableList<JobAuditStatus> vidAuditStatusesInProgress(String jobId) {
514 return ImmutableList.of(
515 vidAuditStatus(jobId, "PENDING", false),
516 vidAuditStatus(jobId, "IN_PROGRESS", false)
520 private ImmutableList<JobAuditStatus> vidAuditStatusesCompleted(String jobId) {
521 return ImmutableList.of(
522 vidAuditStatus(jobId, "PENDING", false),
523 vidAuditStatus(jobId, "IN_PROGRESS", false),
524 vidAuditStatus(jobId, "COMPLETED", true)
528 private ImmutableList<JobAuditStatus> vidAuditStatuses(String jobId, JobStatus jobStatus) {
531 return vidAuditStatusesCompleted(jobId);
532 case COMPLETED_WITH_ERRORS:
533 return vidAuditStatusesCompletedWithErrors(jobId);
535 return vidAuditStatusesFailed(jobId);
537 return vidAuditStatusesInProgress(jobId);
543 private ImmutableList<JobAuditStatus> msoAuditStatuses(String jobId , String lastStatus, String lastAdditionalInfo) {
544 final List<JobAuditStatus> auditMsoStatuses = getAuditStatuses(jobId, SourceStatus.MSO.name());
545 final UUID actualRequestId = auditMsoStatuses.get(0).getRequestId();
546 return ImmutableList.of(
547 msoAuditStatus(jobId, "REQUESTED", null, actualRequestId),
548 msoAuditStatus(jobId, lastStatus, lastAdditionalInfo, actualRequestId)
552 private JobAuditStatus msoAuditStatus(String jobId, String jobStatus, String additionalInfo, UUID requestId) {
553 return new JobAuditStatus(UUID.fromString(jobId), jobStatus, SourceStatus.MSO, requestId, additionalInfo, false);
556 private void assertServiceInfoSpecific3(String jobId, JobStatus jobStatus, String serviceInstanceName) {
557 assertExpectedStatusAndServiceInfo(jobStatus, jobId, PATIENCE_LEVEL.FAIL_SLOW, new ServiceInfo(
558 "us16807000", jobStatus, false,
559 "aaa1", "aaa1", "yyy1",
560 "YYY1", "UUUAIAAI-YYY1",
561 "1178612d2b394be4834ad77f567c0af2", "AIN Web Tool-15-D-SSPtestcustome",
563 "TYLER SILVIA", null,
564 null, serviceInstanceName,
565 "6e59c5de-f052-46fa-aa7e-2fca9d674c44", "ComplexService", "1.0",
566 jobId, null, ServiceAction.INSTANTIATE, false)
570 private List<BasePreset> getGroupMembersPresets(List<PresetMSOAddOrRemoveOneInstanceGroupMember> deleteMembersPreset, List<PresetMSOOrchestrationRequestGet> inProgressPresets) {
571 final ImmutableList.Builder<BasePreset> basePresetBuilder = new ImmutableList.Builder<>();
573 .add(new PresetGetSessionSlotCheckIntervalGet())
574 .add(new PresetAAIGetSubscribersGet())
575 .addAll(deleteMembersPreset)
576 .addAll(inProgressPresets);
577 return basePresetBuilder.build();
582 PARALLEL, COMPLETED, NAME_TAKEN, DUPLICATE_NAME, IN_PROGRESS, MSO_FAIL
585 class OneServiceActor {
586 private final boolean isRelevant;
587 private final String requestId;
588 private final String msoInfo;
589 private final Map<PresetMSOServiceInstanceGen2WithNames.Keys, String> serviceNames;
590 private final int suffix;
591 private final String expectedMsoLastStatus;
592 private final JobStatus jobStatus;
593 private final Function<String, List<JobAuditStatus>> jobAuditStatusesProvider;
594 private String jobId;
595 private int startedHoursAgo = 1;
596 private List<BasePreset> morePresets = ImmutableList.of();
598 private OneServiceActor(boolean isRelevant, String msoLastStatus, String msoInfo, Map<PresetMSOServiceInstanceGen2WithNames.Keys, String> serviceNames, int suffix, JobStatus jobStatus, Function<String, List<JobAuditStatus>> jobAuditStatusesProvider) {
599 this.isRelevant = isRelevant;
600 this.requestId = UUID.randomUUID().toString();
601 this.msoInfo = msoInfo;
602 this.serviceNames = serviceNames;
603 this.suffix = suffix;
604 this.expectedMsoLastStatus = msoLastStatus;
605 this.jobStatus = jobStatus;
606 this.jobAuditStatusesProvider = jobAuditStatusesProvider;
609 private OneServiceActor(boolean isRelevant, String msoLastStatus, String msoInfo, Map<PresetMSOServiceInstanceGen2WithNames.Keys, String> serviceNames, int suffix, JobStatus jobStatus, Function<String, List<JobAuditStatus>> jobAuditStatusesProvider, int startedHoursAgo) {
610 this(isRelevant, msoLastStatus, msoInfo, serviceNames, suffix, jobStatus, jobAuditStatusesProvider);
611 this.startedHoursAgo = startedHoursAgo;
614 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) {
615 this(isRelevant, msoLastStatus, msoInfo, serviceNames, suffix, jobStatus, jobAuditStatusesProvider);
616 this.morePresets = morePresets;
619 public List<BasePreset> getPresets() {
620 // if not relevant -> return empty list
622 ImmutableList.<BasePreset>builder().add(
623 new PresetMSOCreateServiceInstanceGen2WithNamesAlacarteService(serviceNames, suffix, requestId),
624 new PresetMSOOrchestrationRequestGet(expectedMsoLastStatus, requestId, msoInfo, startedHoursAgo)
625 ).addAll(morePresets).build()
626 : ImmutableList.of();
629 private void createInstances() {
630 // call VID with 1 request, keep the job id
631 if (!isRelevant) return;
632 final List<String> jobIds = createBulkOfInstances(false, 1, serviceNames, CREATE_BULK_OF_ALACARTE_REQUEST);
633 assertThat(jobIds, hasSize(1));
634 jobId = jobIds.get(0);
637 private void assertServiceInfo() {
638 if (!isRelevant) return;
639 assertThat(jobId, is(not(nullValue())));
640 assertServiceInfoSpecific1(jobId, jobStatus, serviceNames.get(SERVICE_NAME));
643 private void assertAuditStatuses2() {
644 if (!isRelevant) return;
645 assertThat(jobId, is(not(nullValue())));
646 assertAuditStatuses(jobId, jobAuditStatusesProvider.apply(jobId), msoAuditStatuses(jobId, expectedMsoLastStatus, msoInfo));