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, 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, true, 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, Features.FLAG_DEFAULT_VNF.isActive(), 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 if (Features.FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD.isActive()) {
538 hoverAndClickEditButton(vfModuleUUID + "-" + vfModuleName);
540 drawingBoardPage.clickAddButtonByNodeName(vfModuleName);
542 Input.text("VF instance name ZERO", "instanceName");
543 Click.byTestId(VNF_SET_BUTTON_TEST_ID);
547 public void createNewServiceInstance_macro_validPopupDataAndUI__ecompNamingServiceFalseVnfTrue_vgNameFalse() {
548 ServiceData serviceData = new ServiceData(
549 macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetails.modelVersionId,
551 IS_GENERATED_NAMING.FALSE, true, false, true,
552 "2017-488_PASQUALE-vPE 0",
553 vfModule0Name, 1, 1, new ArrayList<>(), vfModule0UUID, false);
555 prepareServicePreset(macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetails, false);
557 final String serviceInstanceName = createMacroService(serviceData, true);
558 createVnf(serviceData, true, true, serviceInstanceName);
559 createVfModule(serviceData, serviceInstanceName, true, false);
564 public void createNewServiceInstance_macro_validPopupDataAndUI__ecompNamingServiceFalseVnfFalse_vgNameFalse() {
565 ServiceData serviceData = new ServiceData(
566 macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetailsVnfEcompNamingFalse.modelVersionId,
568 IS_GENERATED_NAMING.FALSE, false, false, false,
569 "2017-488_PASQUALE-vPE 0",
570 vfModule0Name, 1, 1, new ArrayList<>(), vfModule0UUID, false);
572 prepareServicePreset(macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetailsVnfEcompNamingFalse, false);
574 final String serviceInstanceName = createMacroService(serviceData, true);
575 createVnf(serviceData, true, true, serviceInstanceName);
576 createVfModule(serviceData, serviceInstanceName, true, false);
581 public void createNewServiceInstance_macro_validPopupDataAndUI__ecompNamingServiceFalseVnfFalse_vgNameTrue() throws Exception {
582 ServiceData serviceData = new ServiceData(
583 macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetailsVnfEcompNamingFalse.modelVersionId,
585 IS_GENERATED_NAMING.FALSE, false, true, false,
586 "2017-488_PASQUALE-vPE 0",
587 "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", 0, 1, new ArrayList<>(), "25284168-24bb-4698-8cb4-3f509146eca5", false);
589 prepareServicePreset(macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetailsVnfEcompNamingFalse, false);
591 final String serviceInstanceName = createMacroService(serviceData, true);
592 createVnf(serviceData, true, true, serviceInstanceName);
593 clickRemoveVfModule(vfModule0UUID, vfModule0Name);
594 createVfModule(serviceData, serviceInstanceName, false, true);
599 @FeatureTogglingTest(FLAG_2002_ANY_ALACARTE_BESIDES_EXCLUDED_NEW_INSTANTIATION_UI)
600 public void createNewServiceInstance_aLaCarte_WithVnf() {
601 final ModelInfo serviceModelInfo = ModelInfo.aLaCarteServiceCreationNewUI;
602 String serviceInstanceName = "ALaCarteWithVnf"+randomAlphabetic(5);
603 String vnfInstanceName= "VnfForALaCarte"+randomAlphabetic(5);
604 VnfData vnfData = new VnfData("vOCG_1804_VF 0", "aca3f7b1-15f9-45a5-b182-b8b5aca84a76", vnfInstanceName, true);
605 VfData vfmData = new VfData("vocg_1804_vf0..Vocg1804Vf..base_ocg..module-0", false, 1, 1, emptyList(), "815db6e5-bdfd-4cb6-9575-82c36df8747a", null);
606 ServiceData serviceData = new ServiceData(IS_GENERATED_NAMING.TRUE, vnfData, vfmData, true);
608 resetGetServicesCache();
610 prepareServicePreset(serviceModelInfo, true);
612 String requestorID = getUserCredentials().getUserId();
614 String serviceRequestId = uuid();
615 String serviceInstanceId = uuid();
616 String vnfRequestId = uuid();
617 String vnfInstanceId = uuid();
618 String vfm0RequestId = uuid();
619 String vfm0InstanceId = uuid();
620 String vg1RequestId = uuid();
621 String vg1InstanceId = uuid();
622 String vfm1RequestId = uuid();
623 String vfm1InstanceId = uuid();
624 String vfm12RequestId = uuid();
625 String vfm12InstanceId = uuid();
627 ModelInfoWithCustomization vfm0 = new ModelInfoWithCustomization(
628 "815db6e5-bdfd-4cb6-9575-82c36df8747a",
629 "e9c795c8-6b98-4db3-bd90-a84b8ca5181b",
630 "Vocg1804Vf..base_ocg..module-0",
633 "Vocg1804Vf..base_ocg..module-0",
634 "a7b333d7-7633-4197-b40d-80fcfcadee94");
636 ModelInfoWithCustomization vg1 = new ModelInfoWithCustomization(
637 "9c219e70-1177-494b-8977-1395c9f9168c",
638 "0ad14d60-98b6-4575-a9b8-458a796c3f98",
639 "Vocg1804Vf..ocgmgr..module-1",
642 "Vocg1804Vf..ocgmgr..module-1",
643 "f332f3ce-434d-4084-a1e7-5261c16d4940"
646 ModelInfoWithCustomization vfm1 = new ModelInfoWithCustomization(
647 "9c219e70-1177-494b-8977-1395c9f9168c",
648 "0ad14d60-98b6-4575-a9b8-458a796c3f98",
649 "Vocg1804Vf..ocgmgr..module-1",
652 "Vocg1804Vf..ocgmgr..module-1",
653 "f332f3ce-434d-4084-a1e7-5261c16d4940"
656 ModelInfoWithCustomization vfm12 = new ModelInfoWithCustomization(
657 "b601eef4-62fd-4201-a788-ae30e06a1aec",
658 "e3cb8b85-7a3c-4897-b20b-70640c26d671",
659 "Vocg1804Vf..ocgapp_001..module-12",
662 "Vocg1804Vf..ocgapp_001..module-12",
663 "fcc82961-865e-4d38-9c7a-207c511405b6"
666 final String vgName = "vg_for_module1";
668 String vgRelatedInstance = ",{\"relatedInstance\": {"
669 + " \"modelInfo\": {"
670 + " \"modelType\": \"volumeGroup\""
672 + " \"instanceId\": \""+vg1InstanceId+"\","
673 + " \"instanceName\": \""+vgName+"\""
677 registerExpectationFromPresets(
679 new PresetMSOCreateServiceInstanceAlacarte(
680 ImmutableMap.of(Keys.SERVICE_NAME, serviceInstanceName),
681 serviceRequestId, serviceInstanceId,
682 requestorID, serviceModelInfo),
683 PRESET_SOME_LEGACY_REGION_TO_ATT_AIC,
684 new PresetMSOOrchestrationRequestGet(COMPLETE, serviceRequestId),
685 new PresetMSOCreateVnfALaCarteE2E(vnfRequestId, serviceInstanceId, vnfInstanceId, "ONAP", requestorID, serviceModelInfo),
686 new PresetMSOOrchestrationRequestGet(COMPLETE, vnfRequestId),
687 PRESET_MTN6_TO_ATT_AIC,
688 new PresetMSOCreateVfModuleALaCarteE2E(vfm0RequestId, vfm0InstanceId, serviceInstanceId, vnfInstanceId, requestorID, serviceModelInfo, null, vfm0, null),
689 new PresetMSOOrchestrationRequestGet(COMPLETE, vfm0RequestId),
690 new PresetMSOCreateVfModuleALaCarteE2E(vg1RequestId, vg1InstanceId, serviceInstanceId, vnfInstanceId, requestorID, serviceModelInfo, vgName, vg1, null),
691 new PresetMSOOrchestrationRequestGet(COMPLETE, vg1RequestId),
692 new PresetMSOCreateVfModuleALaCarteE2E(vfm1RequestId, vfm1InstanceId, serviceInstanceId, vnfInstanceId, requestorID, serviceModelInfo, null, vfm1, vgRelatedInstance),
693 new PresetMSOOrchestrationRequestGet(COMPLETE, vfm1RequestId),
694 new PresetMSOCreateVfModuleALaCarteE2E(vfm12RequestId, vfm12InstanceId, serviceInstanceId, vnfInstanceId, requestorID, serviceModelInfo, null, vfm12, null),
695 new PresetMSOOrchestrationRequestGet(COMPLETE, vfm12RequestId)
700 loadServicePopup(serviceModelInfo.modelVersionId);
701 fillALaCarteServicePopup(serviceInstanceName);
703 createVnf(vnfData, false, true, serviceInstanceName);
704 createVfModule(serviceData, serviceInstanceName, true, false);
705 serviceData.vfData = new VfData("vocg_1804_vf0..Vocg1804Vf..ocgmgr..module-1", true, 0, 1, emptyList(), "9c219e70-1177-494b-8977-1395c9f9168c", vgName);
706 createVfModule(serviceData, serviceInstanceName, false, false);
707 serviceData.vfData = new VfData("vocg_1804_vf0..Vocg1804Vf..ocgapp_001..module-12", true, 0, 1, emptyList(), "b601eef4-62fd-4201-a788-ae30e06a1aec", null);
708 createVfModule(serviceData, serviceInstanceName, false, false);
709 drawingBoardPage.deploy();
710 drawingBoardPage.verifyServiceCompletedOnTime(serviceInstanceName, "service "+serviceInstanceName);
714 @FeatureTogglingTest(FLAG_5G_IN_NEW_INSTANTIATION_UI)
715 public void createNewServiceInstance_aLaCarte_withNetwork_validPopupDataAndUI() {
716 String serviceInstanceName = "NcService"+randomAlphabetic(5);
717 String networkInstanceName= "NcNetowrk"+randomAlphabetic(5);
718 String defactoNetworkInstanceName = "ExtVL"+networkInstanceName;
720 prepareServicePreset(aLaCarteNetworkProvider5G, true);
721 String serviceRequestId = uuid();
722 String networkRequestId = uuid();
723 String requestorID = getUserCredentials().getUserId();
724 registerExpectationFromPresets(
726 new PresetMSOCreateServiceInstanceAlacarte(
727 ImmutableMap.of(Keys.SERVICE_NAME, serviceInstanceName),
728 serviceRequestId, DEFAULT_SERVICE_INSTANCE_ID,
729 requestorID, aLaCarteNetworkProvider5G),
730 new PresetMSOOrchestrationRequestGet(COMPLETE, serviceRequestId),
731 PRESET_SOME_LEGACY_REGION_TO_ATT_AIC,
732 new PresetMSOCreateNetworkALaCarte5G(networkRequestId, DEFAULT_SERVICE_INSTANCE_ID, defactoNetworkInstanceName, requestorID),
733 new PresetMSOOrchestrationRequestGet(COMPLETE, networkRequestId),
734 new PresetMSOOrchestrationRequestsGet5GServiceInstanceAndNetwork(
735 new ResponseDetails(serviceInstanceName, serviceRequestId, COMPLETE, "service"),
736 new ResponseDetails(defactoNetworkInstanceName, networkRequestId, COMPLETE, "network"),
737 DEFAULT_SERVICE_INSTANCE_ID)
741 loadServicePopup(aLaCarteNetworkProvider5G.modelVersionId);
742 fillALaCarteServicePopup(serviceInstanceName);
743 VnfData networkData = new VnfData("SR-IOV Provider-1", "840ffc47-e4cf-46de-8e23-525fd8c6fdc3", defactoNetworkInstanceName, false);
744 createNetwork(networkData, false, false, serviceInstanceName);
746 drawingBoardPage.deploy();
747 drawingBoardPage.verifyServiceCompletedOnTime(serviceInstanceName, "service "+serviceInstanceName);
750 private void fillALaCarteServicePopup(String serviceInstanceName) {
751 BrowseASDCPage browseASDCPage = new BrowseASDCPage();
752 WebElement instanceNameInput = Get.byId("instanceName");
753 instanceNameInput.sendKeys(serviceInstanceName);
754 VidBasePage.selectSubscriberById("e433710f-9217-458d-a79d-1c7aff376d89");
755 String serviceType = "TYLER SILVIA";
756 Wait.waitByClassAndText(Constants.CreateNewInstance.SERVICE_TYPE_OPTION_CLASS, serviceType, 30);
757 browseASDCPage.selectServiceTypeByName(serviceType);
758 SelectOption.byTestIdAndVisibleText("WayneHolland", (Constants.OwningEntity.OWNING_ENTITY_SELECT_TEST_ID));
759 SelectOption.byTestIdAndVisibleText("WATKINS", Constants.OwningEntity.PROJECT_SELECT_TEST_ID);
760 Click.byTestId("form-set");
761 VidBasePage.goOutFromIframe();
762 browseASDCPage.goToIframe();
766 public void createNewServiceInstance_macro_validPopupDataAndUI() {
768 List<String> serviceDynamicFields = Arrays.asList("2017488 pasqualevpe0 asn:");
769 ServiceData serviceData = new ServiceData(
770 macroSriovWithDynamicFieldsEcompNamingTruePartialModelDetails.modelVersionId,
771 serviceDynamicFields,
772 IS_GENERATED_NAMING.TRUE, true, true, false,
773 "2017-488_PASQUALE-vPE 0",
774 "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", 0, 1, new ArrayList<>(), "25284168-24bb-4698-8cb4-3f509146eca5", false);
776 prepareServicePreset(macroSriovWithDynamicFieldsEcompNamingTruePartialModelDetails, false);
778 final String serviceInstanceName = createMacroService(serviceData, true);
779 createVnf(serviceData, true, true, serviceInstanceName);
780 clickRemoveVfModule(vfModule0UUID, vfModule0Name);
781 createVfModule(serviceData, serviceInstanceName, false, false);
785 //@Step("deploy and verify module in pending table")
786 private void deployAndVerifyModuleInPendingTableMacro(String serviceInstanceName, String requestId1, String requestId2) {
787 drawingBoardPage.deploy();
789 boolean simulatorUpdated = false;
791 int[] ids = {0, 0, 1, 2};
792 String[] statuses = {IN_PROGRESS, COMPLETED, IN_PROGRESS, PENDING};
793 for (int i = 0; i < ids.length; i++) {
794 String actualInstanceName = getActualInstanceName(serviceInstanceName, ids[i]);
795 verifyModuleInPendingTable(actualInstanceName, requestId1, requestId2, ImmutableSet.of(statuses[i]), true, simulatorUpdated);
796 simulatorUpdated = true;
798 vidBasePage.screenshotDeployDialog(serviceInstanceName);
801 private void verifyModuleInPendingTable(String serviceInstanceName, String requestId1, String requestId2, Set<String> expectedStatuses, boolean isMacro, boolean simulatorUpdated) {
802 DrawingBoardPage.ServiceStatusChecker serviceStatusChecker = new DrawingBoardPage.ServiceStatusChecker(serviceInstanceName, expectedStatuses);
803 boolean statusIsShown = Wait.waitFor(serviceStatusChecker, null, 20, 2);
804 final String assertionMessage = String.format("service %s: none of rowClasses [%s] is in expectedStatuses: [%s] ",
806 String.join(",", serviceStatusChecker.getColumnClassesSet()),
807 String.join(",", expectedStatuses));
809 assertTrue(assertionMessage, statusIsShown);
812 InstantiationStatusPage.assertInstantiationStatusRow(
813 serviceInstanceName, expectedRowFields(serviceInstanceName));
815 InstantiationStatusPage.assertInstantiationStatusRow(
816 serviceInstanceName, expectedALaCarteRowFields(serviceInstanceName));
819 if (!simulatorUpdated) {
820 if (requestId2 != null) {
821 registerExpectationFromPreset(new PresetMSOOrchestrationRequestGet(IN_PROGRESS, requestId2), APPEND);
823 registerExpectationFromPreset(new PresetMSOOrchestrationRequestGet("COMPLETE", requestId1), APPEND);
825 vidBasePage.screenshotDeployDialog(serviceInstanceName);
828 private String getActualInstanceName(String serviceInstanceName, Integer i) {
829 return i==0 ? serviceInstanceName : serviceInstanceName + "_00" + i;
832 //@Step("verify open view edit")
833 private void verifyOpenViewEdit(String serviceInstanceName) {
834 boolean[] openEnabled = {true, false, false};
835 ImmutableList.of(0, 1, 2).forEach(i -> {
836 String actualInstanceName = getActualInstanceName(serviceInstanceName, i);
837 if (Features.FLAG_1902_NEW_VIEW_EDIT.isActive() || FLAG_1908_MACRO_NOT_TRANSPORT_NEW_VIEW_EDIT.isActive()) {
838 InstantiationStatusPage.verifyOpenNewViewEdit(actualInstanceName, openEnabled[i], "EDIT");
841 vidBasePage.verifyOpenOldViewEdit(actualInstanceName, null, openEnabled[i], true, true);
846 //@Step("verify open audit info")
847 private void verifyOpenAuditInfo(String serviceInstanceName) {
848 boolean auditInfoEnabled = true;
849 String[] statuses = {COMPLETED, IN_PROGRESS, PENDING};
850 for (Integer i : ImmutableList.of(0, 1, 2)) {
851 String actualInstanceName = getActualInstanceName(serviceInstanceName, i);
852 InstantiationStatusPage.checkMenuItem(actualInstanceName, Constants.InstantiationStatus.CONTEXT_MENU_HEADER_AUDIT_INFO_ITEM, auditInfoEnabled, contextMenuOpen -> {
853 Click.byTestId(contextMenuOpen);
854 checkAuditInfoModal(actualInstanceName, i, statuses);
856 final WebElement row = InstantiationStatusPage.getInstantiationStatusRow(actualInstanceName);
857 row.findElement(By.id(Constants.InstantiationStatus.TD_JOB_STATUS_ICON + "-" + (i))).click();
858 checkAuditInfoModal(actualInstanceName, i, statuses);
862 private void checkAuditInfoModal(String actualInstanceName, Integer i, String[] statuses) {
864 Wait.waitByTestId("vidJobStatus", 10);
866 WebElement webElement = Get.byTestId("model-item-value-serviceInstanceName");
867 assertEquals(webElement.getText(), actualInstanceName, "Service Instance Name must be equal");
869 WebElement vidTableElement = Get.byId("service-instantiation-audit-info-vid");
870 assertEquals(3, vidTableElement.findElement(By.tagName("thead")).findElements(By.tagName("th")).size(), "VID table must contain 3 columns");
872 List<WebElement> vidStatusesElements = vidTableElement.findElements(By.id("vidJobStatus"));
873 List<String> vidStatuses = vidStatusesElements.stream()
875 convertUITextCapitalizeAndFormatPipe(s.getText()))
876 .collect(Collectors.toList());
878 List<String> serviceStatus = Arrays.asList(Arrays.copyOfRange(statuses, i, statuses.length));
879 assertThat("statuses for " + actualInstanceName + " must be as expected", vidStatuses, containsInAnyOrder(serviceStatus.toArray()));
880 String dateString = vidTableElement.findElements(By.id("vidStatusTime")).get(0).getText();
881 assertTrue("vid Status Time column must contains valid date in format : MMM dd, yyyy HH:mm", isDateValid(dateString, "MMM dd, yyyy HH:mm"));
883 WebElement MSOTableElement = Get.byId("service-instantiation-audit-info-mso");
884 assertEquals(3, MSOTableElement.findElement(By.tagName("thead")).findElements(By.tagName("th")).size(), "MSO table must contain 3 columns");
886 if (statuses[i].equals(PENDING)) {
887 assertEquals(0, MSOTableElement.findElement(By.tagName("tbody")).findElements(By.tagName("tr")).size(), "When status is PENDING MSO table is empty");
890 vidBasePage.screenshotDeployDialog("audit-info-" + actualInstanceName);
891 Click.byId(Constants.AuditInfoModal.CANCEL_BUTTON);
894 private String convertUITextCapitalizeAndFormatPipe(String text) {
895 return text.toUpperCase().replace("-", "_");
898 private boolean isDateValid(String dateToValidate, String dateFromat) {
900 if (dateToValidate == null) {
903 SimpleDateFormat sdf = new SimpleDateFormat(dateFromat);
904 sdf.setLenient(false);
906 //if not valid, it will throw ParseException
907 Date date = sdf.parse(dateToValidate);
909 } catch (ParseException e) {
916 //@Step("verifyDeleteJob")
917 private void verifyDeleteJob(String serviceInstanceName) {
918 boolean[] deleteEnabled = {false, false, true};
919 String[] statuses = {COMPLETED, IN_PROGRESS, PENDING};
920 verifyDeleteOrHideOperation(serviceInstanceName, Constants.InstantiationStatus.CONTEXT_MENU_REMOVE, statuses, deleteEnabled, "deleted");
923 //@Step("verify hide job")
924 private void verifyHideJob(String serviceInstanceName) {
925 boolean[] hideEnabled = {true, false};
926 String[] statuses = {COMPLETED, IN_PROGRESS};
927 verifyDeleteOrHideOperation(serviceInstanceName, Constants.InstantiationStatus.CONTEXT_MENU_HIDE, statuses, hideEnabled, "hidden");
930 private void verifyDeleteOrHideOperation(String serviceInstanceName, String contextMenuItem, String[] statuses, boolean[] operationEnabled, String operationName) {
931 for (int i = 0; i < statuses.length; i++) {
932 String actualInstanceName = getActualInstanceName(serviceInstanceName, i);
933 InstantiationStatusPage.checkMenuItem(actualInstanceName, contextMenuItem, operationEnabled[i], contextMenuDelete -> {
934 Click.byTestId(contextMenuDelete);
935 GeneralUIUtils.ultimateWait();
936 assertNull(actualInstanceName + " should be " + operationName,
937 InstantiationStatusPage.getInstantiationStatusRow(actualInstanceName));
940 vidBasePage.screenshotDeployDialog(serviceInstanceName);
943 private ImmutableMap<String, String> expectedRowFields(String actualInstanceName) {
944 return ImmutableMap.<String, String>builder()
945 .put("userId", getUserCredentials().getUserId())
946 .put("serviceModelName", "action-data")
947 .put("serviceInstanceName", actualInstanceName)
948 .put("serviceModelVersion", "1.0")
949 .put("subscriberName", "SILVIA ROBBINS")
950 .put("serviceType", "TYLER SILVIA")
951 .put("regionId", "hvf6")
952 .put("tenantName", "AIN Web Tool-15-D-testalexandria")
953 .put("aicZoneName", "NFTJSSSS-NFT1")
954 .put("project", "WATKINS")
955 .put("owningEntityName", "WayneHolland")
956 .put("pause", "false")
960 private ImmutableMap<String, String> expectedALaCarteRowFields(String actualInstanceName) {
961 return ImmutableMap.<String, String>builder()
962 .put("userId", getUserCredentials().getUserId())
963 .put("serviceModelName", "Grouping Service for Test")
964 .put("serviceInstanceName", actualInstanceName)
965 .put("serviceModelVersion", "1.0")
966 .put("subscriberName", "SILVIA ROBBINS")
967 .put("serviceType", "TYLER SILVIA")
968 .put("project", "WATKINS")
969 .put("owningEntityName", "WayneHolland")
970 .put("pause", "false")
974 //@Step("create sriov service")
975 private String createMacroService(ServiceData serviceData, boolean tryCancelsAndReentries) {
976 return createMacroService(serviceData, tryCancelsAndReentries, randomAlphabetic(5), true, 3);
979 //@Step("create sriov service")
980 private String createMacroService(ServiceData serviceData, boolean tryCancelsAndReentries, String randomAlphabetic, boolean fillLcpRegionAndTenantAndZone, int bulkSize) {
981 BrowseASDCPage browseASDCPage = new BrowseASDCPage();
982 User user = usersService.getUser(Constants.Users.SILVIA_ROBBINS_TYLER_SILVIA);
984 // simulate typing with spaces, but expected is without spaces
985 String serviceInstanceNameWithSpaces = randomAlphabetic + " instance name";
986 String serviceInstanceName = cleanSeparators(serviceInstanceNameWithSpaces);
988 List<String> cycles = tryCancelsAndReentries ? ImmutableList.of("WILL_CANCEL", "AFTER_CANCEL") : ImmutableList.of("SINGLE_SHOT");
989 cycles.forEach(cycle -> {
990 if ("AFTER_CANCEL".equals(cycle)) {
991 loadServicePopupOnBrowseASDCPage(serviceData.modelUuid);
993 loadServicePopup(serviceData.modelUuid);
996 WebElement instanceName = Get.byId("instanceName");
997 boolean isRequired = isElementByIdRequired("instanceName-label");
998 if (serviceData.isGeneratedNaming == IS_GENERATED_NAMING.TRUE || serviceData.isGeneratedNaming == IS_GENERATED_NAMING.TRUE_BUT_GIVE_NAME_EITHER_WAY) {
999 Assert.assertNotNull(instanceName, "instance name input should be visible when serviceEcompNaming == true.");
1000 Assert.assertFalse(isRequired,"instance name input should be optional when ecompNaming == true.");
1002 Assert.assertTrue(isRequired,"instance name input should be required when serviceEcompNaming == false.");
1005 if (serviceData.isGeneratedNaming == IS_GENERATED_NAMING.FALSE || serviceData.isGeneratedNaming == IS_GENERATED_NAMING.TRUE_BUT_GIVE_NAME_EITHER_WAY) {
1006 instanceName.sendKeys(serviceInstanceName);
1008 String setButtonTestId = "form-set";
1010 //serviceType should be dependent on subscriber selection
1011 assertElementDisabled("serviceType-select");
1012 Wait.waitByClassAndText(Constants.CreateNewInstance.SUBSCRIBER_NAME_OPTION_CLASS, "SILVIA ROBBINS", 30);
1013 GeneralUIUtils.ultimateWait();
1014 Click.byTestId(Constants.SUBSCRIBER_NAME_SELECT_TESTS_ID);
1015 if (Features.FLAG_RESTRICTED_SELECT.isActive())
1016 assertElementExistAccordingTagNameAndTestId("select", Constants.SUBSCRIBER_SELECT_ID);
1018 assertDropdownPermittedItemsByLabel(user.subscriberNames, Constants.CreateNewInstance.SUBSCRIBER_NAME_OPTION_CLASS);
1021 VidBasePage.selectSubscriberById("e433710f-9217-458d-a79d-1c7aff376d89");
1022 //lcpRegion should be dependent on serviceType selection
1023 assertElementDisabled("lcpRegion-select");
1025 String serviceType = "TYLER SILVIA";
1026 Wait.waitByClassAndText(Constants.CreateNewInstance.SERVICE_TYPE_OPTION_CLASS, serviceType, 30);
1027 browseASDCPage.selectServiceTypeByName(serviceType);
1029 String owningEntity = "WayneHolland";
1030 GeneralUIUtils.ultimateWait();
1031 Wait.waitByClassAndText(Constants.CreateNewInstance.OWNING_ENTITY_OPTION, owningEntity, 30);
1032 SelectOption.byTestIdAndVisibleText(owningEntity, (Constants.OwningEntity.OWNING_ENTITY_SELECT_TEST_ID));
1033 assertSetButtonDisabled(setButtonTestId);
1035 SelectOption.byTestIdAndVisibleText("ERICA", Constants.ViewEdit.PRODUCT_FAMILY_SELECT_TESTS_ID);
1036 browseASDCPage.selectProductFamily("e433710f-9217-458d-a79d-1c7aff376d89");
1038 if (fillLcpRegionAndTenantAndZone) {
1040 //we assume that if fillLcpRegionAndTenantAndZone is true tenant and lcpRegion are required for this service model
1041 //If you want to fill lcpRegionAndTenant where they are optional you can refactor this test...
1042 assertSetButtonDisabled(setButtonTestId);
1044 //tenant should be dependent on lcpRegion selection
1045 assertElementDisabled("tenant-select");
1047 String lcpRegion = "hvf6";
1048 Wait.waitByClassAndText("lcpRegionOption", lcpRegion, 30);
1049 viewEditPage.selectLcpRegion(lcpRegion, AIC);
1051 GeneralUIUtils.ultimateWait();
1052 browseASDCPage.selectTenant("bae71557c5bb4d5aac6743a4e5f1d054");
1054 browseASDCPage.selectAicZone("NFT1");
1057 assertSetButtonEnabled(setButtonTestId);
1060 SelectOption.byTestIdAndVisibleText("WATKINS", Constants.OwningEntity.PROJECT_SELECT_TEST_ID);
1062 assertNotificationAreaVisibilityBehaviourAndSetBulkSize(bulkSize);
1065 assertPauseOnPausePointsVisibility(serviceData.multiStageDesign);
1067 validateDynamicFields(serviceData.dynamicFields);
1069 vidBasePage.screenshotDeployDialog("createMacroService-" + serviceInstanceName);
1071 if ("WILL_CANCEL".equals(cycle)) {
1072 Click.byTestId(Constants.CANCEL_BUTTON_TEST_ID);
1074 Click.byTestId(setButtonTestId);
1077 VidBasePage.goOutFromIframe();
1079 browseASDCPage.goToIframe();
1082 return serviceInstanceName;
1085 private String createALaCarteService(ServiceData serviceData, String randomAlphabetic) {
1086 BrowseASDCPage browseASDCPage = new BrowseASDCPage();
1087 User user = usersService.getUser(Constants.Users.SILVIA_ROBBINS_TYLER_SILVIA);
1089 // simulate typing with spaces, but expected is without spaces
1090 String serviceInstanceNameWithSpaces = randomAlphabetic + " instance name";
1091 String serviceInstanceName = cleanSeparators(serviceInstanceNameWithSpaces);
1093 loadServicePopup(serviceData.modelUuid);
1095 WebElement instanceName = Get.byId("instanceName");
1096 if (serviceData.isGeneratedNaming == IS_GENERATED_NAMING.TRUE || serviceData.isGeneratedNaming == IS_GENERATED_NAMING.TRUE_BUT_GIVE_NAME_EITHER_WAY) {
1097 Assert.assertNull(instanceName, "instance name input should be invisible when serviceEcompNaming == true.");
1099 if (serviceData.isGeneratedNaming == IS_GENERATED_NAMING.FALSE || serviceData.isGeneratedNaming == IS_GENERATED_NAMING.TRUE_BUT_GIVE_NAME_EITHER_WAY) {
1100 instanceName.sendKeys(serviceInstanceName);
1103 //serviceType should be dependent on subscriber selection
1104 assertElementDisabled("serviceType-select");
1105 Wait.waitByClassAndText(Constants.CreateNewInstance.SUBSCRIBER_NAME_OPTION_CLASS, "SILVIA ROBBINS", 30);
1106 GeneralUIUtils.ultimateWait();
1107 Click.byTestId(Constants.SUBSCRIBER_NAME_SELECT_TESTS_ID);
1108 if (Features.FLAG_RESTRICTED_SELECT.isActive())
1109 assertElementExistAccordingTagNameAndTestId("select", Constants.SUBSCRIBER_SELECT_ID);
1111 assertDropdownPermittedItemsByLabel(user.subscriberNames, Constants.CreateNewInstance.SUBSCRIBER_NAME_OPTION_CLASS);
1114 VidBasePage.selectSubscriberById("e433710f-9217-458d-a79d-1c7aff376d89");
1116 String serviceType = "TYLER SILVIA";
1117 Wait.waitByClassAndText(Constants.CreateNewInstance.SERVICE_TYPE_OPTION_CLASS, serviceType, 30);
1118 browseASDCPage.selectServiceTypeByName(serviceType);
1120 String setButtonTestId = "form-set";
1121 assertSetButtonDisabled(setButtonTestId);
1123 SelectOption.byTestIdAndVisibleText("WayneHolland", (Constants.OwningEntity.OWNING_ENTITY_SELECT_TEST_ID));
1125 SelectOption.byTestIdAndVisibleText("WATKINS", Constants.OwningEntity.PROJECT_SELECT_TEST_ID);
1127 validateDynamicFields(serviceData.dynamicFields);
1129 vidBasePage.screenshotDeployDialog("createALaCarteService-" + serviceInstanceName);
1131 Click.byTestId(setButtonTestId);
1133 VidBasePage.goOutFromIframe();
1135 browseASDCPage.goToIframe();
1137 return serviceInstanceName;
1140 private void assertElementExistAccordingTagNameAndTestId(String tag, String testId) {
1141 WebElement webElement = Get.byId(testId);
1142 Assert.assertEquals(webElement.getTagName(), tag);
1145 //@Step("create vnf")
1146 private void createVnf(ServiceData serviceData, boolean tryCancelsAndReentries, boolean addedByDefault, String serviceInstanceName) {
1147 createVnf(serviceData.vnfData, tryCancelsAndReentries, addedByDefault, serviceInstanceName);
1150 private void createNetwork(VnfData vnfData, boolean tryCancelsAndReentries, boolean addedByDefault, String serviceInstanceName) {
1151 createVnf(vnfData, tryCancelsAndReentries, addedByDefault, serviceInstanceName, true);
1154 private void createVnf(VnfData vnfData, boolean tryCancelsAndReentries, boolean addedByDefault, String serviceInstanceName) {
1155 createVnf(vnfData, tryCancelsAndReentries, addedByDefault, serviceInstanceName, false);
1158 private void createVnf(VnfData vnfData, boolean tryCancelsAndReentries, boolean addedByDefault, String serviceInstanceName, boolean isNetwork) {
1159 BrowseASDCPage browseASDCPage = new BrowseASDCPage();
1161 String nodeToEdit = extractNodeToEdit(vnfData);
1162 if (addedByDefault && Features.FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD.isActive()) {
1163 hoverAndClickEditButton(nodeToEdit);
1165 drawingBoardPage.clickAddButtonByNodeName(vnfData.vnfName);
1168 GeneralUIUtils.ultimateWait();
1170 if (vnfData.isGeneratedNaming) {
1171 Assert.assertFalse(isElementByIdRequired("instanceName-label") ,"instance name input should be optional when EcompNaming == true, and required when false.");
1173 Input.text(vnfData.vnfInstanceName, "instanceName");
1177 //tenant should be dependent on lcpRegion selection
1178 assertElementDisabled("tenant-select");
1180 WebElement legacyRegion = Get.byTestId("lcpRegionText");
1181 Assert.assertNull(legacyRegion, "legacy region shouldn't be visible when lcp region isn't AAIAIC25,olson3 or olson5a.");
1183 browseASDCPage.selectLcpRegion("AAIAIC25");
1185 legacyRegion = Get.byTestId("lcpRegionText");
1186 Assert.assertNotNull(legacyRegion, "legacy region should be visible when lcp region is AAIAIC25,olson3 or olson5a.");
1188 browseASDCPage.selectTenant("092eb9e8e4b7412e8787dd091bc58e86");
1190 assertSetButtonDisabled(VNF_SET_BUTTON_TEST_ID);
1192 browseASDCPage.selectPlatform("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");
1221 Assert.assertEquals(Get.selectedOptionText(Constants.OwningEntity.PLATFORM_SELECT_TEST_ID), "platform");
1222 Click.byTestId(Constants.CANCEL_BUTTON_TEST_ID);
1223 GeneralUIUtils.ultimateWait();
1225 toggleItemInTree(Constants.DrawingBoard.AVAILABLE_MODELS_TREE);
1227 Click.byTestId("node-" + nodeToEdit);
1230 private String extractNodeToEdit(VnfData vnfData) {
1231 return vnfData.vnfUuid + "-" + vnfData.vnfName;
1235 private void toggleItemInTree(String tree) {
1236 Click.byXpath("//tree-root[@data-tests-id='" + tree + "']//span[@class='" + Constants.DrawingBoard.TOGGLE_CHILDREN + "']");
1239 private void hoverAndClickEditButton(String nodeToEdit) {
1240 hoverAndClickButton(nodeToEdit, Constants.DrawingBoard.CONTEXT_MENU_EDIT);
1243 private void hoverAndClickDeleteButton(String nodeToEdit) {
1244 hoverAndClickButton(nodeToEdit, Constants.InstantiationStatus.CONTEXT_MENU_REMOVE);
1247 private void hoverAndClickDuplicateButton(String nodeToEdit) {
1248 hoverAndClickButton(nodeToEdit, Constants.InstantiationStatus.CONTEXT_MENU_DUPLICATE);
1250 private void hoverAndClickButton(String nodeToEdit, String contextMenuItem) {
1251 String nodeOfEdit = Constants.DrawingBoard.NODE_PREFIX + nodeToEdit;
1252 String buttonOfEdit = nodeOfEdit + Constants.DrawingBoard.CONTEXT_MENU_BUTTON;
1253 GeneralUIUtils.hoverOnAreaByTestId(buttonOfEdit);
1254 Click.byTestId(buttonOfEdit);
1255 Click.byTestId(contextMenuItem);
1258 private void uploadSupplementaryFile(String inputFileName, boolean isValid, BrowseASDCPage browseASDCPage, String setButtonTestId) {
1259 if (Features.FLAG_SUPPLEMENTARY_FILE.isActive()) {
1260 GeneralUIUtils.ultimateWait();
1261 Input.file("supplementaryFiles/" + inputFileName, "supplementaryFile");
1262 GeneralUIUtils.ultimateWait();
1263 WebElement fileName = Get.byTestId("file-name");
1264 Assert.assertEquals(fileName.getText(),inputFileName);
1265 browseASDCPage.assertButtonState(setButtonTestId, isValid);
1269 private void deleteSupplementaryFile() {
1270 if (Features.FLAG_SUPPLEMENTARY_FILE.isActive()) {
1271 Click.byTestId("remove-uploaded-file");
1272 GeneralUIUtils.ultimateWait();
1273 WebElement fileName = Get.byTestId("file-name");
1274 Assert.assertEquals(fileName.getText(),"Choose file");
1278 //@Step("create vf module")
1279 private void createVfModule(ServiceData serviceData, String serviceInstanceName, boolean addedByDefault, boolean addOpensPopup) {
1280 clickAddVfModule(serviceData, addedByDefault);
1281 if (!addOpensPopup) {
1282 clickEditVfModule(serviceData);
1284 fillAndSetVfModulePopup(serviceData, serviceInstanceName);
1287 private void fillAndSetVfModulePopup(ServiceData serviceData, String serviceInstanceName) {
1288 String setButtonTestId = "form-set";
1289 BrowseASDCPage browseASDCPage = new BrowseASDCPage();
1291 Assert.assertEquals(isElementByIdRequired("instanceName-label"), !serviceData.vnfData.isGeneratedNaming,"instance name input should be optional when EcompNaming == true, and required when false.");
1293 if (!serviceData.vnfData.isGeneratedNaming) {
1294 Input.text("VF instance name", "instanceName");
1297 if (!serviceData.vfData.vgEnabled || (!serviceData.isALaCarte && serviceData.vnfData.isGeneratedNaming)) {
1298 Assert.assertNull(Get.byTestId("volumeGroupName"), "volumeGroupName input should be invisible "
1299 + "when vgEnabled is false or when vgEnabled is true and EcompGenName is true "
1300 + "(was: serviceData.vfData.vgEnabled=>" + serviceData.vfData.vgEnabled + ", serviceData.isGeneratedNaming=>" + IS_GENERATED_NAMING.FALSE + ")");
1303 Assert.assertFalse(isElementByIdRequired("volumeGroupName-label"),
1304 "volume Group name input should be always optional");
1305 if (serviceData.vfData.vgName!=null) {
1306 browseASDCPage.setInputText("volumeGroupName", serviceData.vfData.vgName);
1311 Wait.waitByTestId("model-item-value-subscriberName", 10);
1312 Assert.assertEquals(Get.byTestId("model-item-value-subscriberName").getText(), "SILVIA ROBBINS", "Subscriber name should be shown in vf module");
1313 Assert.assertEquals(Get.byTestId("model-item-value-min").getText(), Integer.toString(serviceData.vfData.vfMin), "Min should be shown");
1314 Assert.assertEquals(Get.byTestId("model-item-value-max").getText(), Integer.toString(serviceData.vfData.vfMax), "Max should be shown");
1315 if (serviceData.isGeneratedNaming!=IS_GENERATED_NAMING.TRUE) {
1316 Wait.byText(serviceInstanceName);
1317 Assert.assertEquals(Get.byTestId("model-item-value-serviceName").getText(), serviceInstanceName, "Service name should be shown in vf module");
1320 if (serviceData.isALaCarte) {
1321 String lcpRegion = "hvf6";
1322 Wait.waitByClassAndText("lcpRegionOption", lcpRegion, 30);
1323 viewEditPage.selectLcpRegion(lcpRegion, AIC);
1324 browseASDCPage.selectTenant("bae71557c5bb4d5aac6743a4e5f1d054");
1327 validateDynamicFields(serviceData.vfData.dynamicFields);
1329 uploadSupplementaryFile("invalid-file.json", false, browseASDCPage, setButtonTestId);
1330 deleteSupplementaryFile();
1331 uploadSupplementaryFile("sample.json", true, browseASDCPage, setButtonTestId);
1333 browseASDCPage.screenshotDeployDialog("createVfModule-" + serviceInstanceName);
1334 Click.byTestId(setButtonTestId);
1337 private void clickEditVfModule(ServiceData serviceData) {
1338 if (Features.FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD.isActive()) {
1339 hoverAndClickEditButton(serviceData.vfData.uuid + "-" + serviceData.vfData.vfName);
1343 private void clickAddVfModule(ServiceData serviceData, boolean addedByDefault) {
1344 if (Features.FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD.isActive() && 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 if (Features.FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD.isActive()) {
1360 System.out.println("will remove " + vfModule0Name);
1361 hoverAndClickDeleteButton(vfModuleId + "-" + vfModuleName);
1365 private void assertPauseOnPausePointsVisibility(boolean visibility) {
1366 WebElement pauseElem = Get.byId("Pause");
1367 final String assertionMessage = "pause on pause points visibility should be " + visibility;
1369 Assert.assertNotNull(pauseElem, assertionMessage);
1371 Assert.assertNull(pauseElem, assertionMessage);
1376 private String uuid() {
1377 return UUID.randomUUID().toString();
1381 private void assertNotificationAreaVisibilityBehaviourAndSetBulkSize(int size) {
1382 WebElement webElement = Get.byId("notification-area");
1383 Assert.assertNull(webElement, "notification area should be invisible if only 1 qty.");
1385 SelectOption.byIdAndVisibleText("quantity-select", String.valueOf(size));
1387 webElement = Get.byId("notification-area");
1388 Assert.assertNotNull(webElement, "notification area should be visible if more then 1 qty.");
1391 //@Step("prepare service preset")
1392 private void prepareServicePreset(ModelInfo modelInfo, boolean deploy) {
1393 String subscriberId = "e433710f-9217-458d-a79d-1c7aff376d89";
1396 registerExpectationForServiceDeployment(
1399 pasqualeVmxVpeBvService488Annotations
1401 subscriberId, null);
1403 registerExpectationForServiceBrowseAndDesign(ImmutableList.of(modelInfo), subscriberId);
1407 static class ServiceData {
1409 ServiceData(String modelUuid, List<String> dynamicFields, IS_GENERATED_NAMING isServiceGeneratedNaming,
1410 boolean isVnfGeneratedNaming, boolean isVgEnabled, boolean multiStageDesign, String vnfName,
1411 String vfName, int vfMin, int vfMax, List<String> vfModuleDynamicFields, String vfVersionId, boolean isALaCarte) {
1412 this.modelUuid = modelUuid;
1413 this.dynamicFields = dynamicFields;
1414 this.isGeneratedNaming = isServiceGeneratedNaming;
1415 this.multiStageDesign = multiStageDesign;
1416 this.isALaCarte = isALaCarte;
1417 this.vnfData = new VnfData(vnfName, "69e09f68-8b63-4cc9-b9ff-860960b5db09", "VNF instance name", isVnfGeneratedNaming);
1418 this.vfData = new VfData(vfName, isVgEnabled, vfMin, vfMax, vfModuleDynamicFields, vfVersionId, "_abc");
1421 public ServiceData(IS_GENERATED_NAMING isGeneratedNaming, VnfData vnfData, VfData vfData, boolean isALaCarte) {
1422 this.isGeneratedNaming = isGeneratedNaming;
1423 this.vnfData = vnfData;
1424 this.vfData = vfData;
1425 this.isALaCarte = isALaCarte;
1429 List<String> dynamicFields;
1430 IS_GENERATED_NAMING isGeneratedNaming;
1431 boolean multiStageDesign;
1436 enum IS_GENERATED_NAMING { TRUE, FALSE, TRUE_BUT_GIVE_NAME_EITHER_WAY}
1439 private static class VnfData {
1440 VnfData(String vnfName, String vnfUuid, String vnfInstanceName, boolean isGeneratedNaming) {
1441 this.vnfName = vnfName;
1442 this.vnfUuid = vnfUuid;
1443 this.vnfInstanceName = vnfInstanceName;
1444 this.isGeneratedNaming = isGeneratedNaming;
1447 final String vnfName;
1448 final String vnfUuid;
1449 final String vnfInstanceName;
1450 final boolean isGeneratedNaming;
1454 private static class VfData {
1455 VfData(String vfName, boolean vgEnabled, int vfMin, int vfMax, List<String> dynamicFields, String uuid, String vgName) {
1456 this.vfName = vfName;
1457 this.vgEnabled = vgEnabled;
1460 this.dynamicFields = dynamicFields;
1462 this.vgName = vgName;
1468 final String vfName;
1469 final boolean vgEnabled;
1470 final List<String> dynamicFields;
1471 final String vgName;