1 package vid.automation.test.test;
3 import static java.util.Collections.emptyList;
4 import static junit.framework.TestCase.assertNull;
5 import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic;
6 import static org.hamcrest.CoreMatchers.startsWith;
7 import static org.hamcrest.MatcherAssert.assertThat;
8 import static org.hamcrest.Matchers.containsInAnyOrder;
9 import static org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetCloudOwnersByCloudRegionId.PRESET_MTN6_TO_ATT_AIC;
10 import static org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetCloudOwnersByCloudRegionId.PRESET_SOME_LEGACY_REGION_TO_ATT_AIC;
11 import static org.onap.simulator.presetGenerator.presets.mso.PresetMSOOrchestrationRequestGet.COMPLETE;
12 import static org.onap.simulator.presetGenerator.presets.mso.PresetMSOOrchestrationRequestGet.DEFAULT_SERVICE_INSTANCE_ID;
13 import static org.testng.Assert.assertEquals;
14 import static org.testng.AssertJUnit.assertTrue;
15 import static vid.automation.test.infra.Features.FLAG_1902_VNF_GROUPING;
16 import static vid.automation.test.infra.Features.FLAG_1908_COLLECTION_RESOURCE_NEW_INSTANTIATION_UI;
17 import static vid.automation.test.infra.Features.FLAG_1908_INFRASTRUCTURE_VPN;
18 import static vid.automation.test.infra.Features.FLAG_1908_MACRO_NOT_TRANSPORT_NEW_VIEW_EDIT;
19 import static vid.automation.test.infra.Features.FLAG_1908_TRANSPORT_SERVICE_NEW_INSTANTIATION_UI;
20 import static vid.automation.test.infra.Features.FLAG_2002_ANY_ALACARTE_BESIDES_EXCLUDED_NEW_INSTANTIATION_UI;
21 import static vid.automation.test.infra.Features.FLAG_5G_IN_NEW_INSTANTIATION_UI;
22 import static vid.automation.test.infra.Features.FLAG_ENABLE_WEBPACK_MODERN_UI;
23 import static vid.automation.test.infra.ModelInfo.aLaCarteNetworkProvider5G;
24 import static vid.automation.test.infra.ModelInfo.aLaCarteVnfGroupingService;
25 import static vid.automation.test.infra.ModelInfo.collectionResourceService;
26 import static vid.automation.test.infra.ModelInfo.infrastructureVpnService;
27 import static vid.automation.test.infra.ModelInfo.macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetails;
28 import static vid.automation.test.infra.ModelInfo.macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetailsVnfEcompNamingFalse;
29 import static vid.automation.test.infra.ModelInfo.macroSriovWithDynamicFieldsEcompNamingFalsePartialModelDetailsVnfEcompNamingFalse;
30 import static vid.automation.test.infra.ModelInfo.macroSriovWithDynamicFieldsEcompNamingTruePartialModelDetails;
31 import static vid.automation.test.infra.ModelInfo.pasqualeVmxVpeBvService488Annotations;
32 import static vid.automation.test.infra.ModelInfo.transportWithPnfsService;
33 import static vid.automation.test.services.SimulatorApi.RegistrationStrategy.APPEND;
34 import static vid.automation.test.services.SimulatorApi.registerExpectationFromPreset;
35 import static vid.automation.test.services.SimulatorApi.registerExpectationFromPresets;
36 import static vid.automation.test.test.ALaCarteflowTest.AIC;
38 import com.google.common.collect.ImmutableList;
39 import com.google.common.collect.ImmutableMap;
40 import com.google.common.collect.ImmutableSet;
41 import java.text.ParseException;
42 import java.text.SimpleDateFormat;
43 import java.util.ArrayList;
44 import java.util.Arrays;
45 import java.util.Collections;
46 import java.util.Date;
47 import java.util.HashMap;
48 import java.util.List;
51 import java.util.UUID;
52 import java.util.stream.Collectors;
53 import org.apache.commons.lang3.mutable.MutableInt;
54 import org.apache.logging.log4j.LogManager;
55 import org.apache.logging.log4j.Logger;
56 import org.hamcrest.Matchers;
57 import org.jetbrains.annotations.NotNull;
58 import org.onap.sdc.ci.tests.datatypes.UserCredentials;
59 import org.onap.sdc.ci.tests.utilities.GeneralUIUtils;
60 import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetL3NetworksByCloudRegionSpecificState;
61 import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetTenants;
62 import org.onap.simulator.presetGenerator.presets.aai.PresetAAIGetVpnsByType;
63 import org.onap.simulator.presetGenerator.presets.aai.PresetAAIPostNamedQueryForViewEdit;
64 import org.onap.simulator.presetGenerator.presets.mso.PresetMSOBaseCreateInstancePost;
65 import org.onap.simulator.presetGenerator.presets.mso.PresetMSOCreateNetworkALaCarte5G;
66 import org.onap.simulator.presetGenerator.presets.mso.PresetMSOCreateServiceInstanceAlacarte;
67 import org.onap.simulator.presetGenerator.presets.mso.PresetMSOCreateServiceInstanceGen2WithNamesAlacarteGroupingService;
68 import org.onap.simulator.presetGenerator.presets.mso.PresetMSOCreateServiceInstanceGen2WithNamesEcompNamingFalse;
69 import org.onap.simulator.presetGenerator.presets.mso.PresetMSOCreateVfModuleALaCarteE2E;
70 import org.onap.simulator.presetGenerator.presets.mso.PresetMSOCreateVnfALaCarteE2E;
71 import org.onap.simulator.presetGenerator.presets.mso.PresetMSOOrchestrationRequestGet;
72 import org.onap.simulator.presetGenerator.presets.mso.PresetMSOOrchestrationRequestsGet5GServiceInstanceAndNetwork;
73 import org.onap.simulator.presetGenerator.presets.mso.PresetMSOOrchestrationRequestsGet5GServiceInstanceAndNetwork.ResponseDetails;
74 import org.onap.simulator.presetGenerator.presets.mso.PresetMSOServiceInstanceGen2WithNames.Keys;
75 import org.onap.simulator.presetGenerator.presets.mso.PresetMsoCreateMacroCommonPre1806;
76 import org.openqa.selenium.By;
77 import org.openqa.selenium.WebElement;
78 import org.openqa.selenium.remote.RemoteWebElement;
79 import org.testng.Assert;
80 import org.testng.annotations.AfterClass;
81 import org.testng.annotations.BeforeClass;
82 import org.testng.annotations.BeforeMethod;
83 import org.testng.annotations.Test;
84 import vid.automation.test.Constants;
85 import vid.automation.test.Constants.BrowseASDC.NewServicePopup;
86 import vid.automation.test.infra.Click;
87 import vid.automation.test.infra.FeatureTogglingTest;
88 import vid.automation.test.infra.Features;
89 import vid.automation.test.infra.Get;
90 import vid.automation.test.infra.Input;
91 import vid.automation.test.infra.ModelInfo;
92 import vid.automation.test.infra.ModelInfoWithCustomization;
93 import vid.automation.test.infra.SelectOption;
94 import vid.automation.test.infra.Wait;
95 import vid.automation.test.model.Service;
96 import vid.automation.test.model.User;
97 import vid.automation.test.sections.BrowseASDCPage;
98 import vid.automation.test.sections.DrawingBoardPage;
99 import vid.automation.test.sections.InstantiationStatusPage;
100 import vid.automation.test.sections.SideMenu;
101 import vid.automation.test.sections.VidBasePage;
102 import vid.automation.test.services.AsyncJobsService;
103 import vid.automation.test.services.ServicesService;
104 import vid.automation.test.services.SimulatorApi;
105 import vid.automation.test.test.NewServiceInstanceTest.ServiceData.IS_GENERATED_NAMING;
106 import vid.automation.test.utils.ReadFile;
108 @FeatureTogglingTest(FLAG_ENABLE_WEBPACK_MODERN_UI)
109 public class NewServiceInstanceTest extends CreateInstanceDialogBaseTest {
111 public static final String COMPLETED = "COMPLETED";
112 private static final String IN_PROGRESS = "IN_PROGRESS";
113 private static final String PENDING = "PENDING";
114 private final String vfModule0Name = "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0";
115 private final String vfModule0UUID = "f8360508-3f17-4414-a2ed-6bc71161e8db";
116 private ServicesService servicesService = new ServicesService();
117 private DrawingBoardPage drawingBoardPage = new DrawingBoardPage();
118 List<String> serviceModelLabelList = Arrays.asList("Model version", "Description", "Category", "UUID",
119 "Invariant UUID", "Service type", "Service role");
120 List<String> mandatoryServiceModelLabelList = Arrays.asList("Model version", "UUID", "Invariant UUID");
121 private final VidBasePage vidBasePage = new VidBasePage();
122 public static final String VNF_SET_BUTTON_TEST_ID = "form-set";
123 private static final Logger logger = LogManager.getLogger(NewServiceInstanceTest.class);
126 protected void dropAllAsyncJobs() {
127 AsyncJobsService asyncJobsService = new AsyncJobsService();
128 asyncJobsService.dropAllAsyncJobs();
132 protected void muteAllAsyncJobs() {
133 AsyncJobsService asyncJobsService = new AsyncJobsService();
134 asyncJobsService.muteAllAsyncJobs();
138 protected void goToWelcome() {
139 SideMenu.navigateToWelcomePage();
143 protected UserCredentials getUserCredentials() {
144 String userName = Constants.Users.SILVIA_ROBBINS_TYLER_SILVIA;
145 User user = usersService.getUser(userName);
146 return new UserCredentials(user.credentials.userId, user.credentials.password, userName, "", "");
150 public void createNewServiceInstance_fullModelData_LeftPaneLabelsCorrect() throws Exception {
151 prepareServicePreset(macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetails, false);
152 loadServicePopup(macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetails);
153 assertServiceModelLabelsCorrect(serviceModelLabelList);
157 public void createNewServiceInstance_partialModelData_LeftPaneLabelsCorrect() throws Exception {
158 prepareServicePreset(macroSriovWithDynamicFieldsEcompNamingTruePartialModelDetails, false);
159 loadServicePopup(macroSriovWithDynamicFieldsEcompNamingTruePartialModelDetails);
160 assertServiceModelLabelsCorrect(mandatoryServiceModelLabelList);
164 public void createNewServiceInstance_setFieldValue_resetDependenciesListsAndValues() {
165 resetGetTenantsCache();
167 BrowseASDCPage browseASDCPage = new BrowseASDCPage();
168 prepareServicePreset(macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetails, false);
169 SimulatorApi.registerExpectation(Constants.RegisterToSimulator.CreateNewServiceInstance.GET_SUBSCRIBERS_FOR_CUSTOMER_CAR_2020_ER, SimulatorApi.RegistrationStrategy.APPEND);
170 registerExpectationFromPreset(
171 new PresetAAIGetTenants(
173 "MSO-dev-service-type",
174 "registration_to_simulator/create_new_instance/aai_get_tenants_for_customer_CAR_2020_ER.json"),
175 SimulatorApi.RegistrationStrategy.APPEND);
177 loadServicePopup(macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetails);
178 Wait.waitByClassAndText(Constants.CreateNewInstance.SUBSCRIBER_NAME_OPTION_CLASS, "SILVIA ROBBINS", 30);
179 VidBasePage.selectSubscriberById("e433710f-9217-458d-a79d-1c7aff376d89");
180 GeneralUIUtils.ultimateWait();
181 String serviceType = "TYLER SILVIA";
182 Wait.waitByClassAndText(Constants.CreateNewInstance.SERVICE_TYPE_OPTION_CLASS, serviceType, 30);
183 browseASDCPage.selectServiceTypeByName(serviceType);
184 String lcpRegion = "hvf6";
185 Wait.waitByClassAndText("lcpRegionOption", lcpRegion, 30);
186 viewEditPage.selectLcpRegion(lcpRegion, AIC);
187 browseASDCPage.selectTenant("bae71557c5bb4d5aac6743a4e5f1d054");
189 VidBasePage.selectSubscriberById("CAR_2020_ER");
190 assertElementDisabled("lcpRegion-select");
191 serviceType = "MSO-dev-service-type";
192 Wait.waitByClassAndText(Constants.CreateNewInstance.SERVICE_TYPE_OPTION_CLASS, serviceType, 30);
193 browseASDCPage.selectServiceTypeByName(serviceType);
194 lcpRegion = "CAR_2020_ER";
195 Wait.waitByClassAndText("lcpRegionOption", lcpRegion, 30);
196 viewEditPage.selectLcpRegion(lcpRegion, AIC);
197 browseASDCPage.selectTenant("092eb9e8e4b7412e8787dd091bc58e66");
199 resetGetTenantsCache();
204 * asserts that the provided labels list is visible and that no other detail item appears in the model details panel.
206 protected void assertServiceModelLabelsCorrect(List<String> serviceModelLabelList) throws Exception {
207 WebElement genericPopup = getDriver().findElement(By.tagName("generic-form-popup"));
208 WebElement modelInformation = genericPopup.findElement(By.id("model-information"));
209 List<WebElement> modelInformationItems = modelInformation.findElements(By.xpath("./div"));
210 assertEquals(modelInformationItems.size(), serviceModelLabelList.size());
211 serviceModelLabelList.forEach(label -> {
212 WebElement webElement = Get.byTestId("model-item-" + label);
213 WebElement itemWarpper = webElement.findElements(By.className("wrapper")).get(0);
214 assertEquals(itemWarpper.findElements(By.tagName("label")).get(0).getText(), label, "model details item label is incorrect.");
219 public void createNewServiceInstance_leftPane_serviceModelDataCorrect() {
220 Service service = servicesService.getService(macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetails.modelVersionId);
221 String prefix = NewServicePopup.SERVICE_MODEL_DATA_TEST_ID_VALUE_PREFIX;
222 prepareServicePreset(macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetails, false);
223 loadServicePopup(macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetails);
224 logger.info("Expected service model properties: "+service.toString());
225 assertModelDataCorrect(NewServicePopup.SERVICE_MODEL_FIELD_TO_DATA_TESTS_ID, prefix, service);
229 public void createNewServiceInstance_macro_validPopupDataAndUI__ecompNamingFalse() {
231 ServiceData serviceData = new ServiceData(
232 macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetails.modelVersionId,
234 IS_GENERATED_NAMING.FALSE, true, true, true,
235 "2017-488_PASQUALE-vPE 0",
236 "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vRE_BV..module-1",
237 0, 1, new ArrayList<>(), "25284168-24bb-4698-8cb4-3f509146eca5", false);
239 prepareServicePreset(macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetails, false);
241 final String serviceInstanceName = createMacroService(serviceData, true);
242 createVnf(serviceData, true, serviceInstanceName);
244 createVfModule(serviceData, serviceInstanceName, false, false);
248 @Test(groups = "underDevelopment")
249 public void createNewServiceInstance_macro_validPopupDataAndUI__dynamicFieldsEcompNamingFalse_DEV() {
251 Upon failure in test dynamicFieldsEcompNamingFalse_FLESH(), exception will provide
252 the needed data for this DEV method:
254 1. "Current step" when the failure occurred
255 2. "Random alphabetic" that was randomized while test
256 3. "Starting reduxState" that was on the step that failed.
258 These data can be used for, accordingly, 1. startInStep param; 2, randomAlphabetic
259 param; 3. reduxForStep param.
262 // It should be easier to put `reduxForStep` in this file, to avoid Java's code-clutter and json escaping.
263 final String reduxForStep = ReadFile.loadResourceAsString(
264 "NewServiceInstanceTest/createNewServiceInstance_macro_validPopupDataAndUI__dynamicFieldsEcompNamingFalse.json");
266 createNewServiceInstance_macro_validPopupDataAndUI__dynamicFieldsEcompNamingFalse_FLESH("DEV", 5, reduxForStep, "mCaNk");
270 public void createNewServiceInstance_macro_validPopupDataAndUI__dynamicFieldsEcompNamingFalse() {
271 createNewServiceInstance_macro_validPopupDataAndUI__dynamicFieldsEcompNamingFalse_FLESH("RUNTIME", 0, null, randomAlphabetic(5));
274 private void createNewServiceInstance_macro_validPopupDataAndUI__dynamicFieldsEcompNamingFalse_FLESH(String mode, int startInStep, String reduxForStep, String randomAlphabetic) {
276 MutableInt i = new MutableInt();
277 Map<String, String> reduxStates = new HashMap<>();
279 ServiceData serviceData = new ServiceData(
280 macroSriovWithDynamicFieldsEcompNamingFalsePartialModelDetailsVnfEcompNamingFalse.modelVersionId,
281 Collections.singletonList("2017488 pasqualevpe0 asn:"),
282 IS_GENERATED_NAMING.FALSE, false, true, false,
283 "2017-488_PASQUALE-vPE 0",
284 "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", 0, 1, ImmutableList.of("Bandwidth", "Bandwidth units"),
285 "25284168-24bb-4698-8cb4-3f509146eca5", false);
287 // this is the instance-name that createMacroService is going to use
288 String serviceInstanceName = randomAlphabetic + "instancename";
290 doReduxStep(reduxStates, randomAlphabetic, startInStep, reduxForStep, i, mode, () -> {
291 prepareServicePreset(macroSriovWithDynamicFieldsEcompNamingFalsePartialModelDetailsVnfEcompNamingFalse,
293 createMacroService(serviceData, false, randomAlphabetic, true, 3);
296 doReduxStep(reduxStates, randomAlphabetic, startInStep, reduxForStep, i, mode, () ->
297 createVnf(serviceData, false, serviceInstanceName)
300 final String vnfInstanceName2 = randomAlphabetic + "instanceName";
301 final String vnfName2 = "2017-388_PASQUALE-vPE";
303 doReduxStep(reduxStates, randomAlphabetic, startInStep, reduxForStep, i, mode, () ->
304 createVnf(new VnfData(vnfName2 + " 0", "afacccf6-397d-45d6-b5ae-94c39734b168", vnfInstanceName2, false),
305 false, serviceInstanceName)
308 doReduxStep(reduxStates, randomAlphabetic, startInStep, reduxForStep, i, mode, () ->
309 createVfModule(serviceData, serviceInstanceName, false, true)
312 doReduxStep(reduxStates, randomAlphabetic, startInStep, reduxForStep, i, mode, () -> {
314 editVfModuleAndJustSetName(vfModule0Name, vfModule0UUID);
315 duplicateVnf(serviceData.vnfData, 2);
316 vidBasePage.screenshotDeployDialog(serviceInstanceName);
319 doReduxStep(reduxStates, randomAlphabetic, startInStep, reduxForStep, i, mode, () -> {
320 prepareServicePreset(macroSriovWithDynamicFieldsEcompNamingFalsePartialModelDetailsVnfEcompNamingFalse,
323 final String vfModuleName1 = "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0";
324 final String vfModuleName2 = "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1";
325 final String request1 = PresetMSOBaseCreateInstancePost.DEFAULT_REQUEST_ID;
326 final String request2 = "ce010256-3fdd-4cb5-aed7-37112a2c6e93";
327 final ImmutableMap<Keys, String> vars = ImmutableMap.<Keys, String>builder()
328 .put(Keys.SERVICE_NAME, serviceInstanceName)
329 .put(Keys.VNF_NAME, cleanSeparators("2017-488_PASQUALE-vPE", serviceData.vnfData.vnfInstanceName))
330 .put(Keys.VFM_NAME1, cleanSeparators(vfModuleName1 , "VF instance name ZERO"))
331 .put(Keys.VFM_NAME2, cleanSeparators(vfModuleName2 , "VF instance name"))
332 .put(Keys.VG_NAME, cleanSeparators(vfModuleName2 , "VF instance name") + "_vol_abc")
333 .put(Keys.VNF_NAME2, cleanSeparators(vnfName2, vnfInstanceName2))
335 registerExpectationFromPresets(ImmutableList.of(
336 // although "some legacy region" is provided for vnf, Service's region "hvf6" overrides it
337 PRESET_MTN6_TO_ATT_AIC,
338 new PresetMSOCreateServiceInstanceGen2WithNamesEcompNamingFalse(vars, 0, request1),
339 new PresetMSOCreateServiceInstanceGen2WithNamesEcompNamingFalse(vars, 1, request2)
340 ), SimulatorApi.RegistrationStrategy.APPEND);
342 deployAndVerifyModuleInPendingTableMacro(serviceInstanceName, request1, request2);
343 verifyOpenAuditInfo(serviceInstanceName);
344 verifyOpenViewEdit(serviceInstanceName);
345 verifyDeleteJob(serviceInstanceName);
346 verifyHideJob(serviceInstanceName);
351 @FeatureTogglingTest(FLAG_1908_INFRASTRUCTURE_VPN)
352 public void createNewServiceInstance_infraStructureVpn() {
353 String requestId = uuid();
354 String instanceId = uuid();
356 prepareServicePreset(infrastructureVpnService, false);
358 SimulatorApi.registerExpectationFromPresets(ImmutableList.of(
359 PRESET_MTN6_TO_ATT_AIC,
360 new PresetAAIGetL3NetworksByCloudRegionSpecificState("irma-aic", "hvf6", "bae71557c5bb4d5aac6743a4e5f1d054"),
361 new PresetAAIGetVpnsByType()
364 ServiceData serviceData = new ServiceData(
365 infrastructureVpnService.modelVersionId,
367 IS_GENERATED_NAMING.TRUE_BUT_GIVE_NAME_EITHER_WAY, true, true, false,
369 null, 0, 1, new ArrayList<>(), null, false);
370 final String serviceInstanceName = createMacroService(serviceData, false);
372 SimulatorApi.registerExpectationFromPresets(ImmutableList.of(
373 PresetMsoCreateMacroCommonPre1806.ofServiceWithVRF(requestId, instanceId, serviceInstanceName),
374 new PresetMSOOrchestrationRequestGet(COMPLETE, requestId)
377 // Wizard pages of Network and VPN
378 Click.byTestIdOnceItsAvailable("10a74149-c9d7-4918-bbcf-d5fb9b1799ce", 20);
379 Click.byTestId("setMembersBtn");
380 GeneralUIUtils.ultimateWait();
382 Click.byTestIdOnceItsAvailable("120d39fb-3627-473d-913c-d228dd0f8e5b", 20);
383 Click.byTestId("setMembersBtn");
384 GeneralUIUtils.ultimateWait();
386 Assert.assertEquals(Get.byTestId("node-type-indicator").getText(),"VRF");
388 drawingBoardPage.deploy();
389 drawingBoardPage.verifyServiceCompletedOnTime(serviceInstanceName, "Service "+serviceInstanceName);
393 @FeatureTogglingTest(FLAG_1908_COLLECTION_RESOURCE_NEW_INSTANTIATION_UI)
394 public void createNewServiceInstance_collectionResource() {
395 prepareServicePreset(collectionResourceService, false);
396 String requestId = uuid();
397 String instanceId = uuid();
399 SimulatorApi.registerExpectationFromPresets(ImmutableList.of(
400 PRESET_MTN6_TO_ATT_AIC,
401 PresetMsoCreateMacroCommonPre1806.ofCollectionResource(requestId, instanceId),
402 new PresetMSOOrchestrationRequestGet(COMPLETE, requestId)
405 ServiceData serviceData = new ServiceData(
406 collectionResourceService.modelVersionId,
408 IS_GENERATED_NAMING.TRUE, true, true, false,
410 null, 0, 1, new ArrayList<>(), null, false);
411 createMacroService(serviceData, false, randomAlphabetic(5), true, 1);
413 drawingBoardPage.deploy();
414 drawingBoardPage.verifyServiceCompletedOnTime("CR_sanity", "service with collection resource");
418 @FeatureTogglingTest(FLAG_1908_TRANSPORT_SERVICE_NEW_INSTANTIATION_UI)
419 public void createNewServiceInstance_transportService() {
420 prepareServicePreset(transportWithPnfsService, false);
421 String requestId = uuid();
422 String instanceId = uuid();
424 SimulatorApi.registerExpectationFromPresets(ImmutableList.of(
425 PresetMsoCreateMacroCommonPre1806.ofTransportService(requestId, instanceId),
426 new PresetMSOOrchestrationRequestGet(COMPLETE, requestId)
429 ServiceData serviceData = new ServiceData(
430 transportWithPnfsService.modelVersionId,
432 IS_GENERATED_NAMING.TRUE, true, true, false,
434 null, 0, 1, new ArrayList<>(), null, false);
435 createMacroService(serviceData, false, randomAlphabetic(5), false, 1);
437 drawingBoardPage.deploy();
438 drawingBoardPage.verifyServiceCompletedOnTime("AIM Transport SVC_ym161f", "transport service");
442 @FeatureTogglingTest(FLAG_1902_VNF_GROUPING)
443 public void createNewServiceInstance_aLaCarte_VnfGrouping() {
445 String randomAlphabetic = randomAlphabetic(5);
447 ServiceData serviceData = new ServiceData(
448 aLaCarteVnfGroupingService.modelVersionId,
450 IS_GENERATED_NAMING.FALSE, false, true, false,
451 null, null, 0, 1, ImmutableList.of(), null, false);
452 prepareServicePreset(aLaCarteVnfGroupingService, false);
454 createALaCarteService(serviceData, randomAlphabetic);
456 // this is the instance-name that createALaCarteService is using
457 String serviceInstanceName = randomAlphabetic + "instancename";
459 final String requestId = PresetMSOBaseCreateInstancePost.DEFAULT_REQUEST_ID;
460 final String serviceInstanceId = "d2391436-8d55-4fde-b4d5-72dd2cf13cgh";
461 final ImmutableMap<Keys, String> names = ImmutableMap.<Keys, String>builder()
462 .put(Keys.SERVICE_NAME, serviceInstanceName)
464 SimulatorApi.registerExpectationFromPresets(ImmutableList.of(
465 new PresetMSOCreateServiceInstanceGen2WithNamesAlacarteGroupingService(names, 0, requestId, serviceInstanceId, "us16807000"),
466 new PresetAAIPostNamedQueryForViewEdit(serviceInstanceId, serviceInstanceName, false, false)
467 ), SimulatorApi.RegistrationStrategy.APPEND);
469 drawingBoardPage.deploy();
470 verifyModuleInPendingTable(serviceInstanceName, requestId, null, ImmutableSet.of(IN_PROGRESS), false, false);
471 verifyModuleInPendingTable(serviceInstanceName, requestId, null, ImmutableSet.of(COMPLETED), false, true);
472 InstantiationStatusPage.verifyOpenNewViewEdit(serviceInstanceName, serviceInstanceId, aLaCarteVnfGroupingService.modelVersionId, "TYLER SILVIA", "e433710f-9217-458d-a79d-1c7aff376d89", "EDIT");
475 public interface Invoker{
479 private void doReduxStep(Map<String, String> reduxStates, String randomAlphabetic, int startInStep, String reduxForStep, MutableInt currentStep, String mode, Invoker todo) {
483 if (currentStep.getValue() < startInStep) {
484 // skip up to startInStep
486 } else if (currentStep.getValue() == startInStep) {
488 vidBasePage.setReduxState(reduxForStep);
490 vidBasePage.navigateTo("serviceModels.htm#/servicePlanning?serviceModelId=6b528779-44a3-4472-bdff-9cd15ec93450");
491 vidBasePage.goToIframe();
494 reduxStates.put(String.valueOf(currentStep), vidBasePage.getReduxState());
499 // log current redux state, before invocation
500 reduxStates.put(String.valueOf(currentStep), vidBasePage.getReduxState());
501 logger.info("reduxGator runtime reduxState for step {}:\n{}", currentStep, vidBasePage.getReduxState());
507 } catch (AssertionError | Exception e) {
508 throw new AssertionError(String.join("\n",
509 "Current step: " + currentStep,
510 "Random alphabetic: " + randomAlphabetic,
511 "Starting reduxState: " + reduxStates.get(String.valueOf(currentStep)),
512 "Current reduxState: " + vidBasePage.getReduxState()
516 logger.info("Cumulative reduxState: {}", reduxStates);
517 currentStep.increment();
521 //@Step("duplicate vnf")
522 private void duplicateVnf(VnfData vnfData, int count) {
523 hoverAndClickDuplicateButton(extractNodeToEdit(vnfData));
524 vidBasePage.screenshotDeployDialog("duplicateVnf-" + vnfData.vnfName);
525 List<WebElement> options = ((RemoteWebElement)Get.byId("duplicate-select")).findElementsByTagName("option");
526 assertThat(options.stream().map(x -> x.getText()).collect(Collectors.toList()), Matchers.contains("1","2"));
527 SelectOption.byIdAndVisibleText("duplicate-select", String.valueOf(count));
528 Click.byClassAndVisibleText("sdc-button__primary", "DUPLICATE");
531 private String cleanSeparators(String... s) {
532 return String.join("", s).replace(" ", "");
535 //@Step("edit vf module and just set name")
536 private void editVfModuleAndJustSetName(String vfModuleName, String vfModuleUUID) {
537 hoverAndClickEditButton(vfModuleUUID + "-" + vfModuleName);
538 Input.text("VF instance name ZERO", "instanceName");
539 Click.byTestId(VNF_SET_BUTTON_TEST_ID);
543 public void createNewServiceInstance_macro_validPopupDataAndUI__ecompNamingServiceFalseVnfTrue_vgNameFalse() {
544 ServiceData serviceData = new ServiceData(
545 macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetails.modelVersionId,
547 IS_GENERATED_NAMING.FALSE, true, false, true,
548 "2017-488_PASQUALE-vPE 0",
549 vfModule0Name, 1, 1, new ArrayList<>(), vfModule0UUID, false);
551 prepareServicePreset(macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetails, false);
553 final String serviceInstanceName = createMacroService(serviceData, true);
554 createVnf(serviceData, true, serviceInstanceName);
555 createVfModule(serviceData, serviceInstanceName, true, false);
560 public void createNewServiceInstance_macro_validPopupDataAndUI__ecompNamingServiceFalseVnfFalse_vgNameFalse() {
561 ServiceData serviceData = new ServiceData(
562 macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetailsVnfEcompNamingFalse.modelVersionId,
564 IS_GENERATED_NAMING.FALSE, false, false, false,
565 "2017-488_PASQUALE-vPE 0",
566 vfModule0Name, 1, 1, new ArrayList<>(), vfModule0UUID, false);
568 prepareServicePreset(macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetailsVnfEcompNamingFalse, false);
570 final String serviceInstanceName = createMacroService(serviceData, true);
571 createVnf(serviceData, true, serviceInstanceName);
572 createVfModule(serviceData, serviceInstanceName, true, false);
577 public void createNewServiceInstance_macro_validPopupDataAndUI__ecompNamingServiceFalseVnfFalse_vgNameTrue() throws Exception {
578 ServiceData serviceData = new ServiceData(
579 macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetailsVnfEcompNamingFalse.modelVersionId,
581 IS_GENERATED_NAMING.FALSE, false, true, false,
582 "2017-488_PASQUALE-vPE 0",
583 "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", 0, 1, new ArrayList<>(), "25284168-24bb-4698-8cb4-3f509146eca5", false);
585 prepareServicePreset(macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetailsVnfEcompNamingFalse, false);
587 final String serviceInstanceName = createMacroService(serviceData, true);
588 createVnf(serviceData, true, serviceInstanceName);
589 clickRemoveVfModule(vfModule0UUID, vfModule0Name);
590 createVfModule(serviceData, serviceInstanceName, false, true);
595 @FeatureTogglingTest(FLAG_2002_ANY_ALACARTE_BESIDES_EXCLUDED_NEW_INSTANTIATION_UI)
596 public void createNewServiceInstance_aLaCarte_WithVnf() {
597 final ModelInfo serviceModelInfo = ModelInfo.aLaCarteServiceCreationNewUI;
598 String serviceInstanceName = "ALaCarteWithVnf"+randomAlphabetic(5);
599 String vnfInstanceName= "VnfForALaCarte"+randomAlphabetic(5);
600 VnfData vnfData = new VnfData("vOCG_1804_VF 0", "aca3f7b1-15f9-45a5-b182-b8b5aca84a76", vnfInstanceName, true);
601 VfData vfmData = new VfData("vocg_1804_vf0..Vocg1804Vf..base_ocg..module-0", false, 1, 1, emptyList(), "815db6e5-bdfd-4cb6-9575-82c36df8747a", null);
602 ServiceData serviceData = new ServiceData(IS_GENERATED_NAMING.TRUE, vnfData, vfmData, true);
604 resetGetServicesCache();
606 prepareServicePreset(serviceModelInfo, true);
608 String requestorID = getUserCredentials().getUserId();
610 String serviceRequestId = uuid();
611 String serviceInstanceId = uuid();
612 String vnfRequestId = uuid();
613 String vnfInstanceId = uuid();
614 String vfm0RequestId = uuid();
615 String vfm0InstanceId = uuid();
616 String vg1RequestId = uuid();
617 String vg1InstanceId = uuid();
618 String vfm1RequestId = uuid();
619 String vfm1InstanceId = uuid();
620 String vfm12RequestId = uuid();
621 String vfm12InstanceId = uuid();
623 ModelInfoWithCustomization vfm0 = new ModelInfoWithCustomization(
624 "815db6e5-bdfd-4cb6-9575-82c36df8747a",
625 "e9c795c8-6b98-4db3-bd90-a84b8ca5181b",
626 "Vocg1804Vf..base_ocg..module-0",
629 "Vocg1804Vf..base_ocg..module-0",
630 "a7b333d7-7633-4197-b40d-80fcfcadee94");
632 ModelInfoWithCustomization vg1 = new ModelInfoWithCustomization(
633 "9c219e70-1177-494b-8977-1395c9f9168c",
634 "0ad14d60-98b6-4575-a9b8-458a796c3f98",
635 "Vocg1804Vf..ocgmgr..module-1",
638 "Vocg1804Vf..ocgmgr..module-1",
639 "f332f3ce-434d-4084-a1e7-5261c16d4940"
642 ModelInfoWithCustomization vfm1 = new ModelInfoWithCustomization(
643 "9c219e70-1177-494b-8977-1395c9f9168c",
644 "0ad14d60-98b6-4575-a9b8-458a796c3f98",
645 "Vocg1804Vf..ocgmgr..module-1",
648 "Vocg1804Vf..ocgmgr..module-1",
649 "f332f3ce-434d-4084-a1e7-5261c16d4940"
652 ModelInfoWithCustomization vfm12 = new ModelInfoWithCustomization(
653 "b601eef4-62fd-4201-a788-ae30e06a1aec",
654 "e3cb8b85-7a3c-4897-b20b-70640c26d671",
655 "Vocg1804Vf..ocgapp_001..module-12",
658 "Vocg1804Vf..ocgapp_001..module-12",
659 "fcc82961-865e-4d38-9c7a-207c511405b6"
662 final String vgName = "vg_for_module1";
664 String vgRelatedInstance = ",{\"relatedInstance\": {"
665 + " \"modelInfo\": {"
666 + " \"modelType\": \"volumeGroup\""
668 + " \"instanceId\": \""+vg1InstanceId+"\","
669 + " \"instanceName\": \""+vgName+"\""
673 registerExpectationFromPresets(
675 new PresetMSOCreateServiceInstanceAlacarte(
676 ImmutableMap.of(Keys.SERVICE_NAME, serviceInstanceName),
677 serviceRequestId, serviceInstanceId,
678 requestorID, serviceModelInfo),
679 PRESET_SOME_LEGACY_REGION_TO_ATT_AIC,
680 new PresetMSOOrchestrationRequestGet(COMPLETE, serviceRequestId),
681 new PresetMSOCreateVnfALaCarteE2E(vnfRequestId, serviceInstanceId, vnfInstanceId, "ONAP", requestorID, serviceModelInfo),
682 new PresetMSOOrchestrationRequestGet(COMPLETE, vnfRequestId),
683 PRESET_MTN6_TO_ATT_AIC,
684 new PresetMSOCreateVfModuleALaCarteE2E(vfm0RequestId, vfm0InstanceId, serviceInstanceId, vnfInstanceId, requestorID, serviceModelInfo, null, vfm0, null),
685 new PresetMSOOrchestrationRequestGet(COMPLETE, vfm0RequestId),
686 new PresetMSOCreateVfModuleALaCarteE2E(vg1RequestId, vg1InstanceId, serviceInstanceId, vnfInstanceId, requestorID, serviceModelInfo, vgName, vg1, null),
687 new PresetMSOOrchestrationRequestGet(COMPLETE, vg1RequestId),
688 new PresetMSOCreateVfModuleALaCarteE2E(vfm1RequestId, vfm1InstanceId, serviceInstanceId, vnfInstanceId, requestorID, serviceModelInfo, null, vfm1, vgRelatedInstance),
689 new PresetMSOOrchestrationRequestGet(COMPLETE, vfm1RequestId),
690 new PresetMSOCreateVfModuleALaCarteE2E(vfm12RequestId, vfm12InstanceId, serviceInstanceId, vnfInstanceId, requestorID, serviceModelInfo, null, vfm12, null),
691 new PresetMSOOrchestrationRequestGet(COMPLETE, vfm12RequestId)
696 loadServicePopup(serviceModelInfo.modelVersionId);
697 fillALaCarteServicePopup(serviceInstanceName);
699 createVnf(vnfData, false, serviceInstanceName);
700 createVfModule(serviceData, serviceInstanceName, true, false);
701 serviceData.vfData = new VfData("vocg_1804_vf0..Vocg1804Vf..ocgmgr..module-1", true, 0, 1, emptyList(), "9c219e70-1177-494b-8977-1395c9f9168c", vgName);
702 createVfModule(serviceData, serviceInstanceName, false, false);
703 serviceData.vfData = new VfData("vocg_1804_vf0..Vocg1804Vf..ocgapp_001..module-12", true, 0, 1, emptyList(), "b601eef4-62fd-4201-a788-ae30e06a1aec", null);
704 createVfModule(serviceData, serviceInstanceName, false, false);
705 drawingBoardPage.deploy();
706 drawingBoardPage.verifyServiceCompletedOnTime(serviceInstanceName, "service "+serviceInstanceName);
710 @FeatureTogglingTest(FLAG_5G_IN_NEW_INSTANTIATION_UI)
711 public void createNewServiceInstance_aLaCarte_withNetwork_validPopupDataAndUI() {
712 String serviceInstanceName = "NcService"+randomAlphabetic(5);
713 String networkInstanceName= "NcNetowrk"+randomAlphabetic(5);
714 String defactoNetworkInstanceName = "ExtVL"+networkInstanceName;
716 prepareServicePreset(aLaCarteNetworkProvider5G, true);
717 String serviceRequestId = uuid();
718 String networkRequestId = uuid();
719 String requestorID = getUserCredentials().getUserId();
720 registerExpectationFromPresets(
722 new PresetMSOCreateServiceInstanceAlacarte(
723 ImmutableMap.of(Keys.SERVICE_NAME, serviceInstanceName),
724 serviceRequestId, DEFAULT_SERVICE_INSTANCE_ID,
725 requestorID, aLaCarteNetworkProvider5G),
726 new PresetMSOOrchestrationRequestGet(COMPLETE, serviceRequestId),
727 PRESET_SOME_LEGACY_REGION_TO_ATT_AIC,
728 new PresetMSOCreateNetworkALaCarte5G(networkRequestId, DEFAULT_SERVICE_INSTANCE_ID, defactoNetworkInstanceName, requestorID),
729 new PresetMSOOrchestrationRequestGet(COMPLETE, networkRequestId),
730 new PresetMSOOrchestrationRequestsGet5GServiceInstanceAndNetwork(
731 new ResponseDetails(serviceInstanceName, serviceRequestId, COMPLETE, "service"),
732 new ResponseDetails(defactoNetworkInstanceName, networkRequestId, COMPLETE, "network"),
733 DEFAULT_SERVICE_INSTANCE_ID)
737 loadServicePopup(aLaCarteNetworkProvider5G.modelVersionId);
738 fillALaCarteServicePopup(serviceInstanceName);
739 VnfData networkData = new VnfData("SR-IOV Provider-1", "840ffc47-e4cf-46de-8e23-525fd8c6fdc3", defactoNetworkInstanceName, false);
740 createNetwork(networkData, false, false, serviceInstanceName);
742 drawingBoardPage.deploy();
743 drawingBoardPage.verifyServiceCompletedOnTime(serviceInstanceName, "service "+serviceInstanceName);
746 private void fillALaCarteServicePopup(String serviceInstanceName) {
747 BrowseASDCPage browseASDCPage = new BrowseASDCPage();
748 WebElement instanceNameInput = Get.byId("instanceName");
749 instanceNameInput.sendKeys(serviceInstanceName);
750 VidBasePage.selectSubscriberById("e433710f-9217-458d-a79d-1c7aff376d89");
751 String serviceType = "TYLER SILVIA";
752 Wait.waitByClassAndText(Constants.CreateNewInstance.SERVICE_TYPE_OPTION_CLASS, serviceType, 30);
753 browseASDCPage.selectServiceTypeByName(serviceType);
754 SelectOption.byTestIdAndVisibleText("WayneHolland", (Constants.OwningEntity.OWNING_ENTITY_SELECT_TEST_ID));
755 SelectOption.byTestIdAndVisibleText("WATKINS", Constants.OwningEntity.PROJECT_SELECT_TEST_ID);
756 Click.byTestId("form-set");
757 VidBasePage.goOutFromIframe();
758 browseASDCPage.goToIframe();
762 public void createNewServiceInstance_macro_validPopupDataAndUI() {
764 List<String> serviceDynamicFields = Arrays.asList("2017488 pasqualevpe0 asn:");
765 ServiceData serviceData = new ServiceData(
766 macroSriovWithDynamicFieldsEcompNamingTruePartialModelDetails.modelVersionId,
767 serviceDynamicFields,
768 IS_GENERATED_NAMING.TRUE, true, true, false,
769 "2017-488_PASQUALE-vPE 0",
770 "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", 0, 1, new ArrayList<>(), "25284168-24bb-4698-8cb4-3f509146eca5", false);
772 prepareServicePreset(macroSriovWithDynamicFieldsEcompNamingTruePartialModelDetails, false);
774 final String serviceInstanceName = createMacroService(serviceData, true);
775 createVnf(serviceData, true, serviceInstanceName);
776 clickRemoveVfModule(vfModule0UUID, vfModule0Name);
777 createVfModule(serviceData, serviceInstanceName, false, false);
781 //@Step("deploy and verify module in pending table")
782 private void deployAndVerifyModuleInPendingTableMacro(String serviceInstanceName, String requestId1, String requestId2) {
783 drawingBoardPage.deploy();
785 boolean simulatorUpdated = false;
787 int[] ids = {0, 0, 1, 2};
788 String[] statuses = {IN_PROGRESS, COMPLETED, IN_PROGRESS, PENDING};
789 for (int i = 0; i < ids.length; i++) {
790 String actualInstanceName = getActualInstanceName(serviceInstanceName, ids[i]);
791 verifyModuleInPendingTable(actualInstanceName, requestId1, requestId2, ImmutableSet.of(statuses[i]), true, simulatorUpdated);
792 simulatorUpdated = true;
794 vidBasePage.screenshotDeployDialog(serviceInstanceName);
797 private void verifyModuleInPendingTable(String serviceInstanceName, String requestId1, String requestId2, Set<String> expectedStatuses, boolean isMacro, boolean simulatorUpdated) {
798 DrawingBoardPage.ServiceStatusChecker serviceStatusChecker = new DrawingBoardPage.ServiceStatusChecker(serviceInstanceName, expectedStatuses);
799 boolean statusIsShown = Wait.waitFor(serviceStatusChecker, null, 20, 2);
800 final String assertionMessage = String.format("service %s: none of rowClasses [%s] is in expectedStatuses: [%s] ",
802 String.join(",", serviceStatusChecker.getColumnClassesSet()),
803 String.join(",", expectedStatuses));
805 assertTrue(assertionMessage, statusIsShown);
808 InstantiationStatusPage.assertInstantiationStatusRow(
809 serviceInstanceName, expectedRowFields(serviceInstanceName));
811 InstantiationStatusPage.assertInstantiationStatusRow(
812 serviceInstanceName, expectedALaCarteRowFields(serviceInstanceName));
815 if (!simulatorUpdated) {
816 if (requestId2 != null) {
817 registerExpectationFromPreset(new PresetMSOOrchestrationRequestGet(IN_PROGRESS, requestId2), APPEND);
819 registerExpectationFromPreset(new PresetMSOOrchestrationRequestGet("COMPLETE", requestId1), APPEND);
821 vidBasePage.screenshotDeployDialog(serviceInstanceName);
824 private String getActualInstanceName(String serviceInstanceName, Integer i) {
825 return i==0 ? serviceInstanceName : serviceInstanceName + "_00" + i;
828 //@Step("verify open view edit")
829 private void verifyOpenViewEdit(String serviceInstanceName) {
830 boolean[] openEnabled = {true, false, false};
831 ImmutableList.of(0, 1, 2).forEach(i -> {
832 String actualInstanceName = getActualInstanceName(serviceInstanceName, i);
833 if (Features.FLAG_1902_NEW_VIEW_EDIT.isActive() || FLAG_1908_MACRO_NOT_TRANSPORT_NEW_VIEW_EDIT.isActive()) {
834 InstantiationStatusPage.verifyOpenNewViewEdit(actualInstanceName, openEnabled[i], "EDIT");
837 vidBasePage.verifyOpenOldViewEdit(actualInstanceName, null, openEnabled[i], true, true);
842 //@Step("verify open audit info")
843 private void verifyOpenAuditInfo(String serviceInstanceName) {
844 boolean auditInfoEnabled = true;
845 String[] statuses = {COMPLETED, IN_PROGRESS, PENDING};
846 for (Integer i : ImmutableList.of(0, 1, 2)) {
847 String actualInstanceName = getActualInstanceName(serviceInstanceName, i);
848 InstantiationStatusPage.checkMenuItem(actualInstanceName, Constants.InstantiationStatus.CONTEXT_MENU_HEADER_AUDIT_INFO_ITEM, auditInfoEnabled, contextMenuOpen -> {
849 Click.byTestId(contextMenuOpen);
850 checkAuditInfoModal(actualInstanceName, i, statuses);
852 final WebElement row = InstantiationStatusPage.getInstantiationStatusRow(actualInstanceName);
853 row.findElement(By.id(Constants.InstantiationStatus.TD_JOB_STATUS_ICON + "-" + (i))).click();
854 checkAuditInfoModal(actualInstanceName, i, statuses);
858 private void checkAuditInfoModal(String actualInstanceName, Integer i, String[] statuses) {
860 Wait.waitByTestId("vidJobStatus", 10);
862 WebElement webElement = Get.byTestId("model-item-value-serviceInstanceName");
863 assertEquals(webElement.getText(), actualInstanceName, "Service Instance Name must be equal");
865 WebElement vidTableElement = Get.byId("service-instantiation-audit-info-vid");
866 assertEquals(3, vidTableElement.findElement(By.tagName("thead")).findElements(By.tagName("th")).size(), "VID table must contain 3 columns");
868 List<WebElement> vidStatusesElements = vidTableElement.findElements(By.id("vidJobStatus"));
869 List<String> vidStatuses = vidStatusesElements.stream()
871 convertUITextCapitalizeAndFormatPipe(s.getText()))
872 .collect(Collectors.toList());
874 List<String> serviceStatus = Arrays.asList(Arrays.copyOfRange(statuses, i, statuses.length));
875 assertThat("statuses for " + actualInstanceName + " must be as expected", vidStatuses, containsInAnyOrder(serviceStatus.toArray()));
876 String dateString = vidTableElement.findElements(By.id("vidStatusTime")).get(0).getText();
877 assertTrue("vid Status Time column must contains valid date in format : MMM dd, yyyy HH:mm", isDateValid(dateString, "MMM dd, yyyy HH:mm"));
879 WebElement MSOTableElement = Get.byId("service-instantiation-audit-info-mso");
880 assertEquals(3, MSOTableElement.findElement(By.tagName("thead")).findElements(By.tagName("th")).size(), "MSO table must contain 3 columns");
882 if (statuses[i].equals(PENDING)) {
883 assertEquals(0, MSOTableElement.findElement(By.tagName("tbody")).findElements(By.tagName("tr")).size(), "When status is PENDING MSO table is empty");
886 vidBasePage.screenshotDeployDialog("audit-info-" + actualInstanceName);
887 Click.byId(Constants.AuditInfoModal.CANCEL_BUTTON);
890 private String convertUITextCapitalizeAndFormatPipe(String text) {
891 return text.toUpperCase().replace("-", "_");
894 private boolean isDateValid(String dateToValidate, String dateFromat) {
896 if (dateToValidate == null) {
899 SimpleDateFormat sdf = new SimpleDateFormat(dateFromat);
900 sdf.setLenient(false);
902 //if not valid, it will throw ParseException
903 Date date = sdf.parse(dateToValidate);
905 } catch (ParseException e) {
912 //@Step("verifyDeleteJob")
913 private void verifyDeleteJob(String serviceInstanceName) {
914 boolean[] deleteEnabled = {false, false, true};
915 String[] statuses = {COMPLETED, IN_PROGRESS, PENDING};
916 verifyDeleteOrHideOperation(serviceInstanceName, Constants.InstantiationStatus.CONTEXT_MENU_REMOVE, statuses, deleteEnabled, "deleted");
919 //@Step("verify hide job")
920 private void verifyHideJob(String serviceInstanceName) {
921 boolean[] hideEnabled = {true, false};
922 String[] statuses = {COMPLETED, IN_PROGRESS};
923 verifyDeleteOrHideOperation(serviceInstanceName, Constants.InstantiationStatus.CONTEXT_MENU_HIDE, statuses, hideEnabled, "hidden");
926 private void verifyDeleteOrHideOperation(String serviceInstanceName, String contextMenuItem, String[] statuses, boolean[] operationEnabled, String operationName) {
927 for (int i = 0; i < statuses.length; i++) {
928 String actualInstanceName = getActualInstanceName(serviceInstanceName, i);
929 InstantiationStatusPage.checkMenuItem(actualInstanceName, contextMenuItem, operationEnabled[i], contextMenuDelete -> {
930 Click.byTestId(contextMenuDelete);
931 GeneralUIUtils.ultimateWait();
932 assertNull(actualInstanceName + " should be " + operationName,
933 InstantiationStatusPage.getInstantiationStatusRow(actualInstanceName));
936 vidBasePage.screenshotDeployDialog(serviceInstanceName);
939 private ImmutableMap<String, String> expectedRowFields(String actualInstanceName) {
940 return ImmutableMap.<String, String>builder()
941 .put("userId", getUserCredentials().getUserId())
942 .put("serviceModelName", "action-data")
943 .put("serviceInstanceName", actualInstanceName)
944 .put("serviceModelVersion", "1.0")
945 .put("subscriberName", "SILVIA ROBBINS")
946 .put("serviceType", "TYLER SILVIA")
947 .put("regionId", "hvf6")
948 .put("tenantName", "AIN Web Tool-15-D-testalexandria")
949 .put("aicZoneName", "NFTJSSSS-NFT1")
950 .put("project", "WATKINS")
951 .put("owningEntityName", "WayneHolland")
952 .put("pause", "false")
956 private ImmutableMap<String, String> expectedALaCarteRowFields(String actualInstanceName) {
957 return ImmutableMap.<String, String>builder()
958 .put("userId", getUserCredentials().getUserId())
959 .put("serviceModelName", "Grouping Service for Test")
960 .put("serviceInstanceName", actualInstanceName)
961 .put("serviceModelVersion", "1.0")
962 .put("subscriberName", "SILVIA ROBBINS")
963 .put("serviceType", "TYLER SILVIA")
964 .put("project", "WATKINS")
965 .put("owningEntityName", "WayneHolland")
966 .put("pause", "false")
970 //@Step("create sriov service")
971 private String createMacroService(ServiceData serviceData, boolean tryCancelsAndReentries) {
972 return createMacroService(serviceData, tryCancelsAndReentries, randomAlphabetic(5), true, 3);
975 //@Step("create sriov service")
976 private String createMacroService(ServiceData serviceData, boolean tryCancelsAndReentries, String randomAlphabetic, boolean fillLcpRegionAndTenantAndZone, int bulkSize) {
977 BrowseASDCPage browseASDCPage = new BrowseASDCPage();
978 User user = usersService.getUser(Constants.Users.SILVIA_ROBBINS_TYLER_SILVIA);
980 // simulate typing with spaces, but expected is without spaces
981 String serviceInstanceNameWithSpaces = randomAlphabetic + " instance name";
982 String serviceInstanceName = cleanSeparators(serviceInstanceNameWithSpaces);
984 List<String> cycles = tryCancelsAndReentries ? ImmutableList.of("WILL_CANCEL", "AFTER_CANCEL") : ImmutableList.of("SINGLE_SHOT");
985 cycles.forEach(cycle -> {
986 if ("AFTER_CANCEL".equals(cycle)) {
987 loadServicePopupOnBrowseASDCPage(serviceData.modelUuid);
989 loadServicePopup(serviceData.modelUuid);
992 WebElement instanceName = Get.byId("instanceName");
993 boolean isRequired = isElementByIdRequired("instanceName-label");
994 if (serviceData.isGeneratedNaming == IS_GENERATED_NAMING.TRUE || serviceData.isGeneratedNaming == IS_GENERATED_NAMING.TRUE_BUT_GIVE_NAME_EITHER_WAY) {
995 Assert.assertNotNull(instanceName, "instance name input should be visible when serviceEcompNaming == true.");
996 Assert.assertFalse(isRequired,"instance name input should be optional when ecompNaming == true.");
998 Assert.assertTrue(isRequired,"instance name input should be required when serviceEcompNaming == false.");
1001 if (serviceData.isGeneratedNaming == IS_GENERATED_NAMING.FALSE || serviceData.isGeneratedNaming == IS_GENERATED_NAMING.TRUE_BUT_GIVE_NAME_EITHER_WAY) {
1002 instanceName.sendKeys(serviceInstanceName);
1004 String setButtonTestId = "form-set";
1006 //serviceType should be dependent on subscriber selection
1007 assertElementDisabled("serviceType-select");
1008 Wait.waitByClassAndText(Constants.CreateNewInstance.SUBSCRIBER_NAME_OPTION_CLASS, "SILVIA ROBBINS", 30);
1009 GeneralUIUtils.ultimateWait();
1010 Click.byTestId(Constants.SUBSCRIBER_NAME_SELECT_TESTS_ID);
1011 if (Features.FLAG_RESTRICTED_SELECT.isActive())
1012 assertElementExistAccordingTagNameAndTestId("select", Constants.SUBSCRIBER_SELECT_ID);
1014 assertDropdownPermittedItemsByLabel(user.subscriberNames, Constants.CreateNewInstance.SUBSCRIBER_NAME_OPTION_CLASS);
1017 VidBasePage.selectSubscriberById("e433710f-9217-458d-a79d-1c7aff376d89");
1018 //lcpRegion should be dependent on serviceType selection
1019 assertElementDisabled("lcpRegion-select");
1021 String serviceType = "TYLER SILVIA";
1022 Wait.waitByClassAndText(Constants.CreateNewInstance.SERVICE_TYPE_OPTION_CLASS, serviceType, 30);
1023 browseASDCPage.selectServiceTypeByName(serviceType);
1025 String owningEntity = "WayneHolland";
1026 GeneralUIUtils.ultimateWait();
1027 Wait.waitByClassAndText(Constants.CreateNewInstance.OWNING_ENTITY_OPTION, owningEntity, 30);
1028 SelectOption.byTestIdAndVisibleText(owningEntity, (Constants.OwningEntity.OWNING_ENTITY_SELECT_TEST_ID));
1029 assertSetButtonDisabled(setButtonTestId);
1031 SelectOption.byTestIdAndVisibleText("ERICA", Constants.ViewEdit.PRODUCT_FAMILY_SELECT_TESTS_ID);
1032 browseASDCPage.selectProductFamily("e433710f-9217-458d-a79d-1c7aff376d89");
1034 if (fillLcpRegionAndTenantAndZone) {
1036 //we assume that if fillLcpRegionAndTenantAndZone is true tenant and lcpRegion are required for this service model
1037 //If you want to fill lcpRegionAndTenant where they are optional you can refactor this test...
1038 assertSetButtonDisabled(setButtonTestId);
1040 //tenant should be dependent on lcpRegion selection
1041 assertElementDisabled("tenant-select");
1043 String lcpRegion = "hvf6";
1044 Wait.waitByClassAndText("lcpRegionOption", lcpRegion, 30);
1045 viewEditPage.selectLcpRegion(lcpRegion, AIC);
1047 GeneralUIUtils.ultimateWait();
1048 browseASDCPage.selectTenant("bae71557c5bb4d5aac6743a4e5f1d054");
1050 browseASDCPage.selectAicZone("NFT1");
1053 assertSetButtonEnabled(setButtonTestId);
1056 SelectOption.byTestIdAndVisibleText("WATKINS", Constants.OwningEntity.PROJECT_SELECT_TEST_ID);
1058 assertNotificationAreaVisibilityBehaviourAndSetBulkSize(bulkSize);
1061 assertPauseOnPausePointsVisibility(serviceData.multiStageDesign);
1063 validateDynamicFields(serviceData.dynamicFields);
1065 vidBasePage.screenshotDeployDialog("createMacroService-" + serviceInstanceName);
1067 if ("WILL_CANCEL".equals(cycle)) {
1068 Click.byTestId(Constants.CANCEL_BUTTON_TEST_ID);
1070 Click.byTestId(setButtonTestId);
1073 VidBasePage.goOutFromIframe();
1075 browseASDCPage.goToIframe();
1078 return serviceInstanceName;
1081 private String createALaCarteService(ServiceData serviceData, String randomAlphabetic) {
1082 BrowseASDCPage browseASDCPage = new BrowseASDCPage();
1083 User user = usersService.getUser(Constants.Users.SILVIA_ROBBINS_TYLER_SILVIA);
1085 // simulate typing with spaces, but expected is without spaces
1086 String serviceInstanceNameWithSpaces = randomAlphabetic + " instance name";
1087 String serviceInstanceName = cleanSeparators(serviceInstanceNameWithSpaces);
1089 loadServicePopup(serviceData.modelUuid);
1091 WebElement instanceName = Get.byId("instanceName");
1092 if (serviceData.isGeneratedNaming == IS_GENERATED_NAMING.TRUE || serviceData.isGeneratedNaming == IS_GENERATED_NAMING.TRUE_BUT_GIVE_NAME_EITHER_WAY) {
1093 Assert.assertNull(instanceName, "instance name input should be invisible when serviceEcompNaming == true.");
1095 if (serviceData.isGeneratedNaming == IS_GENERATED_NAMING.FALSE || serviceData.isGeneratedNaming == IS_GENERATED_NAMING.TRUE_BUT_GIVE_NAME_EITHER_WAY) {
1096 instanceName.sendKeys(serviceInstanceName);
1099 //serviceType should be dependent on subscriber selection
1100 assertElementDisabled("serviceType-select");
1101 Wait.waitByClassAndText(Constants.CreateNewInstance.SUBSCRIBER_NAME_OPTION_CLASS, "SILVIA ROBBINS", 30);
1102 GeneralUIUtils.ultimateWait();
1103 Click.byTestId(Constants.SUBSCRIBER_NAME_SELECT_TESTS_ID);
1104 if (Features.FLAG_RESTRICTED_SELECT.isActive())
1105 assertElementExistAccordingTagNameAndTestId("select", Constants.SUBSCRIBER_SELECT_ID);
1107 assertDropdownPermittedItemsByLabel(user.subscriberNames, Constants.CreateNewInstance.SUBSCRIBER_NAME_OPTION_CLASS);
1110 VidBasePage.selectSubscriberById("e433710f-9217-458d-a79d-1c7aff376d89");
1112 String serviceType = "TYLER SILVIA";
1113 Wait.waitByClassAndText(Constants.CreateNewInstance.SERVICE_TYPE_OPTION_CLASS, serviceType, 30);
1114 browseASDCPage.selectServiceTypeByName(serviceType);
1116 String setButtonTestId = "form-set";
1117 assertSetButtonDisabled(setButtonTestId);
1119 SelectOption.byTestIdAndVisibleText("WayneHolland", (Constants.OwningEntity.OWNING_ENTITY_SELECT_TEST_ID));
1121 SelectOption.byTestIdAndVisibleText("WATKINS", Constants.OwningEntity.PROJECT_SELECT_TEST_ID);
1123 validateDynamicFields(serviceData.dynamicFields);
1125 vidBasePage.screenshotDeployDialog("createALaCarteService-" + serviceInstanceName);
1127 Click.byTestId(setButtonTestId);
1129 VidBasePage.goOutFromIframe();
1131 browseASDCPage.goToIframe();
1133 return serviceInstanceName;
1136 private void assertElementExistAccordingTagNameAndTestId(String tag, String testId) {
1137 WebElement webElement = Get.byId(testId);
1138 Assert.assertEquals(webElement.getTagName(), tag);
1141 //@Step("create vnf")
1142 private void createVnf(ServiceData serviceData, boolean tryCancelsAndReentries, String serviceInstanceName) {
1143 createVnf(serviceData.vnfData, tryCancelsAndReentries, serviceInstanceName);
1146 private void createNetwork(VnfData vnfData, boolean tryCancelsAndReentries, boolean addedByDefault, String serviceInstanceName) {
1147 createVnf(vnfData, tryCancelsAndReentries, addedByDefault, serviceInstanceName, true);
1150 private void createVnf(VnfData vnfData, boolean tryCancelsAndReentries, String serviceInstanceName) {
1151 createVnf(vnfData, tryCancelsAndReentries, true, serviceInstanceName, false);
1154 private void createVnf(VnfData vnfData, boolean tryCancelsAndReentries, boolean addedByDefault, String serviceInstanceName, boolean isNetwork) {
1155 BrowseASDCPage browseASDCPage = new BrowseASDCPage();
1157 String nodeToEdit = extractNodeToEdit(vnfData);
1158 if (addedByDefault) {
1159 hoverAndClickEditButton(nodeToEdit);
1161 drawingBoardPage.clickAddButtonByNodeName(vnfData.vnfName);
1164 GeneralUIUtils.ultimateWait();
1166 if (vnfData.isGeneratedNaming) {
1167 Assert.assertFalse(isElementByIdRequired("instanceName-label") ,"instance name input should be optional when EcompNaming == true, and required when false.");
1169 Input.text(vnfData.vnfInstanceName, "instanceName");
1173 //tenant should be dependent on lcpRegion selection
1174 assertElementDisabled("tenant-select");
1176 WebElement legacyRegion = Get.byTestId("lcpRegionText");
1177 Assert.assertNull(legacyRegion, "legacy region shouldn't be visible when lcp region isn't AAIAIC25,olson3 or olson5a.");
1179 browseASDCPage.selectLcpRegion("AAIAIC25");
1181 legacyRegion = Get.byTestId("lcpRegionText");
1182 Assert.assertNotNull(legacyRegion, "legacy region should be visible when lcp region is AAIAIC25,olson3 or olson5a.");
1184 browseASDCPage.selectTenant("092eb9e8e4b7412e8787dd091bc58e86");
1186 assertSetButtonDisabled(VNF_SET_BUTTON_TEST_ID);
1189 browseASDCPage.selectPlatform("platform");
1191 SelectOption.selectOptionsFromMultiselectById("multi-selectPlatform", ImmutableList.of("platform"));
1194 browseASDCPage.selectLineOfBusiness("ONAP");
1195 assertSetButtonEnabled(VNF_SET_BUTTON_TEST_ID);
1197 browseASDCPage.setLegacyRegion("some legacy region");
1200 Wait.waitByTestId("model-item-value-subscriberName", 10);
1201 Assert.assertEquals(Get.byTestId("model-item-value-subscriberName").getText(), "SILVIA ROBBINS", "Subscriber name should be shown in vf module");
1202 Assert.assertEquals(Get.byTestId("model-item-value-min"), null, "Min value should not be shown in VNF popup");
1203 Assert.assertEquals(Get.byTestId("model-item-value-max"), null, "Max value should not be show in VNF popup");
1204 if (!vnfData.isGeneratedNaming) {
1205 Assert.assertEquals(Get.byTestId("model-item-value-serviceName").getText(), serviceInstanceName, "Subscriber name should be shown in vf module");
1208 vidBasePage.screenshotDeployDialog("createVnf-" + serviceInstanceName);
1209 Click.byTestId(VNF_SET_BUTTON_TEST_ID);
1213 if (tryCancelsAndReentries) {
1214 hoverAndClickEditButton(nodeToEdit);
1216 Wait.byText("TYLER SILVIA");
1217 GeneralUIUtils.ultimateWait();
1218 assertThat(Get.selectedOptionText(Constants.ViewEdit.LCP_REGION_SELECT_TESTS_ID), startsWith("AAIAIC25"));
1219 Assert.assertEquals(Get.selectedOptionText(Constants.ViewEdit.TENANT_SELECT_TESTS_ID), "USP-SIP-IC-24335-T-01");
1220 Assert.assertEquals(Get.selectedOptionText(Constants.ViewEdit.LINE_OF_BUSINESS_SELECT_TESTS_ID), "ONAP");
1222 Assert.assertTrue(Get.isOptionSelectedInMultiSelect(Constants.OwningEntity.PLATFORM_MULTI_SELECT_TEST_ID, "platform"));
1224 Click.byTestId(Constants.CANCEL_BUTTON_TEST_ID);
1225 GeneralUIUtils.ultimateWait();
1227 toggleItemInTree(Constants.DrawingBoard.AVAILABLE_MODELS_TREE);
1229 Click.byTestId("node-" + nodeToEdit);
1232 private String extractNodeToEdit(VnfData vnfData) {
1233 return vnfData.vnfUuid + "-" + vnfData.vnfName;
1237 private void toggleItemInTree(String tree) {
1238 Click.byXpath("//tree-root[@data-tests-id='" + tree + "']//span[@class='" + Constants.DrawingBoard.TOGGLE_CHILDREN + "']");
1241 private void hoverAndClickEditButton(String nodeToEdit) {
1242 hoverAndClickButton(nodeToEdit, Constants.DrawingBoard.CONTEXT_MENU_EDIT);
1245 private void hoverAndClickDeleteButton(String nodeToEdit) {
1246 hoverAndClickButton(nodeToEdit, Constants.InstantiationStatus.CONTEXT_MENU_REMOVE);
1249 private void hoverAndClickDuplicateButton(String nodeToEdit) {
1250 hoverAndClickButton(nodeToEdit, Constants.InstantiationStatus.CONTEXT_MENU_DUPLICATE);
1252 private void hoverAndClickButton(String nodeToEdit, String contextMenuItem) {
1253 String nodeOfEdit = Constants.DrawingBoard.NODE_PREFIX + nodeToEdit;
1254 String buttonOfEdit = nodeOfEdit + Constants.DrawingBoard.CONTEXT_MENU_BUTTON;
1255 GeneralUIUtils.hoverOnAreaByTestId(buttonOfEdit);
1256 Click.byTestId(buttonOfEdit);
1257 Click.byTestId(contextMenuItem);
1260 private void uploadSupplementaryFile(String inputFileName, boolean isValid, BrowseASDCPage browseASDCPage, String setButtonTestId) {
1261 if (Features.FLAG_SUPPLEMENTARY_FILE.isActive()) {
1262 GeneralUIUtils.ultimateWait();
1263 Input.file("supplementaryFiles/" + inputFileName, "supplementaryFile");
1264 GeneralUIUtils.ultimateWait();
1265 WebElement fileName = Get.byTestId("file-name");
1266 Assert.assertEquals(fileName.getText(),inputFileName);
1267 browseASDCPage.assertButtonState(setButtonTestId, isValid);
1271 private void deleteSupplementaryFile() {
1272 if (Features.FLAG_SUPPLEMENTARY_FILE.isActive()) {
1273 Click.byTestId("remove-uploaded-file");
1274 GeneralUIUtils.ultimateWait();
1275 WebElement fileName = Get.byTestId("file-name");
1276 Assert.assertEquals(fileName.getText(),"Choose file");
1280 //@Step("create vf module")
1281 private void createVfModule(ServiceData serviceData, String serviceInstanceName, boolean addedByDefault, boolean addOpensPopup) {
1282 clickAddVfModule(serviceData, addedByDefault);
1283 if (!addOpensPopup) {
1284 clickEditVfModule(serviceData);
1286 fillAndSetVfModulePopup(serviceData, serviceInstanceName);
1289 private void fillAndSetVfModulePopup(ServiceData serviceData, String serviceInstanceName) {
1290 String setButtonTestId = "form-set";
1291 BrowseASDCPage browseASDCPage = new BrowseASDCPage();
1293 Assert.assertEquals(isElementByIdRequired("instanceName-label"), !serviceData.vnfData.isGeneratedNaming,"instance name input should be optional when EcompNaming == true, and required when false.");
1295 if (!serviceData.vnfData.isGeneratedNaming) {
1296 Input.text("VF instance name", "instanceName");
1299 if (!serviceData.vfData.vgEnabled || (!serviceData.isALaCarte && serviceData.vnfData.isGeneratedNaming)) {
1300 Assert.assertNull(Get.byTestId("volumeGroupName"), "volumeGroupName input should be invisible "
1301 + "when vgEnabled is false or when vgEnabled is true and EcompGenName is true "
1302 + "(was: serviceData.vfData.vgEnabled=>" + serviceData.vfData.vgEnabled + ", serviceData.isGeneratedNaming=>" + IS_GENERATED_NAMING.FALSE + ")");
1305 Assert.assertFalse(isElementByIdRequired("volumeGroupName-label"),
1306 "volume Group name input should be always optional");
1307 if (serviceData.vfData.vgName!=null) {
1308 browseASDCPage.setInputText("volumeGroupName", serviceData.vfData.vgName);
1313 Wait.waitByTestId("model-item-value-subscriberName", 10);
1314 Assert.assertEquals(Get.byTestId("model-item-value-subscriberName").getText(), "SILVIA ROBBINS", "Subscriber name should be shown in vf module");
1315 Assert.assertEquals(Get.byTestId("model-item-value-min").getText(), Integer.toString(serviceData.vfData.vfMin), "Min should be shown");
1316 Assert.assertEquals(Get.byTestId("model-item-value-max").getText(), Integer.toString(serviceData.vfData.vfMax), "Max should be shown");
1317 if (serviceData.isGeneratedNaming!=IS_GENERATED_NAMING.TRUE) {
1318 Wait.byText(serviceInstanceName);
1319 Assert.assertEquals(Get.byTestId("model-item-value-serviceName").getText(), serviceInstanceName, "Service name should be shown in vf module");
1322 if (serviceData.isALaCarte) {
1323 String lcpRegion = "hvf6";
1324 Wait.waitByClassAndText("lcpRegionOption", lcpRegion, 30);
1325 viewEditPage.selectLcpRegion(lcpRegion, AIC);
1326 browseASDCPage.selectTenant("bae71557c5bb4d5aac6743a4e5f1d054");
1329 validateDynamicFields(serviceData.vfData.dynamicFields);
1331 uploadSupplementaryFile("invalid-file.json", false, browseASDCPage, setButtonTestId);
1332 deleteSupplementaryFile();
1333 uploadSupplementaryFile("sample.json", true, browseASDCPage, setButtonTestId);
1335 browseASDCPage.screenshotDeployDialog("createVfModule-" + serviceInstanceName);
1336 Click.byTestId(setButtonTestId);
1339 private void clickEditVfModule(ServiceData serviceData) {
1340 hoverAndClickEditButton(serviceData.vfData.uuid + "-" + serviceData.vfData.vfName);
1343 private void clickAddVfModule(ServiceData serviceData, boolean addedByDefault) {
1344 if (addedByDefault) {
1347 System.out.println("VFModule should be added 'manually'");
1349 final WebElement vfModuleNode = Get.byTestId(Constants.DrawingBoard.NODE_PREFIX + serviceData.vfData.vfName);
1351 if (vfModuleNode == null || !vfModuleNode.isDisplayed()) {
1353 drawingBoardPage.clickNode(serviceData.vnfData.vnfName);
1355 drawingBoardPage.clickAddButtonByNodeName(serviceData.vfData.vfName);
1358 private void clickRemoveVfModule(String vfModuleId, String vfModuleName) {
1359 System.out.println("will remove " + vfModule0Name);
1360 hoverAndClickDeleteButton(vfModuleId + "-" + vfModuleName);
1363 private void assertPauseOnPausePointsVisibility(boolean visibility) {
1364 WebElement pauseElem = Get.byId("Pause");
1365 final String assertionMessage = "pause on pause points visibility should be " + visibility;
1367 Assert.assertNotNull(pauseElem, assertionMessage);
1369 Assert.assertNull(pauseElem, assertionMessage);
1374 private String uuid() {
1375 return UUID.randomUUID().toString();
1379 private void assertNotificationAreaVisibilityBehaviourAndSetBulkSize(int size) {
1380 WebElement webElement = Get.byId("notification-area");
1381 Assert.assertNull(webElement, "notification area should be invisible if only 1 qty.");
1383 SelectOption.byIdAndVisibleText("quantity-select", String.valueOf(size));
1385 webElement = Get.byId("notification-area");
1386 Assert.assertNotNull(webElement, "notification area should be visible if more then 1 qty.");
1389 //@Step("prepare service preset")
1390 private void prepareServicePreset(ModelInfo modelInfo, boolean deploy) {
1391 String subscriberId = "e433710f-9217-458d-a79d-1c7aff376d89";
1394 registerExpectationForServiceDeployment(
1397 pasqualeVmxVpeBvService488Annotations
1399 subscriberId, null);
1401 registerExpectationForServiceBrowseAndDesign(ImmutableList.of(modelInfo), subscriberId);
1405 static class ServiceData {
1407 ServiceData(String modelUuid, List<String> dynamicFields, IS_GENERATED_NAMING isServiceGeneratedNaming,
1408 boolean isVnfGeneratedNaming, boolean isVgEnabled, boolean multiStageDesign, String vnfName,
1409 String vfName, int vfMin, int vfMax, List<String> vfModuleDynamicFields, String vfVersionId, boolean isALaCarte) {
1410 this.modelUuid = modelUuid;
1411 this.dynamicFields = dynamicFields;
1412 this.isGeneratedNaming = isServiceGeneratedNaming;
1413 this.multiStageDesign = multiStageDesign;
1414 this.isALaCarte = isALaCarte;
1415 this.vnfData = new VnfData(vnfName, "69e09f68-8b63-4cc9-b9ff-860960b5db09", "VNF instance name", isVnfGeneratedNaming);
1416 this.vfData = new VfData(vfName, isVgEnabled, vfMin, vfMax, vfModuleDynamicFields, vfVersionId, "_abc");
1419 public ServiceData(IS_GENERATED_NAMING isGeneratedNaming, VnfData vnfData, VfData vfData, boolean isALaCarte) {
1420 this.isGeneratedNaming = isGeneratedNaming;
1421 this.vnfData = vnfData;
1422 this.vfData = vfData;
1423 this.isALaCarte = isALaCarte;
1427 List<String> dynamicFields;
1428 IS_GENERATED_NAMING isGeneratedNaming;
1429 boolean multiStageDesign;
1434 enum IS_GENERATED_NAMING { TRUE, FALSE, TRUE_BUT_GIVE_NAME_EITHER_WAY}
1437 private static class VnfData {
1438 VnfData(String vnfName, String vnfUuid, String vnfInstanceName, boolean isGeneratedNaming) {
1439 this.vnfName = vnfName;
1440 this.vnfUuid = vnfUuid;
1441 this.vnfInstanceName = vnfInstanceName;
1442 this.isGeneratedNaming = isGeneratedNaming;
1445 final String vnfName;
1446 final String vnfUuid;
1447 final String vnfInstanceName;
1448 final boolean isGeneratedNaming;
1452 private static class VfData {
1453 VfData(String vfName, boolean vgEnabled, int vfMin, int vfMax, List<String> dynamicFields, String uuid, String vgName) {
1454 this.vfName = vfName;
1455 this.vgEnabled = vgEnabled;
1458 this.dynamicFields = dynamicFields;
1460 this.vgName = vgName;
1466 final String vfName;
1467 final boolean vgEnabled;
1468 final List<String> dynamicFields;
1469 final String vgName;