2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.openecomp.sdc.ci.tests.execute.sanity;
23 import static org.testng.AssertJUnit.assertNotNull;
24 import static org.testng.AssertJUnit.assertTrue;
26 import java.awt.AWTException;
28 import java.io.IOException;
29 import java.util.ArrayList;
30 import java.util.Arrays;
31 import java.util.HashMap;
32 import java.util.List;
34 import java.util.stream.Collectors;
36 import org.openecomp.sdc.ci.tests.dataProvider.OnbordingDataProviders;
37 import org.openecomp.sdc.ci.tests.datatypes.AmdocsLicenseMembers;
38 import org.openecomp.sdc.ci.tests.datatypes.CanvasElement;
39 import org.openecomp.sdc.ci.tests.datatypes.CanvasManager;
40 import org.openecomp.sdc.ci.tests.datatypes.ResourceReqDetails;
41 import org.openecomp.sdc.ci.tests.datatypes.ServiceReqDetails;
42 import org.openecomp.sdc.ci.tests.datatypes.enums.UserRoleEnum;
43 import org.openecomp.sdc.ci.tests.execute.setup.ArtifactsCorrelationManager;
44 import org.openecomp.sdc.ci.tests.execute.setup.ExtentTestActions;
45 import org.openecomp.sdc.ci.tests.execute.setup.SetupCDTest;
46 import org.openecomp.sdc.ci.tests.pages.CompositionPage;
47 import org.openecomp.sdc.ci.tests.pages.DeploymentArtifactPage;
48 import org.openecomp.sdc.ci.tests.pages.GovernorOperationPage;
49 import org.openecomp.sdc.ci.tests.pages.HomePage;
50 import org.openecomp.sdc.ci.tests.pages.OpsOperationPage;
51 import org.openecomp.sdc.ci.tests.pages.ResourceGeneralPage;
52 import org.openecomp.sdc.ci.tests.pages.ServiceGeneralPage;
53 import org.openecomp.sdc.ci.tests.pages.TesterOperationPage;
54 import org.openecomp.sdc.ci.tests.utilities.FileHandling;
55 import org.openecomp.sdc.ci.tests.utilities.GeneralUIUtils;
56 import org.openecomp.sdc.ci.tests.utilities.OnboardingUiUtils;
57 import org.openecomp.sdc.ci.tests.utilities.ServiceUIUtils;
58 import org.openecomp.sdc.ci.tests.utils.general.ElementFactory;
59 import org.openecomp.sdc.ci.tests.utils.general.OnboardingUtils;
60 import org.openecomp.sdc.ci.tests.verificator.ServiceVerificator;
61 import org.openqa.selenium.WebElement;
62 import org.testng.AssertJUnit;
63 import org.testng.annotations.BeforeMethod;
64 import org.testng.annotations.Optional;
65 import org.testng.annotations.Parameters;
66 import org.testng.annotations.Test;
68 import com.aventstack.extentreports.Status;
69 import com.clearspring.analytics.util.Pair;
71 public class Onboard extends SetupCDTest {
73 protected static String filePath = FileHandling.getVnfRepositoryPath();
74 protected String makeDistributionValue;
76 @Parameters({ "makeDistribution" })
78 public void beforeTestReadParams(@Optional("true") String makeDistributionReadValue) {
79 makeDistributionValue = makeDistributionReadValue;
83 public void onboardVNFTestSanityOneFile() throws Exception, Throwable {
84 // List<String> fileNamesFromFolder = OnboardingUiUtils.getVnfNamesFileList();
85 // String vnfFile = fileNamesFromFolder.get(0).toString();
86 String vnfFile = "2017-302_vNSO.zip";
87 // String vnfFile = "1-Fn-vprobe-be-11-2-5-1-vf-(MOBILITY)_v5.0.zip";
88 ResourceReqDetails resourceReqDetails = ElementFactory.getDefaultResource();//getResourceReqDetails(ComponentConfigurationTypeEnum.DEFAULT);
89 ServiceReqDetails serviceReqDetails = ElementFactory.getDefaultService();//getServiceReqDetails(ComponentConfigurationTypeEnum.DEFAULT);
90 runOnboardToDistributionFlow(resourceReqDetails, serviceReqDetails, filePath, vnfFile);
94 public void onboardVNFTestSanity() throws Exception, Throwable {
95 List<String> fileNamesFromFolder = OnboardingUtils.getVnfNamesFileList();
96 String vnfFile = fileNamesFromFolder.get(0).toString();
97 ResourceReqDetails resourceReqDetails = ElementFactory.getDefaultResource();//getResourceReqDetails(ComponentConfigurationTypeEnum.DEFAULT);
98 ServiceReqDetails serviceReqDetails = ElementFactory.getDefaultService();//getServiceReqDetails(ComponentConfigurationTypeEnum.DEFAULT);
99 runOnboardToDistributionFlow(resourceReqDetails, serviceReqDetails, filePath, vnfFile);
103 public void runOnboardToDistributionFlow(ResourceReqDetails resourceReqDetails, ServiceReqDetails serviceMetadata, String filePath, String vnfFile) throws Exception, AWTException {
104 getExtendTest().log(Status.INFO, "Going to create resource with category: " + resourceReqDetails.getCategories().get(0).getName()
105 + " subCategory: " + resourceReqDetails.getCategories().get(0).getSubcategories().get(0).getName()
106 + " and service category: " + serviceMetadata.getCategory());
107 String vspName = onboardAndCertify(resourceReqDetails, filePath, vnfFile);
109 reloginWithNewRole(UserRoleEnum.DESIGNER);
111 // ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
112 ServiceUIUtils.createService(serviceMetadata, getUser());
114 ServiceGeneralPage.getLeftMenu().moveToCompositionScreen();
115 CompositionPage.searchForElement(vspName);
116 CanvasManager serviceCanvasManager = CanvasManager.getCanvasManager();
117 CanvasElement vfElement = serviceCanvasManager.createElementOnCanvas(vspName);
118 ArtifactsCorrelationManager.addVNFtoServiceArtifactCorrelation(serviceMetadata.getName(), vspName);
120 assertNotNull(vfElement);
121 ServiceVerificator.verifyNumOfComponentInstances(serviceMetadata, "0.1", 1, getUser());
122 ExtentTestActions.addScreenshot(Status.INFO, "ServiceComposition_" + vnfFile ,"The service topology is as follows: ");
124 ServiceGeneralPage.clickSubmitForTestingButton(serviceMetadata.getName());
126 reloginWithNewRole(UserRoleEnum.TESTER);
127 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
128 TesterOperationPage.certifyComponent(serviceMetadata.getName());
130 reloginWithNewRole(UserRoleEnum.GOVERNOR);
131 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
132 GovernorOperationPage.approveSerivce(serviceMetadata.getName());
134 if (makeDistributionValue.equals("true")){
137 reloginWithNewRole(UserRoleEnum.OPS);
138 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
139 OpsOperationPage.distributeService();
140 OpsOperationPage.displayMonitor();
142 List<WebElement> rowsFromMonitorTable = OpsOperationPage.getRowsFromMonitorTable();
143 AssertJUnit.assertEquals(1, rowsFromMonitorTable.size());
145 OpsOperationPage.waitUntilArtifactsDistributed(0);
147 // validateInputArtsVSouput(serviceMetadata.getName());
151 getExtendTest().log(Status.INFO, String.format("The onboarding %s test is passed ! ", vnfFile));
154 public String onboardAndCertify(ResourceReqDetails resourceReqDetails, String filePath, String vnfFile) throws Exception, IOException {
155 Pair<String,Map<String,String>> onboardAndValidate = OnboardingUiUtils.onboardAndValidate(resourceReqDetails, filePath, vnfFile, getUser());
156 String vspName = onboardAndValidate.left;
158 DeploymentArtifactPage.getLeftPanel().moveToCompositionScreen();
159 ExtentTestActions.addScreenshot(Status.INFO, "TopologyTemplate_" + vnfFile ,"The topology template for " + vnfFile + " is as follows : ");
161 DeploymentArtifactPage.clickSubmitForTestingButton(vspName);
163 reloginWithNewRole(UserRoleEnum.TESTER);
164 GeneralUIUtils.findComponentAndClick(vspName);
165 TesterOperationPage.certifyComponent(vspName);
170 @Test(dataProviderClass = OnbordingDataProviders.class, dataProvider = "VNF_List")
171 public void onboardVNFTest(String filePath, String vnfFile) throws Exception, Throwable {
173 System.out.println("printttttttttttttt - >" + makeDistributionValue);
174 ResourceReqDetails resourceReqDetails = ElementFactory.getRandomCategoryResource();
175 ServiceReqDetails serviceReqDetails = ElementFactory.getRandomCategoryService();
176 runOnboardToDistributionFlow(resourceReqDetails, serviceReqDetails, filePath, vnfFile);
179 @Test(dataProviderClass = OnbordingDataProviders.class, dataProvider = "VNF_List")
180 public void onboardVNFShotFlow(String filePath, String vnfFile) throws Exception, Throwable {
182 System.out.println("printttttttttttttt - >" + makeDistributionValue);
183 ResourceReqDetails resourceReqDetails = ElementFactory.getDefaultResource();//getResourceReqDetails(ComponentConfigurationTypeEnum.DEFAULT);
184 onboardAndCertify(resourceReqDetails, filePath, vnfFile);
187 @Test(dataProviderClass = OnbordingDataProviders.class, dataProvider = "randomVNF_List")
188 public void onboardRandomVNFsTest(String filePath, String vnfFile) throws Exception, Throwable {
190 System.out.println("printttttttttttttt - >" + makeDistributionValue);
191 System.out.println("Vnf File name is: " + vnfFile);
192 ResourceReqDetails resourceReqDetails = ElementFactory.getRandomCategoryResource();
193 ServiceReqDetails serviceReqDetails = ElementFactory.getRandomCategoryService();
194 runOnboardToDistributionFlow(resourceReqDetails, serviceReqDetails, filePath, vnfFile);
199 public void onboardUpdateVNFTest() throws Exception, Throwable {
200 // Object[] fileNamesFromFolder = FileHandling.getZipFileNamesFromFolder(filePath);
201 List<String> fileNamesFromFolder = FileHandling.getZipFileNamesFromFolder(filePath);
202 // String vnfFile = fileNamesFromFolder[0].toString();
203 String vnfFile = fileNamesFromFolder.get(0);
204 ResourceReqDetails resourceReqDetails = ElementFactory.getDefaultResource();//getResourceReqDetails(ComponentConfigurationTypeEnum.DEFAULT);
205 Pair<String,Map<String,String>> vsp = OnboardingUiUtils.onboardAndValidate(resourceReqDetails, filePath, vnfFile, getUser());
206 String vspName = vsp.left;
207 ResourceGeneralPage.clickSubmitForTestingButton(vspName);
209 reloginWithNewRole(UserRoleEnum.TESTER);
210 GeneralUIUtils.findComponentAndClick(vspName);
211 TesterOperationPage.certifyComponent(vspName);
213 reloginWithNewRole(UserRoleEnum.DESIGNER);
215 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
216 ServiceUIUtils.createService(serviceMetadata, getUser());
218 ServiceGeneralPage.getLeftMenu().moveToCompositionScreen();
219 CompositionPage.searchForElement(vspName);
220 CanvasManager serviceCanvasManager = CanvasManager.getCanvasManager();
221 CanvasElement vfElement = serviceCanvasManager.createElementOnCanvas(vspName);
222 assertNotNull(vfElement);
223 ServiceVerificator.verifyNumOfComponentInstances(serviceMetadata, "0.1", 1, getUser());
225 HomePage.navigateToHomePage();
228 // String updatedVnfFile = fileNamesFromFolder[1].toString();
229 String updatedVnfFile = fileNamesFromFolder.get(1);
231 getExtendTest().log(Status.INFO, String.format("Going to update the VNF with %s......", updatedVnfFile));
232 // update VendorSoftwareProduct
233 OnboardingUiUtils.updateVnfAndValidate(filePath, vsp, updatedVnfFile, getUser());
235 ResourceGeneralPage.clickSubmitForTestingButton(vspName);
237 reloginWithNewRole(UserRoleEnum.TESTER);
238 GeneralUIUtils.findComponentAndClick(vspName);
239 TesterOperationPage.certifyComponent(vspName);
241 reloginWithNewRole(UserRoleEnum.DESIGNER);
243 // replace exiting VFI in service with new updated
245 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
246 ServiceGeneralPage.getLeftMenu().moveToCompositionScreen();
247 serviceCanvasManager = CanvasManager.getCanvasManager();
248 CompositionPage.changeComponentVersion(serviceCanvasManager, vfElement, "2.0");
249 ServiceVerificator.verifyNumOfComponentInstances(serviceMetadata, "0.1", 1, getUser());
251 ServiceGeneralPage.clickSubmitForTestingButton(serviceMetadata.getName());
253 reloginWithNewRole(UserRoleEnum.TESTER);
254 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
255 TesterOperationPage.certifyComponent(serviceMetadata.getName());
257 reloginWithNewRole(UserRoleEnum.GOVERNOR);
258 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
259 GovernorOperationPage.approveSerivce(serviceMetadata.getName());
263 reloginWithNewRole(UserRoleEnum.OPS);
264 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
265 OpsOperationPage.distributeService();
266 OpsOperationPage.displayMonitor();
268 List<WebElement> rowsFromMonitorTable = OpsOperationPage.getRowsFromMonitorTable();
269 AssertJUnit.assertEquals(1, rowsFromMonitorTable.size());
271 OpsOperationPage.waitUntilArtifactsDistributed(0);
274 getExtendTest().log(Status.INFO, String.format("Onboarding %s test is passed ! ", vnfFile));
280 public void threeVMMSCsInServiceTest() throws Exception{
282 String pathFile = FileHandling.getFilePath("VmmscArtifacts");
283 List<String> vmmscList = new ArrayList<String>();
284 vmmscList = Arrays.asList(new File(pathFile).list()).stream().filter(e -> e.contains("vmmsc") && e.endsWith(".zip")).collect(Collectors.toList());
285 assertTrue("Did not find vMMSCs", vmmscList.size() > 0);
287 Map<String, String> vspNames = new HashMap<String, String>();
288 for (String vnfFile : vmmscList){
289 getExtendTest().log(Status.INFO, String.format("Going to onboard the VNF %s......", vnfFile));
290 System.out.println(String.format("Going to onboard the VNF %s......", vnfFile));
292 AmdocsLicenseMembers amdocsLicenseMembers = OnboardingUiUtils.createVendorLicense(getUser());
293 ResourceReqDetails resourceReqDetails = ElementFactory.getDefaultResource();//getResourceReqDetails(ComponentConfigurationTypeEnum.DEFAULT);
294 Pair<String,Map<String,String>> createVendorSoftwareProduct = OnboardingUtils.createVendorSoftwareProduct(resourceReqDetails, vnfFile, pathFile, getUser(), amdocsLicenseMembers);
296 getExtendTest().log(Status.INFO, String.format("Searching for onboarded %s", vnfFile));
297 HomePage.showVspRepository();
298 getExtendTest().log(Status.INFO,String.format("Going to import %s......", vnfFile.substring(0, vnfFile.indexOf("."))));
299 OnboardingUiUtils.importVSP(createVendorSoftwareProduct);
301 ResourceGeneralPage.getLeftMenu().moveToDeploymentArtifactScreen();
302 DeploymentArtifactPage.verifyArtifactsExistInTable(pathFile, vnfFile);
304 String vspName = createVendorSoftwareProduct.left;
305 DeploymentArtifactPage.clickSubmitForTestingButton(vspName);
307 vspNames.put(vnfFile, vspName);
310 reloginWithNewRole(UserRoleEnum.TESTER);
311 for (String vsp : vspNames.values()){
312 GeneralUIUtils.findComponentAndClick(vsp);
313 TesterOperationPage.certifyComponent(vsp);
316 reloginWithNewRole(UserRoleEnum.DESIGNER);
318 ServiceReqDetails serviceMetadata = ElementFactory.getDefaultService();
319 ServiceUIUtils.createService(serviceMetadata, getUser());
320 ServiceGeneralPage.getLeftMenu().moveToCompositionScreen();
321 CanvasManager serviceCanvasManager = CanvasManager.getCanvasManager();
323 for (String vsp : vspNames.values()){
324 CompositionPage.searchForElement(vsp);
325 CanvasElement vfElement = serviceCanvasManager.createElementOnCanvas(vsp);
326 assertNotNull(vfElement);
328 ServiceVerificator.verifyNumOfComponentInstances(serviceMetadata, "0.1", vspNames.values().size(), getUser());
329 File imageFilePath = GeneralUIUtils.takeScreenshot(null, SetupCDTest.getScreenshotFolder(), "Info_" + getExtendTest().getModel().getName());
330 final String absolutePath = new File(SetupCDTest.getReportFolder()).toURI().relativize(imageFilePath.toURI()).getPath();
331 SetupCDTest.getExtendTest().log(Status.INFO, "Three kinds of vMMSC are in canvas now." + getExtendTest().addScreenCaptureFromPath(absolutePath));
333 ServiceGeneralPage.clickSubmitForTestingButton(serviceMetadata.getName());
335 reloginWithNewRole(UserRoleEnum.TESTER);
336 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
337 TesterOperationPage.certifyComponent(serviceMetadata.getName());
339 reloginWithNewRole(UserRoleEnum.GOVERNOR);
340 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
341 GovernorOperationPage.approveSerivce(serviceMetadata.getName());
343 reloginWithNewRole(UserRoleEnum.OPS);
344 GeneralUIUtils.findComponentAndClick(serviceMetadata.getName());
345 OpsOperationPage.distributeService();
346 OpsOperationPage.displayMonitor();
348 List<WebElement> rowsFromMonitorTable = OpsOperationPage.getRowsFromMonitorTable();
349 AssertJUnit.assertEquals(1, rowsFromMonitorTable.size());
351 OpsOperationPage.waitUntilArtifactsDistributed(0);
357 protected UserRoleEnum getRole() {
358 return UserRoleEnum.DESIGNER;