From 08d85958f46d1de9aec9cf459632b5be040063be Mon Sep 17 00:00:00 2001 From: vempo Date: Mon, 23 Apr 2018 16:49:14 +0300 Subject: Moved validation test util class to test jar Change-Id: I113012ee0fbaeaaa1f4cecf69de442fdd66c89bf Issue-ID: SDC-1243 Signed-off-by: vempo --- .../openecomp-sdc-validation-impl/pom.xml | 7 + .../openecomp-sdc-validation-sdk/pom.xml | 17 ++ .../sdc/validation/util/ValidationTestUtil.java | 198 --------------------- .../sdc/validation/util/ValidationTestUtil.java | 189 ++++++++++++++++++++ 4 files changed, 213 insertions(+), 198 deletions(-) delete mode 100644 openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-sdk/src/main/java/org/openecomp/sdc/validation/util/ValidationTestUtil.java create mode 100644 openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-sdk/src/test/java/org/openecomp/sdc/validation/util/ValidationTestUtil.java (limited to 'openecomp-be') diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/pom.xml b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/pom.xml index 0b2cb5f2a8..2eb7df7474 100644 --- a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/pom.xml +++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-impl/pom.xml @@ -86,6 +86,13 @@ openecomp-sdc-validation-core ${project.version} + + org.openecomp.sdc + openecomp-sdc-validation-sdk + ${project.version} + test-jar + test + diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-sdk/pom.xml b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-sdk/pom.xml index ad49dac2f6..180e3184fc 100644 --- a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-sdk/pom.xml +++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-sdk/pom.xml @@ -42,5 +42,22 @@ + + + + org.apache.maven.plugins + maven-jar-plugin + ${mvn.jar.version} + + + + test-jar + + + + + + + diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-sdk/src/main/java/org/openecomp/sdc/validation/util/ValidationTestUtil.java b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-sdk/src/main/java/org/openecomp/sdc/validation/util/ValidationTestUtil.java deleted file mode 100644 index 13f2d638d2..0000000000 --- a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-sdk/src/main/java/org/openecomp/sdc/validation/util/ValidationTestUtil.java +++ /dev/null @@ -1,198 +0,0 @@ -package org.openecomp.sdc.validation.util; - -import org.apache.commons.collections4.MapUtils; -import org.apache.commons.io.IOUtils; -import org.openecomp.core.utilities.CommonMethods; -import org.openecomp.core.utilities.file.FileUtils; -import org.openecomp.core.utilities.json.JsonUtil; -import org.openecomp.core.validation.errors.ErrorMessagesFormatBuilder; -import org.openecomp.core.validation.types.GlobalValidationContext; -import org.openecomp.core.validation.types.MessageContainer; -import org.openecomp.sdc.datatypes.configuration.ImplementationConfiguration; -import org.openecomp.sdc.heat.datatypes.manifest.FileData; -import org.openecomp.sdc.heat.datatypes.manifest.ManifestContent; -import org.openecomp.sdc.heat.datatypes.model.HeatOrchestrationTemplate; -import org.openecomp.sdc.heat.datatypes.model.Resource; -import org.openecomp.sdc.heat.services.HeatStructureUtil; -import org.openecomp.sdc.heat.services.manifest.ManifestUtil; -import org.openecomp.sdc.logging.api.Logger; -import org.openecomp.sdc.logging.api.LoggerFactory; -import org.openecomp.sdc.validation.ResourceValidator; -import org.openecomp.sdc.validation.ValidationContext; -import org.openecomp.sdc.validation.Validator; -import org.openecomp.sdc.validation.base.ResourceBaseValidator; - - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.net.URL; -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; -import java.util.Objects; - -/** - * Created by TALIO on 2/26/2017. - */ -public class ValidationTestUtil { - - private static final Logger LOG = LoggerFactory.getLogger(ValidationTestUtil.class - .getName()); - - private ValidationTestUtil(){} - - public static GlobalValidationContext createGlobalContextFromPath(String path) { - GlobalValidationContext globalValidationContext = new GlobalValidationContext(); - Map contentMap = getContentMapByPath(path); - if (contentMap == null) { - return null; - } - contentMap.entrySet() - .forEach(entry -> globalValidationContext.addFileContext(entry.getKey(), entry.getValue())); - - return globalValidationContext; - } - - private static Map getContentMapByPath(String path) { - Map contentMap = new HashMap<>(); - URL url = ValidationTestUtil.class.getResource(path); - File pathFile = new File(url.getFile()); - File[] files; - if (pathFile.isDirectory()) { - files = pathFile.listFiles(); - } else { - files = new File[]{pathFile}; - } - - if (files == null || files.length == 0) { - return null; - } - - for (File file : files) { - - try (FileInputStream fis = new FileInputStream(file)) { - contentMap.put(file.getName(), FileUtils.toByteArray(fis)); - } catch (IOException e) { - throw new RuntimeException("Failed to read file: " + file, e); - } - - } - return contentMap; - } - - public static Map testValidator(Validator validator, String path) { - - GlobalValidationContext globalValidationContext = createGlobalContextFromPath(path); - validator.validate(globalValidationContext); - - assert globalValidationContext != null; - return globalValidationContext.getContextMessageContainers(); - - - } - - public static Map testValidator(ResourceBaseValidator baseValidator, - ResourceValidator resourceValidator, - String resourceTypeToValidate, String path) { - - GlobalValidationContext globalContext = createGlobalContextFromPath(path); - ManifestContent manifestContent = ValidationUtil.validateManifest(globalContext); - Map fileTypeMap = ManifestUtil.getFileTypeMap(manifestContent); - Map fileEnvMap = ManifestUtil.getFileAndItsEnv(manifestContent); - - validateFiles(baseValidator, resourceValidator, globalContext, fileEnvMap, fileTypeMap, - resourceTypeToValidate); - - assert globalContext != null; - return globalContext.getContextMessageContainers(); - - - } - - private static void validateFiles(ResourceBaseValidator baseValidator, - ResourceValidator resourceValidator, - GlobalValidationContext globalContext, - Map fileEnvMap, - Map fileTypeMap, - String resourceTypeToValidate) { - - Collection files = globalContext.getFiles(); - for(String fileName : files){ - if(FileData.isHeatFile(fileTypeMap.get(fileName))) { - HeatOrchestrationTemplate heatOrchestrationTemplate = - ValidationUtil.checkHeatOrchestrationPreCondition(fileName, globalContext); - - if (Objects.isNull(heatOrchestrationTemplate)) { - continue; - } - - ValidationContext validationContext = baseValidator.createValidationContext - (fileName, - fileEnvMap.get(fileName) == null ? null : fileEnvMap.get(fileName).getFile(), - heatOrchestrationTemplate, globalContext); - - validateResources(fileName, resourceValidator, resourceTypeToValidate, validationContext, - globalContext); - } - } - } - - public static void validateResources(String fileName, - ResourceValidator resourceValidator, - String resourceTypeToValidate, - ValidationContext validationContext, - GlobalValidationContext globalValidationContext){ - - HeatOrchestrationTemplate heatOrchestrationTemplate = - ValidationUtil.checkHeatOrchestrationPreCondition(fileName, globalValidationContext); - Map resourcesMap = heatOrchestrationTemplate.getResources(); - - if(MapUtils.isEmpty(resourcesMap)){ - return; - } - - resourcesMap.entrySet() - .stream() - .filter(resourceEntry -> isResourceNeedToBeTested(resourceEntry.getValue().getType(), resourceTypeToValidate)) - .forEach(resourceEntry -> - resourceValidator.validate - (fileName, resourceEntry, globalValidationContext, validationContext)); - } - - private static boolean isResourceNeedToBeTested(String currResource, String resourceToTest){ - if(Objects.isNull(resourceToTest)){ - return HeatStructureUtil.isNestedResource(currResource); - } - - return currResource.equals(resourceToTest); - } - - public static void validateErrorMessage(String actualMessage, String expected, String... params) { - if (!Objects.equals(actualMessage.replace("\n", "").replace("\r", ""), - ErrorMessagesFormatBuilder.getErrorWithParameters(expected, params).replace("\n", "") - .replace("\r", ""))){ - throw new RuntimeException("validation failed"); - } - - } - - public static Validator cerateValidatorImpl(ImplementationConfiguration validatorConf) { - Validator validator = null; - try { - validator = - CommonMethods.newInstance(validatorConf.getImplementationClass(), Validator.class); - validator.init(validatorConf.getProperties()); - } catch (IllegalArgumentException iae) { - LOG.debug("",iae); - return null; - } - return validator; - } - - public static Map getResourceMap(String configFileName) throws IOException { - URL mockResource = ValidationTestUtil.class.getResource(configFileName); - String json = IOUtils.toString(mockResource.openStream(), "UTF-8"); - return JsonUtil.json2Object(json, Map.class); - } -} diff --git a/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-sdk/src/test/java/org/openecomp/sdc/validation/util/ValidationTestUtil.java b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-sdk/src/test/java/org/openecomp/sdc/validation/util/ValidationTestUtil.java new file mode 100644 index 0000000000..41fbf45c64 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-validation-lib/openecomp-sdc-validation-sdk/src/test/java/org/openecomp/sdc/validation/util/ValidationTestUtil.java @@ -0,0 +1,189 @@ +/* + * Copyright © 2016-2018 European Support Limited + * + * 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. + */ + +package org.openecomp.sdc.validation.util; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.net.URL; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; +import org.apache.commons.collections4.MapUtils; +import org.apache.commons.io.IOUtils; +import org.openecomp.core.utilities.file.FileUtils; +import org.openecomp.core.utilities.json.JsonUtil; +import org.openecomp.core.validation.errors.ErrorMessagesFormatBuilder; +import org.openecomp.core.validation.types.GlobalValidationContext; +import org.openecomp.core.validation.types.MessageContainer; +import org.openecomp.sdc.heat.datatypes.manifest.FileData; +import org.openecomp.sdc.heat.datatypes.manifest.ManifestContent; +import org.openecomp.sdc.heat.datatypes.model.HeatOrchestrationTemplate; +import org.openecomp.sdc.heat.datatypes.model.Resource; +import org.openecomp.sdc.heat.services.HeatStructureUtil; +import org.openecomp.sdc.heat.services.manifest.ManifestUtil; +import org.openecomp.sdc.validation.ResourceValidator; +import org.openecomp.sdc.validation.ValidationContext; +import org.openecomp.sdc.validation.Validator; +import org.openecomp.sdc.validation.base.ResourceBaseValidator; +import org.testng.Assert; + +/** + * @author TALIO + * @since 26 Feb 2017 + */ +public class ValidationTestUtil { + + private ValidationTestUtil(){} + + public static GlobalValidationContext createGlobalContextFromPath(String path) { + GlobalValidationContext globalValidationContext = new GlobalValidationContext(); + Map contentMap = getContentMapByPath(path); + if (contentMap == null) { + return null; + } + contentMap.forEach(globalValidationContext::addFileContext); + + return globalValidationContext; + } + + private static Map getContentMapByPath(String path) { + Map contentMap = new HashMap<>(); + URL url = ValidationTestUtil.class.getResource(path); + File pathFile = new File(url.getFile()); + File[] files; + if (pathFile.isDirectory()) { + files = pathFile.listFiles(); + } else { + files = new File[]{pathFile}; + } + + if (files == null || files.length == 0) { + return null; + } + + for (File file : files) { + + try (FileInputStream fis = new FileInputStream(file)) { + contentMap.put(file.getName(), FileUtils.toByteArray(fis)); + } catch (IOException e) { + throw new RuntimeException("Failed to read file: " + file, e); + } + + } + return contentMap; + } + + public static Map testValidator(Validator validator, String path) { + + GlobalValidationContext globalValidationContext = createGlobalContextFromPath(path); + validator.validate(globalValidationContext); + + assert globalValidationContext != null; + return globalValidationContext.getContextMessageContainers(); + + + } + + public static Map testValidator(ResourceBaseValidator baseValidator, + ResourceValidator resourceValidator, + String resourceTypeToValidate, String path) { + + GlobalValidationContext globalContext = Objects.requireNonNull( + createGlobalContextFromPath(path), "Global validation context cannot be null"); + + ManifestContent manifestContent = ValidationUtil.validateManifest(globalContext); + Map fileTypeMap = ManifestUtil.getFileTypeMap(manifestContent); + Map fileEnvMap = ManifestUtil.getFileAndItsEnv(manifestContent); + + validateFiles(baseValidator, resourceValidator, globalContext, fileEnvMap, fileTypeMap, + resourceTypeToValidate); + + return globalContext.getContextMessageContainers(); + } + + private static void validateFiles(ResourceBaseValidator baseValidator, + ResourceValidator resourceValidator, + GlobalValidationContext globalContext, + Map fileEnvMap, + Map fileTypeMap, + String resourceTypeToValidate) { + + Collection files = globalContext.getFiles(); + for(String fileName : files){ + if(FileData.isHeatFile(fileTypeMap.get(fileName))) { + HeatOrchestrationTemplate heatOrchestrationTemplate = + ValidationUtil.checkHeatOrchestrationPreCondition(fileName, globalContext); + + if (Objects.isNull(heatOrchestrationTemplate)) { + continue; + } + + ValidationContext validationContext = baseValidator.createValidationContext(fileName, + fileEnvMap.get(fileName) == null ? null : fileEnvMap.get(fileName).getFile(), + heatOrchestrationTemplate, globalContext); + + validateResources(fileName, resourceValidator, resourceTypeToValidate, validationContext, + globalContext); + } + } + } + + private static void validateResources(String fileName, ResourceValidator resourceValidator, + String resourceTypeToValidate, ValidationContext validationContext, + GlobalValidationContext globalValidationContext){ + + HeatOrchestrationTemplate heatOrchestrationTemplate = + ValidationUtil.checkHeatOrchestrationPreCondition(fileName, globalValidationContext); + + Map resourcesMap = + Objects.requireNonNull(heatOrchestrationTemplate, "Orchestration template cannot be null").getResources(); + + if(MapUtils.isEmpty(resourcesMap)){ + return; + } + + resourcesMap.entrySet() + .stream() + .filter(resourceEntry -> isResourceNeedToBeTested(resourceEntry.getValue().getType(), resourceTypeToValidate)) + .forEach(resourceEntry -> + resourceValidator.validate + (fileName, resourceEntry, globalValidationContext, validationContext)); + } + + private static boolean isResourceNeedToBeTested(String currResource, String resourceToTest){ + if(Objects.isNull(resourceToTest)){ + return HeatStructureUtil.isNestedResource(currResource); + } + + return currResource.equals(resourceToTest); + } + + public static void validateErrorMessage(String actualMessage, String expected, String... params) { + + Assert.assertEquals(actualMessage.replace("\n", "").replace("\r", ""), + ErrorMessagesFormatBuilder.getErrorWithParameters(expected, params).replace("\n", "") + .replace("\r", "")); + } + + public static Map getResourceMap(String configFileName) throws IOException { + URL mockResource = ValidationTestUtil.class.getResource(configFileName); + String json = IOUtils.toString(mockResource.openStream(), "UTF-8"); + return JsonUtil.json2Object(json, Map.class); + } +} -- cgit 1.2.3-korg