aboutsummaryrefslogtreecommitdiffstats
path: root/asdc-tests/src/main/java/org/openecomp/sdc/ci/tests/api/ComponentBaseTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'asdc-tests/src/main/java/org/openecomp/sdc/ci/tests/api/ComponentBaseTest.java')
-rw-r--r--asdc-tests/src/main/java/org/openecomp/sdc/ci/tests/api/ComponentBaseTest.java348
1 files changed, 348 insertions, 0 deletions
diff --git a/asdc-tests/src/main/java/org/openecomp/sdc/ci/tests/api/ComponentBaseTest.java b/asdc-tests/src/main/java/org/openecomp/sdc/ci/tests/api/ComponentBaseTest.java
new file mode 100644
index 0000000000..370c195f53
--- /dev/null
+++ b/asdc-tests/src/main/java/org/openecomp/sdc/ci/tests/api/ComponentBaseTest.java
@@ -0,0 +1,348 @@
+/*-
+ * ============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 static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertNotNull;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import com.thinkaurelius.titan.core.TitanGraphQuery;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang3.tuple.ImmutablePair;
+import org.apache.commons.lang3.tuple.ImmutableTriple;
+import org.apache.tinkerpop.gremlin.structure.Direction;
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.junit.rules.TestName;
+import org.openecomp.sdc.be.dao.neo4j.GraphEdgeLabels;
+import org.openecomp.sdc.be.dao.neo4j.GraphPropertiesDictionary;
+import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
+import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
+import org.openecomp.sdc.ci.tests.config.Config;
+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.cassandra.CassandraUtils;
+import org.openecomp.sdc.ci.tests.utils.rest.BaseRestUtils;
+import org.openecomp.sdc.ci.tests.utils.rest.CategoryRestUtils;
+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.ServiceRestUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.testng.ITestResult;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.AfterSuite;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.BeforeSuite;
+
+import com.relevantcodes.extentreports.ExtentReports;
+import com.relevantcodes.extentreports.ExtentTest;
+import com.relevantcodes.extentreports.LogStatus;
+import com.thinkaurelius.titan.core.TitanFactory;
+import com.thinkaurelius.titan.core.TitanGraph;
+import com.thinkaurelius.titan.core.TitanVertex;
+
+import ch.qos.logback.classic.Level;
+import ch.qos.logback.classic.LoggerContext;
+
+public abstract class ComponentBaseTest {
+
+ private static Logger logger = LoggerFactory.getLogger(ComponentBaseTest.class.getName());
+
+ // public ComponentBaseTest(TestName testName, String className) {
+ // super(testName, className);
+ // }
+
+ protected static ExtentReports extentReport;
+ protected static ExtentTest extendTest;
+ public static final String REPORT_FOLDER = "./ExtentReport/";
+ private static final String REPORT_FILE_NAME = "ASDC_CI_Extent_Report.html";
+ protected static TitanGraph titanGraph;
+ private static Config myconfig;
+ public static Config config;
+
+ public static enum ComponentOperationEnum {
+ CREATE_COMPONENT, UPDATE_COMPONENT, GET_COMPONENT, DELETE_COMPONENT, CHANGE_STATE_CHECKIN, CHANGE_STATE_CHECKOUT, CHANGE_STATE_UNDO_CHECKOUT
+ };
+
+ public ComponentBaseTest(TestName name, String name2) {
+ // TODO Auto-generated constructor stub
+ 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);
+ }
+
+ @BeforeSuite(alwaysRun = true)
+ public static void openTitan() throws FileNotFoundException {
+
+ File dir = new File(REPORT_FOLDER);
+ try {
+ FileUtils.deleteDirectory(dir);
+ } catch (IOException e) {
+ }
+ extentReport = new ExtentReports(REPORT_FOLDER + REPORT_FILE_NAME);
+
+ myconfig = Utils.getConfig();
+ config = Utils.getConfig();
+ logger.trace(config.toString());
+ String titanConfigFilePath = myconfig.getTitanPropertiesFile();
+ System.out.println("titan configuration path:\n"+titanConfigFilePath);
+ titanGraph = TitanFactory.open(titanConfigFilePath);
+ System.out.println("is open:\n"+titanGraph.isOpen());
+ assertNotNull(titanGraph);
+ }
+
+ @AfterSuite(alwaysRun = true)
+ public static void shutdownTitan() {
+ if (titanGraph.isOpen()) {
+ titanGraph.close();
+ }
+ CassandraUtils.close();
+ }
+
+ @BeforeMethod(alwaysRun = true)
+ public void beforeState(java.lang.reflect.Method method) throws Exception {
+
+ cleanComponents();
+ CassandraUtils.truncateAllKeyspaces();
+ extendTest = extentReport.startTest(method.getName());
+ extendTest.log(LogStatus.INFO, "Test started");
+
+ }
+
+ @AfterMethod(alwaysRun = true)
+ public void afterState(ITestResult result) throws Exception {
+ cleanComponents();
+ CassandraUtils.truncateAllKeyspaces();
+
+ if (result.isSuccess()) {
+ extendTest.log(LogStatus.PASS, "Test Result : <span class='label success'>Success</span>");
+ } else {
+ extendTest.log(LogStatus.ERROR, "ERROR - The following exepction occured");
+ extendTest.log(LogStatus.ERROR, result.getThrowable());
+ extendTest.log(LogStatus.FAIL, "<span class='label failure'>Failure</span>");
+ }
+
+ extentReport.endTest(extendTest);
+ extentReport.flush();
+
+ }
+
+ public void verifyErrorCode(RestResponse response, String action, int expectedCode) {
+ assertNotNull("check response object is not null after " + action, response);
+ assertNotNull("check error code exists in response after " + action, response.getErrorCode());
+ assertEquals("Check response code after + action" + action, expectedCode, response.getErrorCode().intValue());
+ }
+
+ private void cleanComponents() throws Exception {
+
+ // Components to delete
+ List<String> vfResourcesToDelete = new ArrayList<String>();
+ List<String> nonVfResourcesToDelete = new ArrayList<String>();
+ List<String> servicesToDelete = new ArrayList<String>();
+ List<String> productsToDelete = new ArrayList<String>();
+
+ // Categories to delete
+ List<ImmutableTriple<String, String, String>> productGroupingsToDelete = new ArrayList<>();
+ List<ImmutablePair<String, String>> productSubsToDelete = new ArrayList<>();
+ List<ImmutablePair<String, String>> resourceSubsToDelete = new ArrayList<>();
+ List<String> productCategoriesToDelete = new ArrayList<>();
+ List<String> resourceCategoriesToDelete = new ArrayList<String>();
+ List<String> serviceCategoriesToDelete = new ArrayList<String>();
+
+ List<String> resourcesNotToDelete = config.getResourcesNotToDelete();
+ List<String> resourceCategoriesNotToDelete = config.getResourceCategoriesNotToDelete();
+ List<String> serviceCategoriesNotToDelete = config.getServiceCategoriesNotToDelete();
+ TitanGraphQuery<? extends TitanGraphQuery> query = titanGraph.query();
+ query = query.has(GraphPropertiesDictionary.LABEL.getProperty(), NodeTypeEnum.Resource.getName());
+ Iterable<TitanVertex> vertices=query.vertices();
+// Iterable<TitanVertex> vertices = titanGraph.query().has(GraphPropertiesDictionary.LABEL.getProperty(), NodeTypeEnum.Resource.getName()).vertices();
+ if (vertices != null) {
+ Iterator<TitanVertex> iter = vertices.iterator();
+ while (iter.hasNext()) {
+ Vertex vertex = iter.next();
+ Boolean isAbstract = vertex.value(GraphPropertiesDictionary.IS_ABSTRACT.getProperty());
+ // if (!isAbstract) {
+ String name = vertex.value(GraphPropertiesDictionary.NAME.getProperty());
+ String version = vertex.value(GraphPropertiesDictionary.VERSION.getProperty());
+
+ if ((resourcesNotToDelete != null && !resourcesNotToDelete.contains(name)) || (version != null && !version.equals("1.0"))) {
+ String id = vertex.value(GraphPropertiesDictionary.UNIQUE_ID.getProperty());
+ String resourceType = vertex.value(GraphPropertiesDictionary.RESOURCE_TYPE.getProperty());
+ // if (name.startsWith("ci")) {
+ if (resourceType.equals(ResourceTypeEnum.VF.name())) {
+ vfResourcesToDelete.add(id);
+ } else {
+ nonVfResourcesToDelete.add(id);
+ }
+ // }
+ } else if ((resourcesNotToDelete != null && !resourcesNotToDelete.contains(name)) || (version != null && version.equals("1.0"))) {
+ if ((boolean) vertex.value(GraphPropertiesDictionary.IS_HIGHEST_VERSION.getProperty()) == false) {
+ vertex.property(GraphPropertiesDictionary.IS_HIGHEST_VERSION.getProperty(), true);
+ }
+ }
+ // }
+ }
+ }
+ vertices = titanGraph.query().has(GraphPropertiesDictionary.LABEL.getProperty(), NodeTypeEnum.Service.getName()).vertices();
+ if (vertices != null) {
+ Iterator<TitanVertex> iter = vertices.iterator();
+ while (iter.hasNext()) {
+ Vertex vertex = iter.next();
+ String id = vertex.value(GraphPropertiesDictionary.UNIQUE_ID.getProperty());
+ String name = vertex.value(GraphPropertiesDictionary.NAME.getProperty());
+ // if (name.startsWith("ci")){
+ servicesToDelete.add(id);
+ // }
+ }
+ }
+
+ vertices = titanGraph.query().has(GraphPropertiesDictionary.LABEL.getProperty(), NodeTypeEnum.Product.getName()).vertices();
+ if (vertices != null) {
+ Iterator<TitanVertex> iter = vertices.iterator();
+ while (iter.hasNext()) {
+ Vertex vertex = iter.next();
+ String id = vertex.value(GraphPropertiesDictionary.UNIQUE_ID.getProperty());
+ String name = vertex.value(GraphPropertiesDictionary.NAME.getProperty());
+ //if (name.startsWith("ci")) {
+ productsToDelete.add(id);
+ //}
+ }
+ }
+
+ // Getting categories
+
+ vertices = titanGraph.query().has(GraphPropertiesDictionary.LABEL.getProperty(), NodeTypeEnum.ResourceNewCategory.getName()).vertices();
+ if (vertices != null) {
+ Iterator<TitanVertex> iter = vertices.iterator();
+ while (iter.hasNext()) {
+ Vertex category = iter.next();
+ String name = category.value(GraphPropertiesDictionary.NAME.getProperty());
+ if (!resourceCategoriesNotToDelete.contains(name)) {
+ String catId = category.value(GraphPropertiesDictionary.UNIQUE_ID.getProperty());
+ resourceCategoriesToDelete.add(catId);
+ Iterator<Vertex> subs = category.vertices(Direction.OUT, GraphEdgeLabels.SUB_CATEGORY.getProperty());
+ while (subs.hasNext()) {
+ Vertex sub = subs.next();
+ String subCatId = sub.value(GraphPropertiesDictionary.UNIQUE_ID.getProperty());
+ resourceSubsToDelete.add(new ImmutablePair<String, String>(catId, subCatId));
+ }
+ }
+ }
+ }
+
+ vertices = titanGraph.query().has(GraphPropertiesDictionary.LABEL.getProperty(), NodeTypeEnum.ServiceNewCategory.getName()).vertices();
+ if (vertices != null) {
+ Iterator<TitanVertex> iter = vertices.iterator();
+ while (iter.hasNext()) {
+ Vertex category = iter.next();
+ String name = category.value(GraphPropertiesDictionary.NAME.getProperty());
+ if (!serviceCategoriesNotToDelete.contains(name)) {
+ String id = category.value(GraphPropertiesDictionary.UNIQUE_ID.getProperty());
+ serviceCategoriesToDelete.add(id);
+ }
+ }
+ }
+
+ vertices = titanGraph.query().has(GraphPropertiesDictionary.LABEL.getProperty(), NodeTypeEnum.ProductCategory.getName()).vertices();
+ if (vertices != null) {
+ Iterator<TitanVertex> iter = vertices.iterator();
+ while (iter.hasNext()) {
+ Vertex category = iter.next();
+ String catId = category.value(GraphPropertiesDictionary.UNIQUE_ID.getProperty());
+ productCategoriesToDelete.add(catId);
+ Iterator<Vertex> subs = category.vertices(Direction.OUT, GraphEdgeLabels.SUB_CATEGORY.getProperty());
+ while (subs.hasNext()) {
+ Vertex sub = subs.next();
+ String subCatId = sub.value(GraphPropertiesDictionary.UNIQUE_ID.getProperty());
+ productSubsToDelete.add(new ImmutablePair<String, String>(catId, subCatId));
+ Iterator<Vertex> groupings = sub.vertices(Direction.OUT, GraphEdgeLabels.GROUPING.getProperty());
+ while (groupings.hasNext()) {
+ Vertex grouping = groupings.next();
+ String groupId = grouping.value(GraphPropertiesDictionary.UNIQUE_ID.getProperty());
+ productGroupingsToDelete.add(new ImmutableTriple<String, String, String>(catId, subCatId, groupId));
+ }
+ }
+
+ }
+ }
+
+ titanGraph.tx().commit();
+
+ String adminId = UserRoleEnum.ADMIN.getUserId();
+ String productStrategistId = UserRoleEnum.PRODUCT_STRATEGIST1.getUserId();
+
+ // Component delete
+ for (String id : productsToDelete) {
+ RestResponse deleteProduct = ProductRestUtils.deleteProduct(id, productStrategistId);
+
+ }
+ for (String id : servicesToDelete) {
+ RestResponse deleteServiceById = ServiceRestUtils.deleteServiceById(id, adminId);
+
+ }
+ for (String id : vfResourcesToDelete) {
+ RestResponse deleteResource = ResourceRestUtils.deleteResource(id, adminId);
+
+ }
+
+ for (String id : nonVfResourcesToDelete) {
+ RestResponse deleteResource = ResourceRestUtils.deleteResource(id, adminId);
+
+ }
+
+ // Categories delete - product
+ String componentType = BaseRestUtils.PRODUCT_COMPONENT_TYPE;
+ for (ImmutableTriple<String, String, String> triple : productGroupingsToDelete) {
+ CategoryRestUtils.deleteGrouping(triple.getRight(), triple.getMiddle(), triple.getLeft(), productStrategistId, componentType);
+ }
+ for (ImmutablePair<String, String> pair : productSubsToDelete) {
+ CategoryRestUtils.deleteSubCategory(pair.getRight(), pair.getLeft(), productStrategistId, componentType);
+ }
+ for (String id : productCategoriesToDelete) {
+ CategoryRestUtils.deleteCategory(id, productStrategistId, componentType);
+ }
+
+ // Categories delete - resource
+ componentType = BaseRestUtils.RESOURCE_COMPONENT_TYPE;
+ for (ImmutablePair<String, String> pair : resourceSubsToDelete) {
+ CategoryRestUtils.deleteSubCategory(pair.getRight(), pair.getLeft(), adminId, componentType);
+ }
+ for (String id : resourceCategoriesToDelete) {
+ CategoryRestUtils.deleteCategory(id, adminId, componentType);
+ }
+ // Categories delete - resource
+ componentType = BaseRestUtils.SERVICE_COMPONENT_TYPE;
+ for (String id : serviceCategoriesToDelete) {
+ CategoryRestUtils.deleteCategory(id, adminId, componentType);
+ }
+
+ }
+
+}