diff options
Diffstat (limited to 'integration-tests/src/test/java/org/openecomp/sdc/ci/tests/api/ComponentBaseTest.java')
-rw-r--r-- | integration-tests/src/test/java/org/openecomp/sdc/ci/tests/api/ComponentBaseTest.java | 255 |
1 files changed, 255 insertions, 0 deletions
diff --git a/integration-tests/src/test/java/org/openecomp/sdc/ci/tests/api/ComponentBaseTest.java b/integration-tests/src/test/java/org/openecomp/sdc/ci/tests/api/ComponentBaseTest.java new file mode 100644 index 0000000000..8c238ce8ac --- /dev/null +++ b/integration-tests/src/test/java/org/openecomp/sdc/ci/tests/api/ComponentBaseTest.java @@ -0,0 +1,255 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc.ci.tests.api; + +import ch.qos.logback.classic.Level; +import ch.qos.logback.classic.LoggerContext; +import com.aventstack.extentreports.ExtentTest; +import com.aventstack.extentreports.Status; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; +import org.apache.commons.collections.CollectionUtils; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum; +import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum; +import org.openecomp.sdc.be.model.Component; +import org.openecomp.sdc.be.model.Product; +import org.openecomp.sdc.be.model.Resource; +import org.openecomp.sdc.be.model.Service; +import org.openecomp.sdc.be.model.User; +import org.openecomp.sdc.ci.tests.config.Config; +import org.openecomp.sdc.ci.tests.datatypes.ResourceReqDetails; +import org.openecomp.sdc.ci.tests.datatypes.enums.UserRoleEnum; +import org.openecomp.sdc.ci.tests.datatypes.http.RestResponse; +import org.openecomp.sdc.ci.tests.utils.Utils; +import org.openecomp.sdc.ci.tests.utils.general.AtomicOperationUtils; +import org.openecomp.sdc.ci.tests.utils.general.ElementFactory; +import org.openecomp.sdc.ci.tests.utils.general.FileHandling; +import org.openecomp.sdc.ci.tests.utils.rest.BaseRestUtils; +import org.openecomp.sdc.ci.tests.utils.rest.CatalogRestUtils; +import org.openecomp.sdc.ci.tests.utils.rest.ProductRestUtils; +import org.openecomp.sdc.ci.tests.utils.rest.ResourceRestUtils; +import org.openecomp.sdc.ci.tests.utils.rest.ResponseParser; +import org.openecomp.sdc.ci.tests.utils.rest.ServiceRestUtils; +import org.slf4j.LoggerFactory; +import org.testng.ITestContext; +import org.testng.ITestResult; +import org.testng.annotations.AfterMethod; +import org.testng.annotations.AfterSuite; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.BeforeSuite; + +public abstract class ComponentBaseTest { + + protected static Logger logger = LogManager.getLogger(ComponentBaseTest.class); + + protected static final String REPORT_FOLDER = "." + File.separator + "ExtentReport" + File.separator; + private static final String REPORT_FILE_NAME = "SDC_CI_Extent_Report.html"; + public static Config config; + protected static ITestContext myContext; + + + /**************** METHODS ****************/ + public static ExtentTest getExtendTest() { + SomeInterface testManager = new ExtentTestManager(); + return testManager.getTest(); + } + + public enum ComponentOperationEnum { + CREATE_COMPONENT, UPDATE_COMPONENT, GET_COMPONENT, DELETE_COMPONENT, CHANGE_STATE_CHECKIN, CHANGE_STATE_CHECKOUT, CHANGE_STATE_UNDO_CHECKOUT + } + + public ComponentBaseTest() { + LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory(); + lc.getLogger("com.thinkaurelius").setLevel(Level.INFO); + lc.getLogger("com.datastax").setLevel(Level.INFO); + lc.getLogger("io.netty").setLevel(Level.INFO); + lc.getLogger("c.d").setLevel(Level.INFO); + } + + public static String getReportFolder() { + return REPORT_FOLDER; + } + + @BeforeSuite(alwaysRun = true) + public void setupBeforeSuite(ITestContext context) throws Exception { + config = Utils.getConfig(); + myContext = context; + ExtentManager.initReporter(getReportFolder(), REPORT_FILE_NAME, context); + AtomicOperationUtils.createDefaultConsumer(true); + performClean(); + } + + @BeforeMethod(alwaysRun = true) + public void setupBeforeTest(java.lang.reflect.Method method, ITestContext context) throws Exception { + if (!"onboardVNFShotFlow".equals(method.getName()) && + !"onboardPNFFlow".equals(method.getName()) ) { + logger.info("ExtentReport instance started from BeforeMethod..."); + ExtentTestManager.startTest(method.getName()); + ExtentTestManager.assignCategory(this.getClass()); + + } else { + logger.debug("ExtentReport instance started from Test..."); + } + } + + @AfterMethod(alwaysRun = true) + public void quitAfterTest(ITestResult result, ITestContext context) throws Exception { + int status = result.getStatus(); + switch (status) { + case ITestResult.SUCCESS: + getExtendTest().log(Status.PASS, "Test Result : <span class='label success'>Success</span>"); + break; + + case ITestResult.FAILURE: + getExtendTest().log(Status.ERROR, "ERROR - The following exepction occured"); + getExtendTest().log(Status.ERROR, result.getThrowable()); + getExtendTest().log(Status.FAIL, "<span class='label failure'>Failure</span>"); + break; + + case ITestResult.SKIP: + getExtendTest().log(Status.SKIP, "SKIP - The following exepction occured"); + break; + default: + break; + } + ExtentTestManager.endTest(); + } + + @AfterSuite(alwaysRun = true) + public static void shutdownJanusGraph() throws Exception { + performClean(); + } + + public void setLog(String fromDataProvider) { + ExtentTestManager.startTest(Thread.currentThread().getStackTrace()[2].getMethodName() + " " + fromDataProvider); + ExtentTestManager.assignCategory(this.getClass()); + } + + protected static void performClean() throws Exception { + if (!config.getSystemUnderDebug()) { + deleteCreatedComponents(getCatalogAsMap()); + FileHandling.overWriteExistindDir("target/outputCsar"); + } else { + System.out.println("Accordindig to configuration components will not be deleted, in case to unable option to delete, please change systemUnderDebug parameter value to false ..."); + } + } + + private static void deleteCreatedComponents(Map<String, List<Component>> convertCatalogResponseToJavaObject) throws IOException { + final String userId = UserRoleEnum.DESIGNER.getUserId(); + + List<Component> resourcesArrayList = convertCatalogResponseToJavaObject.get(ComponentTypeEnum.RESOURCE_PARAM_NAME); + if (!CollectionUtils.isEmpty(resourcesArrayList)) { + List<String> collect = buildCollectionUniqueId(resourcesArrayList); + for (String uId : collect) { + ResourceRestUtils.markResourceToDelete(uId, userId); + } + ResourceRestUtils.deleteMarkedResources(userId); + } + + resourcesArrayList = convertCatalogResponseToJavaObject.get(ComponentTypeEnum.SERVICE_PARAM_NAME); + if (resourcesArrayList.size() > 0) { + List<String> collect = buildCollectionUniqueId(resourcesArrayList); + for (String uId : collect) { + ServiceRestUtils.markServiceToDelete(uId, userId); + } + ServiceRestUtils.deleteMarkedServices(userId); + } + } + + protected static List<String> buildCollectionUniqueId(List<Component> resourcesArrayList) { + + + List<String> genericCollection = new ArrayList<>(); + if(resourcesArrayList.get(0) != null) { + ComponentTypeEnum componentTypeEnum = resourcesArrayList.get(0).getComponentType(); + resourcesArrayList.stream().filter(Objects::nonNull). + filter(s -> s.getName().toLowerCase().startsWith("ci") && !s.getName().toLowerCase().equals("cindervolume")). + filter(f -> f.getUniqueId() != null). + map(Component::getUniqueId). + collect(Collectors.toList()). + forEach((i) -> buildCollectionBaseOnComponentType(componentTypeEnum, genericCollection, i)); + } + return genericCollection; + } + + public static void buildCollectionBaseOnComponentType(ComponentTypeEnum componentTypeEnum, + List<String> genericCollection, String i) { + try { + switch (componentTypeEnum) { + case RESOURCE: + RestResponse resource = ResourceRestUtils.getResource(i); + Resource convertResourceResponseToJavaObject = ResponseParser.convertResourceResponseToJavaObject(resource.getResponse()); + Map<String, String> allVersions = convertResourceResponseToJavaObject.getAllVersions(); + Collection<String> values = allVersions.values(); + genericCollection.addAll(values); + + break; + case SERVICE: + RestResponse service = ServiceRestUtils.getService(i); + Service convertServiceResponseToJavaObject = ResponseParser.convertServiceResponseToJavaObject(service.getResponse()); + allVersions = convertServiceResponseToJavaObject.getAllVersions(); + values = allVersions.values(); + genericCollection.addAll(values); + + break; + + + case PRODUCT: + RestResponse product = ProductRestUtils.getProduct(i); + Product convertProductResponseToJavaObject = ResponseParser.convertProductResponseToJavaObject(product.getResponse()); + allVersions = convertProductResponseToJavaObject.getAllVersions(); + values = allVersions.values(); + genericCollection.addAll(values); + + break; + } + } catch (Exception e1) { + e1.printStackTrace(); + } + } + + protected static Map<String, List<Component>> getCatalogAsMap() throws Exception { + RestResponse catalog = CatalogRestUtils.getCatalog(UserRoleEnum.DESIGNER.getUserId()); + return ResponseParser.convertCatalogResponseToJavaObject(catalog.getResponse()); + } + + protected Resource createVfFromCSAR(User sdncModifierDetails, String csarId) throws Exception { + // create new resource from Csar + ResourceReqDetails resourceDetails = ElementFactory.getDefaultResource(); + + resourceDetails.setCsarUUID(csarId); + resourceDetails.setResourceType(ResourceTypeEnum.VF.name()); + RestResponse createResource = ResourceRestUtils.createResource(resourceDetails, sdncModifierDetails); + BaseRestUtils.checkCreateResponse(createResource); + return ResponseParser.convertResourceResponseToJavaObject(createResource.getResponse()); + } + + +} |