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);
124 private static final String NO_MAX_INSTANCES_IN_MODEL = "NO_MAX_INSTANCES_IN_MODEL";
127 protected void dropAllAsyncJobs() {
128 AsyncJobsService asyncJobsService = new AsyncJobsService();
129 asyncJobsService.dropAllAsyncJobs();
133 protected void muteAllAsyncJobs() {
134 AsyncJobsService asyncJobsService = new AsyncJobsService();
135 asyncJobsService.muteAllAsyncJobs();
139 protected void goToWelcome() {
140 SideMenu.navigateToWelcomePage();
144 protected UserCredentials getUserCredentials() {
145 String userName = Constants.Users.SILVIA_ROBBINS_TYLER_SILVIA;
146 User user = usersService.getUser(userName);
147 return new UserCredentials(user.credentials.userId, user.credentials.password, userName, "", "");
151 public void createNewServiceInstance_fullModelData_LeftPaneLabelsCorrect() throws Exception {
152 prepareServicePreset(macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetails, false);
153 loadServicePopup(macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetails);
154 assertServiceModelLabelsCorrect(serviceModelLabelList);
158 public void createNewServiceInstance_partialModelData_LeftPaneLabelsCorrect() throws Exception {
159 prepareServicePreset(macroSriovWithDynamicFieldsEcompNamingTruePartialModelDetails, false);
160 loadServicePopup(macroSriovWithDynamicFieldsEcompNamingTruePartialModelDetails);
161 assertServiceModelLabelsCorrect(mandatoryServiceModelLabelList);
165 public void createNewServiceInstance_setFieldValue_resetDependenciesListsAndValues() {
166 resetGetTenantsCache();
168 BrowseASDCPage browseASDCPage = new BrowseASDCPage();
169 prepareServicePreset(macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetails, false);
170 SimulatorApi.registerExpectation(Constants.RegisterToSimulator.CreateNewServiceInstance.GET_SUBSCRIBERS_FOR_CUSTOMER_CAR_2020_ER, SimulatorApi.RegistrationStrategy.APPEND);
171 registerExpectationFromPreset(
172 new PresetAAIGetTenants(
174 "MSO-dev-service-type",
175 "registration_to_simulator/create_new_instance/aai_get_tenants_for_customer_CAR_2020_ER.json"),
176 SimulatorApi.RegistrationStrategy.APPEND);
178 loadServicePopup(macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetails);
179 Wait.waitByClassAndText(Constants.CreateNewInstance.SUBSCRIBER_NAME_OPTION_CLASS, "SILVIA ROBBINS", 30);
180 VidBasePage.selectSubscriberById("e433710f-9217-458d-a79d-1c7aff376d89");
181 GeneralUIUtils.ultimateWait();
182 String serviceType = "TYLER SILVIA";
183 Wait.waitByClassAndText(Constants.CreateNewInstance.SERVICE_TYPE_OPTION_CLASS, serviceType, 30);
184 browseASDCPage.selectServiceTypeByName(serviceType);
185 String lcpRegion = "hvf6";
186 Wait.waitByClassAndText("lcpRegionOption", lcpRegion, 30);
187 viewEditPage.selectLcpRegion(lcpRegion, AIC);
188 browseASDCPage.selectTenant("bae71557c5bb4d5aac6743a4e5f1d054");
190 VidBasePage.selectSubscriberById("CAR_2020_ER");
191 assertElementDisabled("lcpRegion-select");
192 serviceType = "MSO-dev-service-type";
193 Wait.waitByClassAndText(Constants.CreateNewInstance.SERVICE_TYPE_OPTION_CLASS, serviceType, 30);
194 browseASDCPage.selectServiceTypeByName(serviceType);
195 lcpRegion = "CAR_2020_ER";
196 Wait.waitByClassAndText("lcpRegionOption", lcpRegion, 30);
197 viewEditPage.selectLcpRegion(lcpRegion, AIC);
198 browseASDCPage.selectTenant("092eb9e8e4b7412e8787dd091bc58e66");
200 resetGetTenantsCache();
205 * asserts that the provided labels list is visible and that no other detail item appears in the model details panel.
207 protected void assertServiceModelLabelsCorrect(List<String> serviceModelLabelList) throws Exception {
208 WebElement genericPopup = getDriver().findElement(By.tagName("generic-form-popup"));
209 WebElement modelInformation = genericPopup.findElement(By.id("model-information"));
210 List<WebElement> modelInformationItems = modelInformation.findElements(By.xpath("./div"));
211 assertEquals(modelInformationItems.size(), serviceModelLabelList.size());
212 serviceModelLabelList.forEach(label -> {
213 WebElement webElement = Get.byTestId("model-item-" + label);
214 WebElement itemWarpper = webElement.findElements(By.className("wrapper")).get(0);
215 assertEquals(itemWarpper.findElements(By.tagName("label")).get(0).getText(), label, "model details item label is incorrect.");
220 public void createNewServiceInstance_leftPane_serviceModelDataCorrect() {
221 Service service = servicesService.getService(macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetails.modelVersionId);
222 String prefix = NewServicePopup.SERVICE_MODEL_DATA_TEST_ID_VALUE_PREFIX;
223 prepareServicePreset(macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetails, false);
224 loadServicePopup(macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetails);
225 logger.info("Expected service model properties: "+service.toString());
226 assertModelDataCorrect(NewServicePopup.SERVICE_MODEL_FIELD_TO_DATA_TESTS_ID, prefix, service);
230 public void createNewServiceInstance_macro_validPopupDataAndUI__ecompNamingFalse() {
232 ServiceData serviceData = new ServiceData(
233 macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetails.modelVersionId,
235 IS_GENERATED_NAMING.FALSE, true, true, true,
236 "2017-488_PASQUALE-vPE 0",
237 "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vRE_BV..module-1",
238 0, NO_MAX_INSTANCES_IN_MODEL, new ArrayList<>(), "25284168-24bb-4698-8cb4-3f509146eca5", false);
240 prepareServicePreset(macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetails, false);
242 final String serviceInstanceName = createMacroService(serviceData, true);
243 createVnf(serviceData, true, serviceInstanceName);
245 createVfModule(serviceData, serviceInstanceName, false, false);
249 @Test(groups = "underDevelopment")
250 public void createNewServiceInstance_macro_validPopupDataAndUI__dynamicFieldsEcompNamingFalse_DEV() {
252 Upon failure in test dynamicFieldsEcompNamingFalse_FLESH(), exception will provide
253 the needed data for this DEV method:
255 1. "Current step" when the failure occurred
256 2. "Random alphabetic" that was randomized while test
257 3. "Starting reduxState" that was on the step that failed.
259 These data can be used for, accordingly, 1. startInStep param; 2, randomAlphabetic
260 param; 3. reduxForStep param.
263 // It should be easier to put `reduxForStep` in this file, to avoid Java's code-clutter and json escaping.
264 final String reduxForStep = ReadFile.loadResourceAsString(
265 "NewServiceInstanceTest/createNewServiceInstance_macro_validPopupDataAndUI__dynamicFieldsEcompNamingFalse.json");
267 createNewServiceInstance_macro_validPopupDataAndUI__dynamicFieldsEcompNamingFalse_FLESH("DEV", 5, reduxForStep, "mCaNk");
271 public void createNewServiceInstance_macro_validPopupDataAndUI__dynamicFieldsEcompNamingFalse() {
272 createNewServiceInstance_macro_validPopupDataAndUI__dynamicFieldsEcompNamingFalse_FLESH("RUNTIME", 0, null, randomAlphabetic(5));
275 private void createNewServiceInstance_macro_validPopupDataAndUI__dynamicFieldsEcompNamingFalse_FLESH(String mode, int startInStep, String reduxForStep, String randomAlphabetic) {
277 MutableInt i = new MutableInt();
278 Map<String, String> reduxStates = new HashMap<>();
280 ServiceData serviceData = new ServiceData(
281 macroSriovWithDynamicFieldsEcompNamingFalsePartialModelDetailsVnfEcompNamingFalse.modelVersionId,
282 Collections.singletonList("2017488 pasqualevpe0 asn:"),
283 IS_GENERATED_NAMING.FALSE, false, true, false,
284 "2017-488_PASQUALE-vPE 0",
285 "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", 0,
286 NO_MAX_INSTANCES_IN_MODEL, ImmutableList.of("Bandwidth", "Bandwidth units"),
287 "25284168-24bb-4698-8cb4-3f509146eca5", false);
289 // this is the instance-name that createMacroService is going to use
290 String serviceInstanceName = randomAlphabetic + "instancename";
292 doReduxStep(reduxStates, randomAlphabetic, startInStep, reduxForStep, i, mode, () -> {
293 prepareServicePreset(macroSriovWithDynamicFieldsEcompNamingFalsePartialModelDetailsVnfEcompNamingFalse,
295 createMacroService(serviceData, false, randomAlphabetic, true, 3);
298 doReduxStep(reduxStates, randomAlphabetic, startInStep, reduxForStep, i, mode, () ->
299 createVnf(serviceData, false, serviceInstanceName)
302 final String vnfInstanceName2 = randomAlphabetic + "instanceName";
303 final String vnfName2 = "2017-388_PASQUALE-vPE";
305 doReduxStep(reduxStates, randomAlphabetic, startInStep, reduxForStep, i, mode, () ->
306 createVnf(new VnfData(vnfName2 + " 0", "afacccf6-397d-45d6-b5ae-94c39734b168", vnfInstanceName2, false),
307 false, serviceInstanceName)
310 doReduxStep(reduxStates, randomAlphabetic, startInStep, reduxForStep, i, mode, () ->
311 createVfModule(serviceData, serviceInstanceName, false, true)
314 doReduxStep(reduxStates, randomAlphabetic, startInStep, reduxForStep, i, mode, () -> {
316 editVfModuleAndJustSetName(vfModule0Name, vfModule0UUID);
317 duplicateVnf(serviceData.vnfData, 2);
318 vidBasePage.screenshotDeployDialog(serviceInstanceName);
321 doReduxStep(reduxStates, randomAlphabetic, startInStep, reduxForStep, i, mode, () -> {
322 prepareServicePreset(macroSriovWithDynamicFieldsEcompNamingFalsePartialModelDetailsVnfEcompNamingFalse,
325 final String vfModuleName1 = "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0";
326 final String vfModuleName2 = "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1";
327 final String request1 = PresetMSOBaseCreateInstancePost.DEFAULT_REQUEST_ID;
328 final String request2 = "ce010256-3fdd-4cb5-aed7-37112a2c6e93";
329 final ImmutableMap<Keys, String> vars = ImmutableMap.<Keys, String>builder()
330 .put(Keys.SERVICE_NAME, serviceInstanceName)
331 .put(Keys.VNF_NAME, cleanSeparators("2017-488_PASQUALE-vPE", serviceData.vnfData.vnfInstanceName))
332 .put(Keys.VFM_NAME1, cleanSeparators(vfModuleName1 , "VF instance name ZERO"))
333 .put(Keys.VFM_NAME2, cleanSeparators(vfModuleName2 , "VF instance name"))
334 .put(Keys.VG_NAME, cleanSeparators(vfModuleName2 , "VF instance name") + "_vol_abc")
335 .put(Keys.VNF_NAME2, cleanSeparators(vnfName2, vnfInstanceName2))
337 registerExpectationFromPresets(ImmutableList.of(
338 // although "some legacy region" is provided for vnf, Service's region "hvf6" overrides it
339 PRESET_MTN6_TO_ATT_AIC,
340 new PresetMSOCreateServiceInstanceGen2WithNamesEcompNamingFalse(vars, 0, request1),
341 new PresetMSOCreateServiceInstanceGen2WithNamesEcompNamingFalse(vars, 1, request2)
342 ), SimulatorApi.RegistrationStrategy.APPEND);
344 deployAndVerifyModuleInPendingTableMacro(serviceInstanceName, request1, request2);
345 verifyOpenAuditInfo(serviceInstanceName);
346 verifyOpenViewEdit(serviceInstanceName);
347 verifyDeleteJob(serviceInstanceName);
348 verifyHideJob(serviceInstanceName);
353 @FeatureTogglingTest(FLAG_1908_INFRASTRUCTURE_VPN)
354 public void createNewServiceInstance_infraStructureVpn() {
355 String requestId = uuid();
356 String instanceId = uuid();
358 prepareServicePreset(infrastructureVpnService, false);
360 SimulatorApi.registerExpectationFromPresets(ImmutableList.of(
361 PRESET_MTN6_TO_ATT_AIC,
362 new PresetAAIGetL3NetworksByCloudRegionSpecificState("irma-aic", "hvf6", "bae71557c5bb4d5aac6743a4e5f1d054"),
363 new PresetAAIGetVpnsByType()
366 ServiceData serviceData = new ServiceData(
367 infrastructureVpnService.modelVersionId,
369 IS_GENERATED_NAMING.TRUE_BUT_GIVE_NAME_EITHER_WAY, true, true, false,
371 null, 0, null, new ArrayList<>(), null, false);
372 final String serviceInstanceName = createMacroService(serviceData, false);
374 SimulatorApi.registerExpectationFromPresets(ImmutableList.of(
375 PresetMsoCreateMacroCommonPre1806.ofServiceWithVRF(requestId, instanceId, serviceInstanceName),
376 new PresetMSOOrchestrationRequestGet(COMPLETE, requestId)
379 // Wizard pages of Network and VPN
380 Click.byTestIdOnceItsAvailable("10a74149-c9d7-4918-bbcf-d5fb9b1799ce", 20);
381 Click.byTestId("setMembersBtn");
382 GeneralUIUtils.ultimateWait();
384 Click.byTestIdOnceItsAvailable("120d39fb-3627-473d-913c-d228dd0f8e5b", 20);
385 Click.byTestId("setMembersBtn");
386 GeneralUIUtils.ultimateWait();
388 Assert.assertEquals(Get.byTestId("node-type-indicator").getText(),"VRF");
390 drawingBoardPage.deploy();
391 drawingBoardPage.verifyServiceCompletedOnTime(serviceInstanceName, "Service "+serviceInstanceName);
395 @FeatureTogglingTest(FLAG_1908_COLLECTION_RESOURCE_NEW_INSTANTIATION_UI)
396 public void createNewServiceInstance_collectionResource() {
397 prepareServicePreset(collectionResourceService, false);
398 String requestId = uuid();
399 String instanceId = uuid();
401 SimulatorApi.registerExpectationFromPresets(ImmutableList.of(
402 PRESET_MTN6_TO_ATT_AIC,
403 PresetMsoCreateMacroCommonPre1806.ofCollectionResource(requestId, instanceId),
404 new PresetMSOOrchestrationRequestGet(COMPLETE, requestId)
407 ServiceData serviceData = new ServiceData(
408 collectionResourceService.modelVersionId,
410 IS_GENERATED_NAMING.TRUE, true, true, false,
412 null, 0, null, new ArrayList<>(), null, false);
413 createMacroService(serviceData, false, randomAlphabetic(5), true, 1);
415 drawingBoardPage.deploy();
416 drawingBoardPage.verifyServiceCompletedOnTime("CR_sanity", "service with collection resource");
420 @FeatureTogglingTest(FLAG_1908_TRANSPORT_SERVICE_NEW_INSTANTIATION_UI)
421 public void createNewServiceInstance_transportService() {
422 prepareServicePreset(transportWithPnfsService, false);
423 String requestId = uuid();
424 String instanceId = uuid();
426 SimulatorApi.registerExpectationFromPresets(ImmutableList.of(
427 PresetMsoCreateMacroCommonPre1806.ofTransportService(requestId, instanceId),
428 new PresetMSOOrchestrationRequestGet(COMPLETE, requestId)
431 ServiceData serviceData = new ServiceData(
432 transportWithPnfsService.modelVersionId,
434 IS_GENERATED_NAMING.TRUE, true, true, false,
436 null, 0, null, new ArrayList<>(), null, false);
437 createMacroService(serviceData, false, randomAlphabetic(5), false, 1);
439 drawingBoardPage.deploy();
440 drawingBoardPage.verifyServiceCompletedOnTime("AIM Transport SVC_ym161f", "transport service");
444 @FeatureTogglingTest(FLAG_1902_VNF_GROUPING)
445 public void createNewServiceInstance_aLaCarte_VnfGrouping() {
447 String randomAlphabetic = randomAlphabetic(5);
449 ServiceData serviceData = new ServiceData(
450 aLaCarteVnfGroupingService.modelVersionId,
452 IS_GENERATED_NAMING.FALSE, false, true, false,
453 null, null, 0, null, ImmutableList.of(), null, false);
454 prepareServicePreset(aLaCarteVnfGroupingService, false);
456 createALaCarteService(serviceData, randomAlphabetic);
458 // this is the instance-name that createALaCarteService is using
459 String serviceInstanceName = randomAlphabetic + "instancename";
461 final String requestId = PresetMSOBaseCreateInstancePost.DEFAULT_REQUEST_ID;
462 final String serviceInstanceId = "d2391436-8d55-4fde-b4d5-72dd2cf13cgh";
463 final ImmutableMap<Keys, String> names = ImmutableMap.<Keys, String>builder()
464 .put(Keys.SERVICE_NAME, serviceInstanceName)
466 SimulatorApi.registerExpectationFromPresets(ImmutableList.of(
467 new PresetMSOCreateServiceInstanceGen2WithNamesAlacarteGroupingService(names, 0, requestId, serviceInstanceId, "us16807000"),
468 new PresetAAIPostNamedQueryForViewEdit(serviceInstanceId, serviceInstanceName, false, false)
469 ), SimulatorApi.RegistrationStrategy.APPEND);
471 drawingBoardPage.deploy();
472 verifyModuleInPendingTable(serviceInstanceName, requestId, null, ImmutableSet.of(IN_PROGRESS), false, false);
473 verifyModuleInPendingTable(serviceInstanceName, requestId, null, ImmutableSet.of(COMPLETED), false, true);
474 InstantiationStatusPage.verifyOpenNewViewEdit(serviceInstanceName, serviceInstanceId, aLaCarteVnfGroupingService.modelVersionId, "TYLER SILVIA", "e433710f-9217-458d-a79d-1c7aff376d89", "EDIT");
477 public interface Invoker{
481 private void doReduxStep(Map<String, String> reduxStates, String randomAlphabetic, int startInStep, String reduxForStep, MutableInt currentStep, String mode, Invoker todo) {
485 if (currentStep.getValue() < startInStep) {
486 // skip up to startInStep
488 } else if (currentStep.getValue() == startInStep) {
490 vidBasePage.setReduxState(reduxForStep);
492 vidBasePage.navigateTo("serviceModels.htm#/servicePlanning?serviceModelId=6b528779-44a3-4472-bdff-9cd15ec93450");
493 vidBasePage.goToIframe();
496 reduxStates.put(String.valueOf(currentStep), vidBasePage.getReduxState());
501 // log current redux state, before invocation
502 reduxStates.put(String.valueOf(currentStep), vidBasePage.getReduxState());
503 logger.info("reduxGator runtime reduxState for step {}:\n{}", currentStep, vidBasePage.getReduxState());
509 } catch (AssertionError | Exception e) {
510 throw new AssertionError(String.join("\n",
511 "Current step: " + currentStep,
512 "Random alphabetic: " + randomAlphabetic,
513 "Starting reduxState: " + reduxStates.get(String.valueOf(currentStep)),
514 "Current reduxState: " + vidBasePage.getReduxState()
518 logger.info("Cumulative reduxState: {}", reduxStates);
519 currentStep.increment();
523 //@Step("duplicate vnf")
524 private void duplicateVnf(VnfData vnfData, int count) {
525 hoverAndClickDuplicateButton(extractNodeToEdit(vnfData));
526 vidBasePage.screenshotDeployDialog("duplicateVnf-" + vnfData.vnfName);
527 List<WebElement> options = ((RemoteWebElement)Get.byId("duplicate-select")).findElementsByTagName("option");
528 assertThat(options.stream().map(x -> x.getText()).collect(Collectors.toList()), Matchers.contains("1","2"));
529 SelectOption.byIdAndVisibleText("duplicate-select", String.valueOf(count));
530 Click.byClassAndVisibleText("sdc-button__primary", "DUPLICATE");
533 private String cleanSeparators(String... s) {
534 return String.join("", s).replace(" ", "");
537 //@Step("edit vf module and just set name")
538 private void editVfModuleAndJustSetName(String vfModuleName, String vfModuleUUID) {
539 hoverAndClickEditButton(vfModuleUUID + "-" + vfModuleName);
540 Input.text("VF instance name ZERO", "instanceName");
541 Click.byTestId(VNF_SET_BUTTON_TEST_ID);
545 public void createNewServiceInstance_macro_validPopupDataAndUI__ecompNamingServiceFalseVnfTrue_vgNameFalse() {
546 ServiceData serviceData = new ServiceData(
547 macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetails.modelVersionId,
549 IS_GENERATED_NAMING.FALSE, true, false, true,
550 "2017-488_PASQUALE-vPE 0",
551 vfModule0Name, 1, "1", new ArrayList<>(), vfModule0UUID, false);
553 prepareServicePreset(macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetails, false);
555 final String serviceInstanceName = createMacroService(serviceData, true);
556 createVnf(serviceData, true, serviceInstanceName);
557 createVfModule(serviceData, serviceInstanceName, true, false);
562 public void createNewServiceInstance_macro_validPopupDataAndUI__ecompNamingServiceFalseVnfFalse_vgNameFalse() {
563 ServiceData serviceData = new ServiceData(
564 macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetailsVnfEcompNamingFalse.modelVersionId,
566 IS_GENERATED_NAMING.FALSE, false, false, false,
567 "2017-488_PASQUALE-vPE 0",
568 vfModule0Name, 1, "1", new ArrayList<>(), vfModule0UUID, false);
570 prepareServicePreset(macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetailsVnfEcompNamingFalse, false);
572 final String serviceInstanceName = createMacroService(serviceData, true);
573 createVnf(serviceData, true, serviceInstanceName);
574 createVfModule(serviceData, serviceInstanceName, true, false);
579 public void createNewServiceInstance_macro_validPopupDataAndUI__ecompNamingServiceFalseVnfFalse_vgNameTrue() throws Exception {
580 ServiceData serviceData = new ServiceData(
581 macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetailsVnfEcompNamingFalse.modelVersionId,
583 IS_GENERATED_NAMING.FALSE, false, true, false,
584 "2017-488_PASQUALE-vPE 0",
585 "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", 0,
586 NO_MAX_INSTANCES_IN_MODEL, new ArrayList<>(), "25284168-24bb-4698-8cb4-3f509146eca5", false);
588 prepareServicePreset(macroSriovNoDynamicFieldsEcompNamingFalseFullModelDetailsVnfEcompNamingFalse, false);
590 final String serviceInstanceName = createMacroService(serviceData, true);
591 createVnf(serviceData, true, serviceInstanceName);
592 clickRemoveVfModule(vfModule0UUID, vfModule0Name);
593 createVfModule(serviceData, serviceInstanceName, false, true);
598 @FeatureTogglingTest(FLAG_2002_ANY_ALACARTE_BESIDES_EXCLUDED_NEW_INSTANTIATION_UI)
599 public void createNewServiceInstance_aLaCarte_WithVnf() {
600 final ModelInfo serviceModelInfo = ModelInfo.aLaCarteServiceCreationNewUI;
601 String serviceInstanceName = "ALaCarteWithVnf"+randomAlphabetic(5);
602 String vnfInstanceName= "VnfForALaCarte"+randomAlphabetic(5);
603 VnfData vnfData = new VnfData("vOCG_1804_VF 0", "aca3f7b1-15f9-45a5-b182-b8b5aca84a76", vnfInstanceName, true);
604 VfData vfmData = new VfData("vocg_1804_vf0..Vocg1804Vf..base_ocg..module-0", false, 1, "1", emptyList(), "815db6e5-bdfd-4cb6-9575-82c36df8747a", null);
605 ServiceData serviceData = new ServiceData(IS_GENERATED_NAMING.TRUE, vnfData, vfmData, true);
607 resetGetServicesCache();
609 prepareServicePreset(serviceModelInfo, true);
611 String requestorID = getUserCredentials().getUserId();
613 String serviceRequestId = uuid();
614 String serviceInstanceId = uuid();
615 String vnfRequestId = uuid();
616 String vnfInstanceId = uuid();
617 String vfm0RequestId = uuid();
618 String vfm0InstanceId = uuid();
619 String vg1RequestId = uuid();
620 String vg1InstanceId = uuid();
621 String vfm1RequestId = uuid();
622 String vfm1InstanceId = uuid();
623 String vfm12RequestId = uuid();
624 String vfm12InstanceId = uuid();
626 ModelInfoWithCustomization vfm0 = new ModelInfoWithCustomization(
627 "815db6e5-bdfd-4cb6-9575-82c36df8747a",
628 "e9c795c8-6b98-4db3-bd90-a84b8ca5181b",
629 "Vocg1804Vf..base_ocg..module-0",
632 "Vocg1804Vf..base_ocg..module-0",
633 "a7b333d7-7633-4197-b40d-80fcfcadee94");
635 ModelInfoWithCustomization vg1 = new ModelInfoWithCustomization(
636 "9c219e70-1177-494b-8977-1395c9f9168c",
637 "0ad14d60-98b6-4575-a9b8-458a796c3f98",
638 "Vocg1804Vf..ocgmgr..module-1",
641 "Vocg1804Vf..ocgmgr..module-1",
642 "f332f3ce-434d-4084-a1e7-5261c16d4940"
645 ModelInfoWithCustomization vfm1 = new ModelInfoWithCustomization(
646 "9c219e70-1177-494b-8977-1395c9f9168c",
647 "0ad14d60-98b6-4575-a9b8-458a796c3f98",
648 "Vocg1804Vf..ocgmgr..module-1",
651 "Vocg1804Vf..ocgmgr..module-1",
652 "f332f3ce-434d-4084-a1e7-5261c16d4940"
655 ModelInfoWithCustomization vfm12 = new ModelInfoWithCustomization(
656 "b601eef4-62fd-4201-a788-ae30e06a1aec",
657 "e3cb8b85-7a3c-4897-b20b-70640c26d671",
658 "Vocg1804Vf..ocgapp_001..module-12",
661 "Vocg1804Vf..ocgapp_001..module-12",
662 "fcc82961-865e-4d38-9c7a-207c511405b6"
665 final String vgName = "vg_for_module1";
667 String vgRelatedInstance = ",{\"relatedInstance\": {"
668 + " \"modelInfo\": {"
669 + " \"modelType\": \"volumeGroup\""
671 + " \"instanceId\": \""+vg1InstanceId+"\","
672 + " \"instanceName\": \""+vgName+"\""
676 registerExpectationFromPresets(
678 new PresetMSOCreateServiceInstanceAlacarte(
679 ImmutableMap.of(Keys.SERVICE_NAME, serviceInstanceName),
680 serviceRequestId, serviceInstanceId,
681 requestorID, serviceModelInfo),
682 PRESET_SOME_LEGACY_REGION_TO_ATT_AIC,
683 new PresetMSOOrchestrationRequestGet(COMPLETE, serviceRequestId),
684 new PresetMSOCreateVnfALaCarteE2E(vnfRequestId, serviceInstanceId, vnfInstanceId, "ONAP", requestorID, serviceModelInfo),
685 new PresetMSOOrchestrationRequestGet(COMPLETE, vnfRequestId),
686 PRESET_MTN6_TO_ATT_AIC,
687 new PresetMSOCreateVfModuleALaCarteE2E(vfm0RequestId, vfm0InstanceId, serviceInstanceId, vnfInstanceId, requestorID, serviceModelInfo, null, vfm0, null),
688 new PresetMSOOrchestrationRequestGet(COMPLETE, vfm0RequestId),
689 new PresetMSOCreateVfModuleALaCarteE2E(vg1RequestId, vg1InstanceId, serviceInstanceId, vnfInstanceId, requestorID, serviceModelInfo, vgName, vg1, null),
690 new PresetMSOOrchestrationRequestGet(COMPLETE, vg1RequestId),
691 new PresetMSOCreateVfModuleALaCarteE2E(vfm1RequestId, vfm1InstanceId, serviceInstanceId, vnfInstanceId, requestorID, serviceModelInfo, null, vfm1, vgRelatedInstance),
692 new PresetMSOOrchestrationRequestGet(COMPLETE, vfm1RequestId),
693 new PresetMSOCreateVfModuleALaCarteE2E(vfm12RequestId, vfm12InstanceId, serviceInstanceId, vnfInstanceId, requestorID, serviceModelInfo, null, vfm12, null),
694 new PresetMSOOrchestrationRequestGet(COMPLETE, vfm12RequestId)
699 loadServicePopup(serviceModelInfo.modelVersionId);
700 fillALaCarteServicePopup(serviceInstanceName);
702 createVnf(vnfData, false, serviceInstanceName);
703 createVfModule(serviceData, serviceInstanceName, true, false);
704 serviceData.vfData = new VfData("vocg_1804_vf0..Vocg1804Vf..ocgmgr..module-1", true, 0, NO_MAX_INSTANCES_IN_MODEL, emptyList(), "9c219e70-1177-494b-8977-1395c9f9168c", vgName);
705 createVfModule(serviceData, serviceInstanceName, false, false);
706 serviceData.vfData = new VfData("vocg_1804_vf0..Vocg1804Vf..ocgapp_001..module-12", true, 0, NO_MAX_INSTANCES_IN_MODEL, emptyList(), "b601eef4-62fd-4201-a788-ae30e06a1aec", null);
707 createVfModule(serviceData, serviceInstanceName, false, false);
708 drawingBoardPage.deploy();
709 drawingBoardPage.verifyServiceCompletedOnTime(serviceInstanceName, "service "+serviceInstanceName);
713 @FeatureTogglingTest(FLAG_5G_IN_NEW_INSTANTIATION_UI)
714 public void createNewServiceInstance_aLaCarte_withNetwork_validPopupDataAndUI() {
715 String serviceInstanceName = "NcService"+randomAlphabetic(5);
716 String networkInstanceName= "NcNetowrk"+randomAlphabetic(5);
717 String defactoNetworkInstanceName = "ExtVL"+networkInstanceName;
719 prepareServicePreset(aLaCarteNetworkProvider5G, true);
720 String serviceRequestId = uuid();
721 String networkRequestId = uuid();
722 String requestorID = getUserCredentials().getUserId();
723 registerExpectationFromPresets(
725 new PresetMSOCreateServiceInstanceAlacarte(
726 ImmutableMap.of(Keys.SERVICE_NAME, serviceInstanceName),
727 serviceRequestId, DEFAULT_SERVICE_INSTANCE_ID,
728 requestorID, aLaCarteNetworkProvider5G),
729 new PresetMSOOrchestrationRequestGet(COMPLETE, serviceRequestId),
730 PRESET_SOME_LEGACY_REGION_TO_ATT_AIC,
731 new PresetMSOCreateNetworkALaCarte5G(networkRequestId, DEFAULT_SERVICE_INSTANCE_ID, defactoNetworkInstanceName, requestorID),
732 new PresetMSOOrchestrationRequestGet(COMPLETE, networkRequestId),
733 new PresetMSOOrchestrationRequestsGet5GServiceInstanceAndNetwork(
734 new ResponseDetails(serviceInstanceName, serviceRequestId, COMPLETE, "service"),
735 new ResponseDetails(defactoNetworkInstanceName, networkRequestId, COMPLETE, "network"),
736 DEFAULT_SERVICE_INSTANCE_ID)
740 loadServicePopup(aLaCarteNetworkProvider5G.modelVersionId);
741 fillALaCarteServicePopup(serviceInstanceName);
742 VnfData networkData = new VnfData("SR-IOV Provider-1", "840ffc47-e4cf-46de-8e23-525fd8c6fdc3", defactoNetworkInstanceName, false);
743 createNetwork(networkData, false, false, serviceInstanceName);
745 drawingBoardPage.deploy();
746 drawingBoardPage.verifyServiceCompletedOnTime(serviceInstanceName, "service "+serviceInstanceName);
749 private void fillALaCarteServicePopup(String serviceInstanceName) {
750 BrowseASDCPage browseASDCPage = new BrowseASDCPage();
751 WebElement instanceNameInput = Get.byId("instanceName");
752 instanceNameInput.sendKeys(serviceInstanceName);
753 VidBasePage.selectSubscriberById("e433710f-9217-458d-a79d-1c7aff376d89");
754 String serviceType = "TYLER SILVIA";
755 Wait.waitByClassAndText(Constants.CreateNewInstance.SERVICE_TYPE_OPTION_CLASS, serviceType, 30);
756 browseASDCPage.selectServiceTypeByName(serviceType);
757 SelectOption.byTestIdAndVisibleText("WayneHolland", (Constants.OwningEntity.OWNING_ENTITY_SELECT_TEST_ID));
758 SelectOption.byTestIdAndVisibleText("WATKINS", Constants.OwningEntity.PROJECT_SELECT_TEST_ID);
759 Click.byTestId("form-set");
760 VidBasePage.goOutFromIframe();
761 browseASDCPage.goToIframe();
765 public void createNewServiceInstance_macro_validPopupDataAndUI() {
767 List<String> serviceDynamicFields = Arrays.asList("2017488 pasqualevpe0 asn:");
768 ServiceData serviceData = new ServiceData(
769 macroSriovWithDynamicFieldsEcompNamingTruePartialModelDetails.modelVersionId,
770 serviceDynamicFields,
771 IS_GENERATED_NAMING.TRUE, true, true, false,
772 "2017-488_PASQUALE-vPE 0",
773 "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", 0,
774 NO_MAX_INSTANCES_IN_MODEL, new ArrayList<>(),
775 "25284168-24bb-4698-8cb4-3f509146eca5", false);
777 prepareServicePreset(macroSriovWithDynamicFieldsEcompNamingTruePartialModelDetails, false);
779 final String serviceInstanceName = createMacroService(serviceData, true);
780 createVnf(serviceData, true, serviceInstanceName);
781 clickRemoveVfModule(vfModule0UUID, vfModule0Name);
782 createVfModule(serviceData, serviceInstanceName, false, false);
786 //@Step("deploy and verify module in pending table")
787 private void deployAndVerifyModuleInPendingTableMacro(String serviceInstanceName, String requestId1, String requestId2) {
788 drawingBoardPage.deploy();
790 boolean simulatorUpdated = false;
792 int[] ids = {0, 0, 1, 2};
793 String[] statuses = {IN_PROGRESS, COMPLETED, IN_PROGRESS, PENDING};
794 for (int i = 0; i < ids.length; i++) {
795 String actualInstanceName = getActualInstanceName(serviceInstanceName, ids[i]);
796 verifyModuleInPendingTable(actualInstanceName, requestId1, requestId2, ImmutableSet.of(statuses[i]), true, simulatorUpdated);
797 simulatorUpdated = true;
799 vidBasePage.screenshotDeployDialog(serviceInstanceName);
802 private void verifyModuleInPendingTable(String serviceInstanceName, String requestId1, String requestId2, Set<String> expectedStatuses, boolean isMacro, boolean simulatorUpdated) {
803 DrawingBoardPage.ServiceStatusChecker serviceStatusChecker = new DrawingBoardPage.ServiceStatusChecker(serviceInstanceName, expectedStatuses);
804 boolean statusIsShown = Wait.waitFor(serviceStatusChecker, null, 20, 2);
805 final String assertionMessage = String.format("service %s: none of rowClasses [%s] is in expectedStatuses: [%s] ",
807 String.join(",", serviceStatusChecker.getColumnClassesSet()),
808 String.join(",", expectedStatuses));
810 assertTrue(assertionMessage, statusIsShown);
813 InstantiationStatusPage.assertInstantiationStatusRow(
814 serviceInstanceName, expectedRowFields(serviceInstanceName));
816 InstantiationStatusPage.assertInstantiationStatusRow(
817 serviceInstanceName, expectedALaCarteRowFields(serviceInstanceName));
820 if (!simulatorUpdated) {
821 if (requestId2 != null) {
822 registerExpectationFromPreset(new PresetMSOOrchestrationRequestGet(IN_PROGRESS, requestId2), APPEND);
824 registerExpectationFromPreset(new PresetMSOOrchestrationRequestGet("COMPLETE", requestId1), APPEND);
826 vidBasePage.screenshotDeployDialog(serviceInstanceName);
829 private String getActualInstanceName(String serviceInstanceName, Integer i) {
830 return i==0 ? serviceInstanceName : serviceInstanceName + "_00" + i;
833 //@Step("verify open view edit")
834 private void verifyOpenViewEdit(String serviceInstanceName) {
835 boolean[] openEnabled = {true, false, false};
836 ImmutableList.of(0, 1, 2).forEach(i -> {
837 String actualInstanceName = getActualInstanceName(serviceInstanceName, i);
838 if (Features.FLAG_1902_NEW_VIEW_EDIT.isActive() || FLAG_1908_MACRO_NOT_TRANSPORT_NEW_VIEW_EDIT.isActive()) {
839 InstantiationStatusPage.verifyOpenNewViewEdit(actualInstanceName, openEnabled[i], "EDIT");
842 vidBasePage.verifyOpenOldViewEdit(actualInstanceName, null, openEnabled[i], true, true);
847 //@Step("verify open audit info")
848 private void verifyOpenAuditInfo(String serviceInstanceName) {
849 boolean auditInfoEnabled = true;
850 String[] statuses = {COMPLETED, IN_PROGRESS, PENDING};
851 for (Integer i : ImmutableList.of(0, 1, 2)) {
852 String actualInstanceName = getActualInstanceName(serviceInstanceName, i);
853 InstantiationStatusPage.checkMenuItem(actualInstanceName, Constants.InstantiationStatus.CONTEXT_MENU_HEADER_AUDIT_INFO_ITEM, auditInfoEnabled, contextMenuOpen -> {
854 Click.byTestId(contextMenuOpen);
855 checkAuditInfoModal(actualInstanceName, i, statuses);
857 final WebElement row = InstantiationStatusPage.getInstantiationStatusRow(actualInstanceName);
858 row.findElement(By.id(Constants.InstantiationStatus.TD_JOB_STATUS_ICON + "-" + (i))).click();
859 checkAuditInfoModal(actualInstanceName, i, statuses);
863 private void checkAuditInfoModal(String actualInstanceName, Integer i, String[] statuses) {
865 Wait.waitByTestId("vidJobStatus", 10);
867 WebElement webElement = Get.byTestId("model-item-value-serviceInstanceName");
868 assertEquals(webElement.getText(), actualInstanceName, "Service Instance Name must be equal");
870 WebElement vidTableElement = Get.byId("service-instantiation-audit-info-vid");
871 assertEquals(3, vidTableElement.findElement(By.tagName("thead")).findElements(By.tagName("th")).size(), "VID table must contain 3 columns");
873 List<WebElement> vidStatusesElements = vidTableElement.findElements(By.id("vidJobStatus"));
874 List<String> vidStatuses = vidStatusesElements.stream()
876 convertUITextCapitalizeAndFormatPipe(s.getText()))
877 .collect(Collectors.toList());
879 List<String> serviceStatus = Arrays.asList(Arrays.copyOfRange(statuses, i, statuses.length));
880 assertThat("statuses for " + actualInstanceName + " must be as expected", vidStatuses, containsInAnyOrder(serviceStatus.toArray()));
881 String dateString = vidTableElement.findElements(By.id("vidStatusTime")).get(0).getText();
882 assertTrue("vid Status Time column must contains valid date in format : MMM dd, yyyy HH:mm", isDateValid(dateString, "MMM dd, yyyy HH:mm"));
884 WebElement MSOTableElement = Get.byId("service-instantiation-audit-info-mso");
885 assertEquals(3, MSOTableElement.findElement(By.tagName("thead")).findElements(By.tagName("th")).size(), "MSO table must contain 3 columns");
887 if (statuses[i].equals(PENDING)) {
888 assertEquals(0, MSOTableElement.findElement(By.tagName("tbody")).findElements(By.tagName("tr")).size(), "When status is PENDING MSO table is empty");
891 vidBasePage.screenshotDeployDialog("audit-info-" + actualInstanceName);
892 Click.byId(Constants.AuditInfoModal.CANCEL_BUTTON);
895 private String convertUITextCapitalizeAndFormatPipe(String text) {
896 return text.toUpperCase().replace("-", "_");
899 private boolean isDateValid(String dateToValidate, String dateFromat) {
901 if (dateToValidate == null) {
904 SimpleDateFormat sdf = new SimpleDateFormat(dateFromat);
905 sdf.setLenient(false);
907 //if not valid, it will throw ParseException
908 Date date = sdf.parse(dateToValidate);
910 } catch (ParseException e) {
917 //@Step("verifyDeleteJob")
918 private void verifyDeleteJob(String serviceInstanceName) {
919 boolean[] deleteEnabled = {false, false, true};
920 String[] statuses = {COMPLETED, IN_PROGRESS, PENDING};
921 verifyDeleteOrHideOperation(serviceInstanceName, Constants.InstantiationStatus.CONTEXT_MENU_REMOVE, statuses, deleteEnabled, "deleted");
924 //@Step("verify hide job")
925 private void verifyHideJob(String serviceInstanceName) {
926 boolean[] hideEnabled = {true, false};
927 String[] statuses = {COMPLETED, IN_PROGRESS};
928 verifyDeleteOrHideOperation(serviceInstanceName, Constants.InstantiationStatus.CONTEXT_MENU_HIDE, statuses, hideEnabled, "hidden");
931 private void verifyDeleteOrHideOperation(String serviceInstanceName, String contextMenuItem, String[] statuses, boolean[] operationEnabled, String operationName) {
932 for (int i = 0; i < statuses.length; i++) {
933 String actualInstanceName = getActualInstanceName(serviceInstanceName, i);
934 InstantiationStatusPage.checkMenuItem(actualInstanceName, contextMenuItem, operationEnabled[i], contextMenuDelete -> {
935 Click.byTestId(contextMenuDelete);
936 GeneralUIUtils.ultimateWait();
937 assertNull(actualInstanceName + " should be " + operationName,
938 InstantiationStatusPage.getInstantiationStatusRow(actualInstanceName));
941 vidBasePage.screenshotDeployDialog(serviceInstanceName);
944 private ImmutableMap<String, String> expectedRowFields(String actualInstanceName) {
945 return ImmutableMap.<String, String>builder()
946 .put("userId", getUserCredentials().getUserId())
947 .put("serviceModelName", "action-data")
948 .put("serviceInstanceName", actualInstanceName)
949 .put("serviceModelVersion", "1.0")
950 .put("subscriberName", "SILVIA ROBBINS")
951 .put("serviceType", "TYLER SILVIA")
952 .put("regionId", "hvf6")
953 .put("tenantName", "AIN Web Tool-15-D-testalexandria")
954 .put("aicZoneName", "NFTJSSSS-NFT1")
955 .put("project", "WATKINS")
956 .put("owningEntityName", "WayneHolland")
957 .put("pause", "false")
961 private ImmutableMap<String, String> expectedALaCarteRowFields(String actualInstanceName) {
962 return ImmutableMap.<String, String>builder()
963 .put("userId", getUserCredentials().getUserId())
964 .put("serviceModelName", "Grouping Service for Test")
965 .put("serviceInstanceName", actualInstanceName)
966 .put("serviceModelVersion", "1.0")
967 .put("subscriberName", "SILVIA ROBBINS")
968 .put("serviceType", "TYLER SILVIA")
969 .put("project", "WATKINS")
970 .put("owningEntityName", "WayneHolland")
971 .put("pause", "false")
975 //@Step("create sriov service")
976 private String createMacroService(ServiceData serviceData, boolean tryCancelsAndReentries) {
977 return createMacroService(serviceData, tryCancelsAndReentries, randomAlphabetic(5), true, 3);
980 //@Step("create sriov service")
981 private String createMacroService(ServiceData serviceData, boolean tryCancelsAndReentries, String randomAlphabetic, boolean fillLcpRegionAndTenantAndZone, int bulkSize) {
982 BrowseASDCPage browseASDCPage = new BrowseASDCPage();
983 User user = usersService.getUser(Constants.Users.SILVIA_ROBBINS_TYLER_SILVIA);
985 // simulate typing with spaces, but expected is without spaces
986 String serviceInstanceNameWithSpaces = randomAlphabetic + " instance name";
987 String serviceInstanceName = cleanSeparators(serviceInstanceNameWithSpaces);
989 List<String> cycles = tryCancelsAndReentries ? ImmutableList.of("WILL_CANCEL", "AFTER_CANCEL") : ImmutableList.of("SINGLE_SHOT");
990 cycles.forEach(cycle -> {
991 if ("AFTER_CANCEL".equals(cycle)) {
992 loadServicePopupOnBrowseASDCPage(serviceData.modelUuid);
994 loadServicePopup(serviceData.modelUuid);
997 WebElement instanceName = Get.byId("instanceName");
998 boolean isRequired = isElementByIdRequired("instanceName-label");
999 if (serviceData.isGeneratedNaming == IS_GENERATED_NAMING.TRUE || serviceData.isGeneratedNaming == IS_GENERATED_NAMING.TRUE_BUT_GIVE_NAME_EITHER_WAY) {
1000 Assert.assertNotNull(instanceName, "instance name input should be visible when serviceEcompNaming == true.");
1001 Assert.assertFalse(isRequired,"instance name input should be optional when ecompNaming == true.");
1003 Assert.assertTrue(isRequired,"instance name input should be required when serviceEcompNaming == false.");
1006 if (serviceData.isGeneratedNaming == IS_GENERATED_NAMING.FALSE || serviceData.isGeneratedNaming == IS_GENERATED_NAMING.TRUE_BUT_GIVE_NAME_EITHER_WAY) {
1007 instanceName.sendKeys(serviceInstanceName);
1009 String setButtonTestId = "form-set";
1011 //serviceType should be dependent on subscriber selection
1012 assertElementDisabled("serviceType-select");
1013 Wait.waitByClassAndText(Constants.CreateNewInstance.SUBSCRIBER_NAME_OPTION_CLASS, "SILVIA ROBBINS", 30);
1014 GeneralUIUtils.ultimateWait();
1015 Click.byTestId(Constants.SUBSCRIBER_NAME_SELECT_TESTS_ID);
1016 if (Features.FLAG_RESTRICTED_SELECT.isActive())
1017 assertElementExistAccordingTagNameAndTestId("select", Constants.SUBSCRIBER_SELECT_ID);
1019 assertDropdownPermittedItemsByLabel(user.subscriberNames, Constants.CreateNewInstance.SUBSCRIBER_NAME_OPTION_CLASS);
1022 VidBasePage.selectSubscriberById("e433710f-9217-458d-a79d-1c7aff376d89");
1023 //lcpRegion should be dependent on serviceType selection
1024 assertElementDisabled("lcpRegion-select");
1026 String serviceType = "TYLER SILVIA";
1027 Wait.waitByClassAndText(Constants.CreateNewInstance.SERVICE_TYPE_OPTION_CLASS, serviceType, 30);
1028 browseASDCPage.selectServiceTypeByName(serviceType);
1030 String owningEntity = "WayneHolland";
1031 GeneralUIUtils.ultimateWait();
1032 Wait.waitByClassAndText(Constants.CreateNewInstance.OWNING_ENTITY_OPTION, owningEntity, 30);
1033 SelectOption.byTestIdAndVisibleText(owningEntity, (Constants.OwningEntity.OWNING_ENTITY_SELECT_TEST_ID));
1034 assertSetButtonDisabled(setButtonTestId);
1036 SelectOption.byTestIdAndVisibleText("ERICA", Constants.ViewEdit.PRODUCT_FAMILY_SELECT_TESTS_ID);
1037 browseASDCPage.selectProductFamily("e433710f-9217-458d-a79d-1c7aff376d89");
1039 if (fillLcpRegionAndTenantAndZone) {
1041 //we assume that if fillLcpRegionAndTenantAndZone is true tenant and lcpRegion are required for this service model
1042 //If you want to fill lcpRegionAndTenant where they are optional you can refactor this test...
1043 assertSetButtonDisabled(setButtonTestId);
1045 //tenant should be dependent on lcpRegion selection
1046 assertElementDisabled("tenant-select");
1048 String lcpRegion = "hvf6";
1049 Wait.waitByClassAndText("lcpRegionOption", lcpRegion, 30);
1050 viewEditPage.selectLcpRegion(lcpRegion, AIC);
1052 GeneralUIUtils.ultimateWait();
1053 browseASDCPage.selectTenant("bae71557c5bb4d5aac6743a4e5f1d054");
1055 browseASDCPage.selectAicZone("NFT1");
1058 assertSetButtonEnabled(setButtonTestId);
1061 SelectOption.byTestIdAndVisibleText("WATKINS", Constants.OwningEntity.PROJECT_SELECT_TEST_ID);
1063 assertNotificationAreaVisibilityBehaviourAndSetBulkSize(bulkSize);
1066 assertPauseOnPausePointsVisibility(serviceData.multiStageDesign);
1068 validateDynamicFields(serviceData.dynamicFields);
1070 vidBasePage.screenshotDeployDialog("createMacroService-" + serviceInstanceName);
1072 if ("WILL_CANCEL".equals(cycle)) {
1073 Click.byTestId(Constants.CANCEL_BUTTON_TEST_ID);
1075 Click.byTestId(setButtonTestId);
1078 VidBasePage.goOutFromIframe();
1080 browseASDCPage.goToIframe();
1083 return serviceInstanceName;
1086 private String createALaCarteService(ServiceData serviceData, String randomAlphabetic) {
1087 BrowseASDCPage browseASDCPage = new BrowseASDCPage();
1088 User user = usersService.getUser(Constants.Users.SILVIA_ROBBINS_TYLER_SILVIA);
1090 // simulate typing with spaces, but expected is without spaces
1091 String serviceInstanceNameWithSpaces = randomAlphabetic + " instance name";
1092 String serviceInstanceName = cleanSeparators(serviceInstanceNameWithSpaces);
1094 loadServicePopup(serviceData.modelUuid);
1096 WebElement instanceName = Get.byId("instanceName");
1097 if (serviceData.isGeneratedNaming == IS_GENERATED_NAMING.TRUE || serviceData.isGeneratedNaming == IS_GENERATED_NAMING.TRUE_BUT_GIVE_NAME_EITHER_WAY) {
1098 Assert.assertNull(instanceName, "instance name input should be invisible when serviceEcompNaming == true.");
1100 if (serviceData.isGeneratedNaming == IS_GENERATED_NAMING.FALSE || serviceData.isGeneratedNaming == IS_GENERATED_NAMING.TRUE_BUT_GIVE_NAME_EITHER_WAY) {
1101 instanceName.sendKeys(serviceInstanceName);
1104 //serviceType should be dependent on subscriber selection
1105 assertElementDisabled("serviceType-select");
1106 Wait.waitByClassAndText(Constants.CreateNewInstance.SUBSCRIBER_NAME_OPTION_CLASS, "SILVIA ROBBINS", 30);
1107 GeneralUIUtils.ultimateWait();
1108 Click.byTestId(Constants.SUBSCRIBER_NAME_SELECT_TESTS_ID);
1109 if (Features.FLAG_RESTRICTED_SELECT.isActive())
1110 assertElementExistAccordingTagNameAndTestId("select", Constants.SUBSCRIBER_SELECT_ID);
1112 assertDropdownPermittedItemsByLabel(user.subscriberNames, Constants.CreateNewInstance.SUBSCRIBER_NAME_OPTION_CLASS);
1115 VidBasePage.selectSubscriberById("e433710f-9217-458d-a79d-1c7aff376d89");
1117 String serviceType = "TYLER SILVIA";
1118 Wait.waitByClassAndText(Constants.CreateNewInstance.SERVICE_TYPE_OPTION_CLASS, serviceType, 30);
1119 browseASDCPage.selectServiceTypeByName(serviceType);
1121 String setButtonTestId = "form-set";
1122 assertSetButtonDisabled(setButtonTestId);
1124 SelectOption.byTestIdAndVisibleText("WayneHolland", (Constants.OwningEntity.OWNING_ENTITY_SELECT_TEST_ID));
1126 SelectOption.byTestIdAndVisibleText("WATKINS", Constants.OwningEntity.PROJECT_SELECT_TEST_ID);
1128 validateDynamicFields(serviceData.dynamicFields);
1130 vidBasePage.screenshotDeployDialog("createALaCarteService-" + serviceInstanceName);
1132 Click.byTestId(setButtonTestId);
1134 VidBasePage.goOutFromIframe();
1136 browseASDCPage.goToIframe();
1138 return serviceInstanceName;
1141 private void assertElementExistAccordingTagNameAndTestId(String tag, String testId) {
1142 WebElement webElement = Get.byId(testId);
1143 Assert.assertEquals(webElement.getTagName(), tag);
1146 //@Step("create vnf")
1147 private void createVnf(ServiceData serviceData, boolean tryCancelsAndReentries, String serviceInstanceName) {
1148 createVnf(serviceData.vnfData, tryCancelsAndReentries, serviceInstanceName);
1151 private void createNetwork(VnfData vnfData, boolean tryCancelsAndReentries, boolean addedByDefault, String serviceInstanceName) {
1152 createVnf(vnfData, tryCancelsAndReentries, addedByDefault, serviceInstanceName, true);
1155 private void createVnf(VnfData vnfData, boolean tryCancelsAndReentries, String serviceInstanceName) {
1156 createVnf(vnfData, tryCancelsAndReentries, true, serviceInstanceName, false);
1159 private void createVnf(VnfData vnfData, boolean tryCancelsAndReentries, boolean addedByDefault, String serviceInstanceName, boolean isNetwork) {
1160 BrowseASDCPage browseASDCPage = new BrowseASDCPage();
1162 String nodeToEdit = extractNodeToEdit(vnfData);
1163 if (addedByDefault) {
1164 hoverAndClickEditButton(nodeToEdit);
1166 drawingBoardPage.clickAddButtonByNodeName(vnfData.vnfName);
1169 GeneralUIUtils.ultimateWait();
1171 if (vnfData.isGeneratedNaming) {
1172 Assert.assertFalse(isElementByIdRequired("instanceName-label") ,"instance name input should be optional when EcompNaming == true, and required when false.");
1174 Input.text(vnfData.vnfInstanceName, "instanceName");
1178 //tenant should be dependent on lcpRegion selection
1179 assertElementDisabled("tenant-select");
1181 WebElement legacyRegion = Get.byTestId("lcpRegionText");
1182 Assert.assertNull(legacyRegion, "legacy region shouldn't be visible when lcp region isn't AAIAIC25,olson3 or olson5a.");
1184 browseASDCPage.selectLcpRegion("AAIAIC25");
1186 legacyRegion = Get.byTestId("lcpRegionText");
1187 Assert.assertNotNull(legacyRegion, "legacy region should be visible when lcp region is AAIAIC25,olson3 or olson5a.");
1189 browseASDCPage.selectTenant("092eb9e8e4b7412e8787dd091bc58e86");
1191 assertSetButtonDisabled(VNF_SET_BUTTON_TEST_ID);
1194 browseASDCPage.selectPlatform("platform");
1196 SelectOption.selectOptionsFromMultiselectById("multi-selectPlatform", ImmutableList.of("platform"));
1199 browseASDCPage.selectLineOfBusiness("ONAP");
1200 assertSetButtonEnabled(VNF_SET_BUTTON_TEST_ID);
1202 browseASDCPage.setLegacyRegion("some legacy region");
1205 Wait.waitByTestId("model-item-value-subscriberName", 10);
1206 Assert.assertEquals(Get.byTestId("model-item-value-subscriberName").getText(), "SILVIA ROBBINS", "Subscriber name should be shown in vf module");
1207 if (!vnfData.isGeneratedNaming) {
1208 Assert.assertEquals(Get.byTestId("model-item-value-serviceName").getText(), serviceInstanceName, "Subscriber name should be shown in vf module");
1211 vidBasePage.screenshotDeployDialog("createVnf-" + serviceInstanceName);
1212 Click.byTestId(VNF_SET_BUTTON_TEST_ID);
1216 if (tryCancelsAndReentries) {
1217 hoverAndClickEditButton(nodeToEdit);
1219 Wait.byText("TYLER SILVIA");
1220 GeneralUIUtils.ultimateWait();
1221 assertThat(Get.selectedOptionText(Constants.ViewEdit.LCP_REGION_SELECT_TESTS_ID), startsWith("AAIAIC25"));
1222 Assert.assertEquals(Get.selectedOptionText(Constants.ViewEdit.TENANT_SELECT_TESTS_ID), "USP-SIP-IC-24335-T-01");
1223 Assert.assertEquals(Get.selectedOptionText(Constants.ViewEdit.LINE_OF_BUSINESS_SELECT_TESTS_ID), "ONAP");
1225 Assert.assertTrue(Get.isOptionSelectedInMultiSelect(Constants.OwningEntity.PLATFORM_MULTI_SELECT_TEST_ID, "platform"));
1227 Click.byTestId(Constants.CANCEL_BUTTON_TEST_ID);
1228 GeneralUIUtils.ultimateWait();
1230 toggleItemInTree(Constants.DrawingBoard.AVAILABLE_MODELS_TREE);
1232 Click.byTestId("node-" + nodeToEdit);
1235 private String extractNodeToEdit(VnfData vnfData) {
1236 return vnfData.vnfUuid + "-" + vnfData.vnfName;
1240 private void toggleItemInTree(String tree) {
1241 Click.byXpath("//tree-root[@data-tests-id='" + tree + "']//span[@class='" + Constants.DrawingBoard.TOGGLE_CHILDREN + "']");
1244 private void hoverAndClickEditButton(String nodeToEdit) {
1245 hoverAndClickButton(nodeToEdit, Constants.DrawingBoard.CONTEXT_MENU_EDIT);
1248 private void hoverAndClickDeleteButton(String nodeToEdit) {
1249 hoverAndClickButton(nodeToEdit, Constants.InstantiationStatus.CONTEXT_MENU_REMOVE);
1252 private void hoverAndClickDuplicateButton(String nodeToEdit) {
1253 hoverAndClickButton(nodeToEdit, Constants.InstantiationStatus.CONTEXT_MENU_DUPLICATE);
1255 private void hoverAndClickButton(String nodeToEdit, String contextMenuItem) {
1256 String nodeOfEdit = Constants.DrawingBoard.NODE_PREFIX + nodeToEdit;
1257 String buttonOfEdit = nodeOfEdit + Constants.DrawingBoard.CONTEXT_MENU_BUTTON;
1258 GeneralUIUtils.hoverOnAreaByTestId(buttonOfEdit);
1259 Click.byTestId(buttonOfEdit);
1260 Click.byTestId(contextMenuItem);
1263 private void uploadSupplementaryFile(String inputFileName, boolean isValid, BrowseASDCPage browseASDCPage, String setButtonTestId) {
1264 if (Features.FLAG_SUPPLEMENTARY_FILE.isActive()) {
1265 GeneralUIUtils.ultimateWait();
1266 Input.file("supplementaryFiles/" + inputFileName, "supplementaryFile");
1267 GeneralUIUtils.ultimateWait();
1268 WebElement fileName = Get.byTestId("file-name");
1269 Assert.assertEquals(fileName.getText(),inputFileName);
1270 browseASDCPage.assertButtonState(setButtonTestId, isValid);
1274 private void deleteSupplementaryFile() {
1275 if (Features.FLAG_SUPPLEMENTARY_FILE.isActive()) {
1276 Click.byTestId("remove-uploaded-file");
1277 GeneralUIUtils.ultimateWait();
1278 WebElement fileName = Get.byTestId("file-name");
1279 Assert.assertEquals(fileName.getText(),"Choose file");
1283 //@Step("create vf module")
1284 private void createVfModule(ServiceData serviceData, String serviceInstanceName, boolean addedByDefault, boolean addOpensPopup) {
1285 clickAddVfModule(serviceData, addedByDefault);
1286 if (!addOpensPopup) {
1287 clickEditVfModule(serviceData);
1289 fillAndSetVfModulePopup(serviceData, serviceInstanceName);
1292 private void fillAndSetVfModulePopup(ServiceData serviceData, String serviceInstanceName) {
1293 String setButtonTestId = "form-set";
1294 BrowseASDCPage browseASDCPage = new BrowseASDCPage();
1296 Assert.assertEquals(isElementByIdRequired("instanceName-label"), !serviceData.vnfData.isGeneratedNaming,"instance name input should be optional when EcompNaming == true, and required when false.");
1298 if (!serviceData.vnfData.isGeneratedNaming) {
1299 Input.text("VF instance name", "instanceName");
1302 if (!serviceData.vfData.vgEnabled || (!serviceData.isALaCarte && serviceData.vnfData.isGeneratedNaming)) {
1303 Assert.assertNull(Get.byTestId("volumeGroupName"), "volumeGroupName input should be invisible "
1304 + "when vgEnabled is false or when vgEnabled is true and EcompGenName is true "
1305 + "(was: serviceData.vfData.vgEnabled=>" + serviceData.vfData.vgEnabled + ", serviceData.isGeneratedNaming=>" + IS_GENERATED_NAMING.FALSE + ")");
1308 Assert.assertFalse(isElementByIdRequired("volumeGroupName-label"),
1309 "volume Group name input should be always optional");
1310 if (serviceData.vfData.vgName!=null) {
1311 browseASDCPage.setInputText("volumeGroupName", serviceData.vfData.vgName);
1316 Wait.waitByTestId("model-item-value-subscriberName", 10);
1317 Assert.assertEquals(Get.byTestId("model-item-value-subscriberName").getText(), "SILVIA ROBBINS", "Subscriber name should be shown in vf module");
1318 Assert.assertEquals(Get.byTestId("model-item-value-min").getText(), Integer.toString(serviceData.vfData.vfMin), "Min should be shown");
1319 if (serviceData.vfData.vfMax!=null) {
1320 if (!serviceData.vfData.vfMax.equals(NO_MAX_INSTANCES_IN_MODEL)) {
1321 Assert.assertEquals(Get.byTestId("model-item-value-max").getText(), serviceData.vfData.vfMax, "Max should be shown");
1324 String defaultMaxText = Features.FLAG_2002_UNLIMITED_MAX.isActive() ? "Unlimited (default)" : "1";
1325 Assert.assertEquals(Get.byTestId("model-item-value-max").getText(), defaultMaxText, "Max should be shown with default value");
1329 if (serviceData.isGeneratedNaming!=IS_GENERATED_NAMING.TRUE) {
1330 Wait.byText(serviceInstanceName);
1331 Assert.assertEquals(Get.byTestId("model-item-value-serviceName").getText(), serviceInstanceName, "Service name should be shown in vf module");
1334 if (serviceData.isALaCarte) {
1335 String lcpRegion = "hvf6";
1336 Wait.waitByClassAndText("lcpRegionOption", lcpRegion, 30);
1337 viewEditPage.selectLcpRegion(lcpRegion, AIC);
1338 browseASDCPage.selectTenant("bae71557c5bb4d5aac6743a4e5f1d054");
1341 validateDynamicFields(serviceData.vfData.dynamicFields);
1343 uploadSupplementaryFile("invalid-file.json", false, browseASDCPage, setButtonTestId);
1344 deleteSupplementaryFile();
1345 uploadSupplementaryFile("sample.json", true, browseASDCPage, setButtonTestId);
1347 browseASDCPage.screenshotDeployDialog("createVfModule-" + serviceInstanceName);
1348 Click.byTestId(setButtonTestId);
1351 private void clickEditVfModule(ServiceData serviceData) {
1352 hoverAndClickEditButton(serviceData.vfData.uuid + "-" + serviceData.vfData.vfName);
1355 private void clickAddVfModule(ServiceData serviceData, boolean addedByDefault) {
1356 if (addedByDefault) {
1359 System.out.println("VFModule should be added 'manually'");
1361 final WebElement vfModuleNode = Get.byTestId(Constants.DrawingBoard.NODE_PREFIX + serviceData.vfData.vfName);
1363 if (vfModuleNode == null || !vfModuleNode.isDisplayed()) {
1365 drawingBoardPage.clickNode(serviceData.vnfData.vnfName);
1367 drawingBoardPage.clickAddButtonByNodeName(serviceData.vfData.vfName);
1370 private void clickRemoveVfModule(String vfModuleId, String vfModuleName) {
1371 System.out.println("will remove " + vfModule0Name);
1372 hoverAndClickDeleteButton(vfModuleId + "-" + vfModuleName);
1375 private void assertPauseOnPausePointsVisibility(boolean visibility) {
1376 WebElement pauseElem = Get.byId("Pause");
1377 final String assertionMessage = "pause on pause points visibility should be " + visibility;
1379 Assert.assertNotNull(pauseElem, assertionMessage);
1381 Assert.assertNull(pauseElem, assertionMessage);
1386 private String uuid() {
1387 return UUID.randomUUID().toString();
1391 private void assertNotificationAreaVisibilityBehaviourAndSetBulkSize(int size) {
1392 WebElement webElement = Get.byId("notification-area");
1393 Assert.assertNull(webElement, "notification area should be invisible if only 1 qty.");
1395 SelectOption.byIdAndVisibleText("quantity-select", String.valueOf(size));
1397 webElement = Get.byId("notification-area");
1398 Assert.assertNotNull(webElement, "notification area should be visible if more then 1 qty.");
1401 //@Step("prepare service preset")
1402 private void prepareServicePreset(ModelInfo modelInfo, boolean deploy) {
1403 String subscriberId = "e433710f-9217-458d-a79d-1c7aff376d89";
1406 registerExpectationForServiceDeployment(
1409 pasqualeVmxVpeBvService488Annotations
1411 subscriberId, null);
1413 registerExpectationForServiceBrowseAndDesign(ImmutableList.of(modelInfo), subscriberId);
1417 static class ServiceData {
1419 ServiceData(String modelUuid, List<String> dynamicFields, IS_GENERATED_NAMING isServiceGeneratedNaming,
1420 boolean isVnfGeneratedNaming, boolean isVgEnabled, boolean multiStageDesign, String vnfName,
1421 String vfName, int vfMin, String vfMax, List<String> vfModuleDynamicFields, String vfVersionId, boolean isALaCarte) {
1422 this.modelUuid = modelUuid;
1423 this.dynamicFields = dynamicFields;
1424 this.isGeneratedNaming = isServiceGeneratedNaming;
1425 this.multiStageDesign = multiStageDesign;
1426 this.isALaCarte = isALaCarte;
1427 this.vnfData = new VnfData(vnfName, "69e09f68-8b63-4cc9-b9ff-860960b5db09", "VNF instance name", isVnfGeneratedNaming);
1428 this.vfData = new VfData(vfName, isVgEnabled, vfMin, vfMax, vfModuleDynamicFields, vfVersionId, "_abc");
1431 public ServiceData(IS_GENERATED_NAMING isGeneratedNaming, VnfData vnfData, VfData vfData, boolean isALaCarte) {
1432 this.isGeneratedNaming = isGeneratedNaming;
1433 this.vnfData = vnfData;
1434 this.vfData = vfData;
1435 this.isALaCarte = isALaCarte;
1439 List<String> dynamicFields;
1440 IS_GENERATED_NAMING isGeneratedNaming;
1441 boolean multiStageDesign;
1446 enum IS_GENERATED_NAMING { TRUE, FALSE, TRUE_BUT_GIVE_NAME_EITHER_WAY}
1449 private static class VnfData {
1450 VnfData(String vnfName, String vnfUuid, String vnfInstanceName, boolean isGeneratedNaming) {
1451 this.vnfName = vnfName;
1452 this.vnfUuid = vnfUuid;
1453 this.vnfInstanceName = vnfInstanceName;
1454 this.isGeneratedNaming = isGeneratedNaming;
1457 final String vnfName;
1458 final String vnfUuid;
1459 final String vnfInstanceName;
1460 final boolean isGeneratedNaming;
1464 private static class VfData {
1465 VfData(String vfName, boolean vgEnabled, int vfMin, String vfMax, List<String> dynamicFields, String uuid, String vgName) {
1466 this.vfName = vfName;
1467 this.vgEnabled = vgEnabled;
1470 this.dynamicFields = dynamicFields;
1472 this.vgName = vgName;
1478 final String vfName;
1479 final boolean vgEnabled;
1480 final List<String> dynamicFields;
1481 final String vgName;