summaryrefslogtreecommitdiffstats
path: root/test-apis-ci/src/main/java/org/openecomp/sdc/ci/tests/utils/general/AtomicOperationUtils.java
diff options
context:
space:
mode:
Diffstat (limited to 'test-apis-ci/src/main/java/org/openecomp/sdc/ci/tests/utils/general/AtomicOperationUtils.java')
-rw-r--r--test-apis-ci/src/main/java/org/openecomp/sdc/ci/tests/utils/general/AtomicOperationUtils.java129
1 files changed, 123 insertions, 6 deletions
diff --git a/test-apis-ci/src/main/java/org/openecomp/sdc/ci/tests/utils/general/AtomicOperationUtils.java b/test-apis-ci/src/main/java/org/openecomp/sdc/ci/tests/utils/general/AtomicOperationUtils.java
index 58ab9f353e..56c350f471 100644
--- a/test-apis-ci/src/main/java/org/openecomp/sdc/ci/tests/utils/general/AtomicOperationUtils.java
+++ b/test-apis-ci/src/main/java/org/openecomp/sdc/ci/tests/utils/general/AtomicOperationUtils.java
@@ -29,16 +29,16 @@ import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
-
-import javax.xml.bind.helpers.AbstractUnmarshallerImpl;
-import javax.xml.ws.Response;
+import java.util.Map.Entry;
+import java.util.concurrent.TimeUnit;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang3.tuple.Pair;
-import org.aspectj.apache.bcel.classfile.Code;
import org.json.JSONException;
import org.openecomp.sdc.be.datatypes.elements.ConsumerDataDefinition;
+import org.openecomp.sdc.be.datatypes.enums.AssetTypeEnum;
import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
import org.openecomp.sdc.be.model.ArtifactDefinition;
@@ -50,14 +50,18 @@ 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.api.ComponentBaseTest;
+import org.openecomp.sdc.ci.tests.api.ExtentTestActions;
import org.openecomp.sdc.ci.tests.api.Urls;
import org.openecomp.sdc.ci.tests.config.Config;
import org.openecomp.sdc.ci.tests.datatypes.ArtifactReqDetails;
import org.openecomp.sdc.ci.tests.datatypes.ComponentInstanceReqDetails;
+import org.openecomp.sdc.ci.tests.datatypes.DistributionMonitorObject;
import org.openecomp.sdc.ci.tests.datatypes.ImportReqDetails;
import org.openecomp.sdc.ci.tests.datatypes.ProductReqDetails;
import org.openecomp.sdc.ci.tests.datatypes.PropertyReqDetails;
import org.openecomp.sdc.ci.tests.datatypes.ResourceReqDetails;
+import org.openecomp.sdc.ci.tests.datatypes.ServiceDistributionStatus;
import org.openecomp.sdc.ci.tests.datatypes.ServiceReqDetails;
import org.openecomp.sdc.ci.tests.datatypes.enums.ArtifactTypeEnum;
import org.openecomp.sdc.ci.tests.datatypes.enums.LifeCycleStatesEnum;
@@ -69,8 +73,11 @@ import org.openecomp.sdc.ci.tests.datatypes.enums.UserRoleEnum;
import org.openecomp.sdc.ci.tests.datatypes.http.HttpHeaderEnum;
import org.openecomp.sdc.ci.tests.datatypes.http.HttpRequest;
import org.openecomp.sdc.ci.tests.datatypes.http.RestResponse;
+import org.openecomp.sdc.ci.tests.utils.CsarToscaTester;
+import org.openecomp.sdc.ci.tests.utils.DistributionUtils;
import org.openecomp.sdc.ci.tests.utils.Utils;
import org.openecomp.sdc.ci.tests.utils.rest.ArtifactRestUtils;
+import org.openecomp.sdc.ci.tests.utils.rest.AssetRestUtils;
import org.openecomp.sdc.ci.tests.utils.rest.BaseRestUtils;
import org.openecomp.sdc.ci.tests.utils.rest.ComponentInstanceRestUtils;
import org.openecomp.sdc.ci.tests.utils.rest.ConsumerRestUtils;
@@ -81,8 +88,11 @@ 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.openecomp.sdc.common.api.ArtifactGroupTypeEnum;
+import org.openecomp.sdc.tosca.parser.api.ISdcCsarHelper;
+import org.openecomp.sdc.tosca.parser.impl.SdcToscaParserFactory;
import org.testng.SkipException;
+import com.aventstack.extentreports.Status;
import com.google.gson.Gson;
import fj.data.Either;
@@ -194,6 +204,25 @@ public final class AtomicOperationUtils {
return Either.right(resourceResp);
}
+ public static Either<Resource, RestResponse> updateResource(ResourceReqDetails resourceReqDetails, User defaultUser, Boolean validateState) {
+ try {
+
+ RestResponse resourceResp = ResourceRestUtils.updateResource(resourceReqDetails, defaultUser, resourceReqDetails.getUniqueId());
+
+ if (validateState) {
+ assertTrue(resourceResp.getErrorCode() == ResourceRestUtils.STATUS_CODE_SUCCESS);
+ }
+
+ if (resourceResp.getErrorCode() == ResourceRestUtils.STATUS_CODE_SUCCESS) {
+ Resource resourceResponseObject = ResponseParser.convertResourceResponseToJavaObject(resourceResp.getResponse());
+ return Either.left(resourceResponseObject);
+ }
+ return Either.right(resourceResp);
+ } catch (Exception e) {
+ throw new AtomicOperationException(e);
+ }
+ }
+
// *********** SERVICE ****************
public static Either<Service, RestResponse> createDefaultService(UserRoleEnum userRole, Boolean validateState) throws Exception {
@@ -361,7 +390,7 @@ public final class AtomicOperationUtils {
RestResponse distributionService = null;
RestResponse approveDistribution = LifecycleRestUtils.changeDistributionStatus(serviceDetails, null, governotUser, "approveService", DistributionStatusEnum.DISTRIBUTION_APPROVED);
- if (approveDistribution.getErrorCode() == 200) {
+ if (approveDistribution.getErrorCode() == BaseRestUtils.STATUS_CODE_SUCCESS) {
distributionService = LifecycleRestUtils.changeDistributionStatus(serviceDetails, null, opsUser, "approveService", DistributionStatusEnum.DISTRIBUTED);
}
@@ -375,6 +404,19 @@ public final class AtomicOperationUtils {
}
+
+ public static void toscaValidation(Component component, String vnfFile) throws Exception {
+
+ ISdcCsarHelper fdntCsarHelper;
+ SdcToscaParserFactory factory = SdcToscaParserFactory.getInstance();
+ File csarFile = AssetRestUtils.getToscaModelCsarFile(AssetTypeEnum.SERVICES, component.getUUID() , vnfFile);
+ ExtentTestActions.log(Status.INFO, "Tosca parser is going to convert service csar file to ISdcCsarHelper object...");
+ fdntCsarHelper = factory.getSdcCsarHelper(csarFile.getAbsolutePath());
+ CsarToscaTester.processCsar(fdntCsarHelper);
+ ExtentTestActions.log(Status.INFO, String.format("Tosca parser successfully parsed service CSAR"));
+
+ }
+
// *********** ARTIFACTS *****************
public static Either<ArtifactDefinition, RestResponse> uploadArtifactByType(ArtifactTypeEnum artifactType, Component component, UserRoleEnum userRole, Boolean deploymentTrue, Boolean validateState) throws Exception {
@@ -769,13 +811,88 @@ public final class AtomicOperationUtils {
}
HttpRequest http = new HttpRequest();
RestResponse response = http.httpSendGet(url, headersMap);
- if (response.getErrorCode() != 200 && response.getResponse().getBytes() == null && response.getResponse().getBytes().length == 0) {
+ if (response.getErrorCode() != BaseRestUtils.STATUS_CODE_SUCCESS && response.getResponse().getBytes() == null && response.getResponse().getBytes().length == 0) {
return Either.right(response);
}
return Either.left(response.getResponse());
}
+ public static RestResponse getDistributionStatusByDistributionId(String distributionId ,Boolean validateState) {
+
+ try {
+ User defaultUser = ElementFactory.getDefaultUser(UserRoleEnum.OPS);
+ RestResponse response = DistributionUtils.getDistributionStatus(defaultUser, distributionId);
+
+ if (validateState) {
+ assertTrue(response.getErrorCode() == ResourceRestUtils.STATUS_CODE_SUCCESS);
+ }
+ return response;
+
+ } catch (Exception e) {
+ throw new AtomicOperationException(e);
+ }
+ }
+
+ public static Either <RestResponse, Map<String, List<DistributionMonitorObject>>> getSortedDistributionStatusMap(Service service ,Boolean validateState) {
+
+ try {
+ ServiceDistributionStatus serviceDistributionObject = DistributionUtils.getLatestServiceDistributionObject(service);
+ RestResponse response = getDistributionStatusByDistributionId(serviceDistributionObject.getDistributionID(), true);
+
+ if(validateState) {
+ assertTrue(response.getErrorCode() == ResourceRestUtils.STATUS_CODE_SUCCESS);
+ }
+ if(response.getErrorCode() == ResourceRestUtils.STATUS_CODE_SUCCESS){
+ Map<String, List<DistributionMonitorObject>> parsedDistributionStatus = DistributionUtils.getSortedDistributionStatus(response);
+ return Either.right(parsedDistributionStatus);
+ }
+ return Either.left(response);
+ } catch (Exception e) {
+ throw new AtomicOperationException(e);
+ }
+
+ }
+ /**
+ * @param service
+ * @param pollingCount
+ * @param pollingInterval
+ * Recommended values for service distribution for pollingCount is 4 and for pollingInterval is 15000ms
+ * @throws Exception
+ */
+ public static Boolean distributeAndValidateService(Service service, int pollingCount, int pollingInterval) throws Exception {
+
+ Boolean statusFlag = true;
+ AtomicOperationUtils.distributeService(service, true);
+ TimeUnit.MILLISECONDS.sleep(pollingInterval);
+ int timeOut = pollingCount * pollingInterval;
+ while (timeOut > 0) {
+ Map<String,List<DistributionMonitorObject>> sortedDistributionStatusMap = AtomicOperationUtils.getSortedDistributionStatusMap(service, true).right().value();
+ com.clearspring.analytics.util.Pair<Boolean,Map<String,List<String>>> verifyDistributionStatus = DistributionUtils.verifyDistributionStatus(sortedDistributionStatusMap);
+ if(verifyDistributionStatus.left.equals(false)){
+ if((verifyDistributionStatus.right != null && ! verifyDistributionStatus.right.isEmpty()) && timeOut == 0){
+ for(Entry<String, List<String>> entry : verifyDistributionStatus.right.entrySet()){
+ if(ComponentBaseTest.getExtendTest() != null){
+ ComponentBaseTest.getExtendTest().log(Status.INFO, "Consumer: " + entry.getKey() + " failed on following: "+ entry.getValue());
+ statusFlag = false;
+ }else{
+ System.out.println("Consumer: " + entry.getKey() + " failed on following: "+ entry.getValue());
+ }
+ }
+ }
+ TimeUnit.MILLISECONDS.sleep(pollingInterval);
+ timeOut-=pollingInterval;
+ }else {
+ timeOut = 0;
+ }
+ }
+ return statusFlag;
+ }
+
+ public static Boolean distributeAndValidateService(Service service) throws Exception {
+ return distributeAndValidateService(service, 6, 10000);
+ }
+
}