summaryrefslogtreecommitdiffstats
path: root/csarvalidation
diff options
context:
space:
mode:
authorMurali-P <murali.p@huawei.com>2018-04-04 18:19:29 +0530
committerMurali-P <murali.p@huawei.com>2018-04-04 18:19:29 +0530
commitfcb4e980f76116edb2ec6a656a99d510c70c1c94 (patch)
tree114da667ffbb27ed3574cdeb32ae6ed0baa6357e /csarvalidation
parent395bc63e559da4b6e201e7271ac65d12e6f5f6c5 (diff)
Enhance error messages for validation
Show proper error message in UI Change-Id: I39158f3d727cd817758fd688ec6bbf4fbd8ae426 Issue-ID: VNFSDK-233 Signed-off-by: Murali-P <murali.p@huawei.com>
Diffstat (limited to 'csarvalidation')
-rw-r--r--csarvalidation/src/main/java/org/onap/validation/csar/CsarValidator.java409
-rw-r--r--csarvalidation/src/main/java/org/onap/validation/csar/ValidatorSchemaLoader.java137
-rw-r--r--csarvalidation/src/test/java/org/onap/validation/csarvalidationtest/CsarValidatorTest.java64
3 files changed, 325 insertions, 285 deletions
diff --git a/csarvalidation/src/main/java/org/onap/validation/csar/CsarValidator.java b/csarvalidation/src/main/java/org/onap/validation/csar/CsarValidator.java
index bd5646c..88cd0e0 100644
--- a/csarvalidation/src/main/java/org/onap/validation/csar/CsarValidator.java
+++ b/csarvalidation/src/main/java/org/onap/validation/csar/CsarValidator.java
@@ -13,290 +13,309 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package org.onap.validation.csar;
+import static java.nio.charset.StandardCharsets.UTF_8;
-import org.apache.commons.io.FilenameUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import java.io.*;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.RandomAccessFile;
import java.nio.file.Files;
import java.nio.file.Paths;
-import static java.nio.charset.StandardCharsets.*;
-import java.util.*;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
import java.util.stream.Collectors;
+
+import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.yaml.snakeyaml.Yaml;
public class CsarValidator {
private static final Logger LOG = LoggerFactory.getLogger(CsarValidator.class);
- //Schema files
+ // Schema files
static private ValidatorSchemaLoader vsl;
- // Map of CSAR file and un-zipped file indices
+ // Map of CSAR file and un-zipped file indices
static private HashMap<String, String> csarFiles;
- // Map of packageId and CSAR files
+ // Map of packageId and CSAR files
private static HashMap<String, HashMap<String, String>> csar = new HashMap<String, HashMap<String, String>>();
+
private static String MAINSERV_TEMPLATE = CommonConstants.MAINSERV_TEMPLATE;
+
private static String MAINSERV_MANIFEST;
/**
- *
* @param packageId
* @param csarWithPath
- * @throws IOException
+ * @throws IOException
*/
public CsarValidator(String packageId, String csarWithPath) throws IOException {
- try(FileInputStream is = new FileInputStream(csarWithPath)) {
-
- } catch (FileNotFoundException e2) {
- LOG.error("CSAR %s is not found! " +ErrorCodes.RESOURCE_MISSING, e2);
- throw new ValidationException(ErrorCodes.RESOURCE_MISSING);
- }
+ try (FileInputStream is = new FileInputStream(csarWithPath)) {
- try {
- csarFiles = CsarUtil.csarExtract(csarWithPath);
- if(!csarFiles.isEmpty()) {
- csar.put(packageId, getCsarFiles());
- LOG.debug("CSAR extracted sucessfully.");
- }
- } catch (Exception e1) {
- LOG.error("INVALID_CSAR_CONTENT" + ":" + "CSAR %s is not a valid CSAR/ZIP file! " +ErrorCodes.INVALID_CSAR_CONTENT, e1);
- throw new ValidationException(ErrorCodes.INVALID_CSAR_CONTENT);
- }
+ } catch(FileNotFoundException e2) {
+ LOG.error(csarWithPath + ":CSAR is not found! " + ErrorCodes.RESOURCE_MISSING, e2);
+ throw new ValidationException(ErrorCodes.RESOURCE_MISSING,
+ "RESOURCE MISSING" + csarWithPath + ":CSAR is not found!");
+ }
+ try {
+ csarFiles = CsarUtil.csarExtract(csarWithPath);
+ if(!csarFiles.isEmpty()) {
+ csar.put(packageId, getCsarFiles());
+ LOG.debug("CSAR extracted sucessfully.");
+ }
+ } catch(Exception e1) {
+ LOG.error("INVALID_CSAR_CONTENT" + ":" + csarWithPath + ": CSAR is not a valid CSAR/ZIP file! "
+ + ErrorCodes.INVALID_CSAR_CONTENT, e1);
+ throw new ValidationException(ErrorCodes.INVALID_CSAR_CONTENT,
+ "INVALID_CSAR_CONTENT" + ":" + csarWithPath + ": CSAR is not a valid CSAR/ZIP file! ");
+ }
try {
- vsl = new ValidatorSchemaLoader();
- } catch (Exception e) {
- LOG.error("SCHEMA_LOAD_ERROR" + ":" + "CSAR schema is not loaded correctly! " +ErrorCodes.SCHEMA_LOAD_ERROR, e);
- throw new ValidationException(ErrorCodes.SCHEMA_LOAD_ERROR);
+ vsl = new ValidatorSchemaLoader();
+ } catch(Exception e) {
+ LOG.error(
+ "SCHEMA_LOAD_ERROR" + ":" + "CSAR schema is not loaded correctly! " + ErrorCodes.SCHEMA_LOAD_ERROR,
+ e);
+ throw new ValidationException(ErrorCodes.SCHEMA_LOAD_ERROR,
+ "SCHEMA_LOAD_ERROR" + ":" + "CSAR schema is not loaded correctly! ");
}
}
+
/**
- *
* @return true if all validations are successful
*/
- public static boolean validateCsar() {
+ public static String validateCsar() {
- boolean vsm = validateCsarMeta();
+ String vsm = validateCsarMeta();
- boolean vtm = validateAndScanToscaMeta();
+ String vtm = validateAndScanToscaMeta();
- boolean vms = validateMainService();
+ String vms = validateMainService();
- if ((vsm || vms ) && vtm) {
- return true;
+ if((CommonConstants.SUCCESS_STR != vsm) && (CommonConstants.SUCCESS_STR != vms)) {
+
+ return vsm + " OR " + vms;
}
+ if(CommonConstants.SUCCESS_STR != vtm) {
+ return vtm;
+ }
- return false;
+ return CommonConstants.SUCCESS_STR;
}
-
+
/**
- *
* @param csarWithPath
* @return true if csar integrity validation is successful
*/
public static boolean validateCsarIntegrity(String csarWithPath) {
- try {
- RandomAccessFile raf = new RandomAccessFile(csarWithPath, "r");
- try {
- long n = raf.readInt();
-
- // Check for the CSAR's integrity
- if (n != 0x504B0304) {
- LOG.error("CSAR %s contents are not a valid! ");
- return false;
- }
- } catch (FileNotFoundException e1) {
- LOG.error("CSAR %s is not a valid CSAR/ZIP file! ", e1);
- return false;
- }
- finally {
- raf.close();
- }
- }
- catch (IOException e1) {
- LOG.error("CSAR %s is not a valid CSAR/ZIP file! ", e1);
- return false;
- }
- return true;
+ try {
+ RandomAccessFile raf = new RandomAccessFile(csarWithPath, "r");
+ try {
+ long n = raf.readInt();
+
+ // Check for the CSAR's integrity
+ if(n != 0x504B0304) {
+ LOG.error("CSAR %s contents are not a valid! ");
+ return false;
+ }
+ } catch(FileNotFoundException e1) {
+ LOG.error("CSAR %s is not a valid CSAR/ZIP file! ", e1);
+ return false;
+ } finally {
+ raf.close();
+ }
+ } catch(IOException e1) {
+ LOG.error("CSAR %s is not a valid CSAR/ZIP file! ", e1);
+ return false;
+ }
+ return true;
}
/**
- *
* @return true if csar meta data validation is successful
*/
- public static boolean validateCsarMeta() {
+ public static String validateCsarMeta() {
- String cfile = csarFiles.get(CommonConstants.CSAR_META);
- if (StringUtils.isEmpty(cfile)) {
- return false;
+ String cfile = csarFiles.get(CommonConstants.CSAR_META);
+ if(null == cfile) {
+ return "VNF package do not contain csar.meta file";
+ }
+ if(!cfile.isEmpty()) {
+ File file = new File(cfile);
+
+ try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
+ String tempString = null;
+ while((tempString = reader.readLine()) != null) {
+ if(!tempString.equals("")) {
+ int count1 = tempString.indexOf(":");
+ String meta = tempString.substring(0, count1).trim();
+ if(meta.equalsIgnoreCase(CommonConstants.CSAR_TYPE_META)) {
+ int count = tempString.indexOf(":") + 1;
+ if(tempString.substring(count).trim().isEmpty()) {
+ return "Validating csar.meta:Type field is in wrong format or empty";
+ }
+ }
+ if(meta.equalsIgnoreCase(CommonConstants.CSAR_PROVIDER_META)) {
+ int count = tempString.indexOf(":") + 1;
+ if(tempString.substring(count).trim().isEmpty()) {
+ return "Validating csar.meta:Provider field is in wrong format or empty";
+ }
+ }
+ if(meta.equalsIgnoreCase(CommonConstants.CSAR_VERSION_META)) {
+ int count = tempString.indexOf(":") + 1;
+ if(tempString.substring(count).trim().isEmpty()) {
+ return "Validating csar.meta:Version field is in wrong format or empty";
+ }
+ }
+ }
+ reader.close();
+ return CommonConstants.SUCCESS_STR;
+ }
+ } catch(IOException e2) {
+ return ("CSAR_META_VALIDATION" + ":" + "Exception caught while validateCsarMeta ! " + ErrorCodes.FILE_IO
+ + e2);
+ }
}
- if (!cfile.isEmpty()) {
- File file = new File(cfile);
-
- try(BufferedReader reader = new BufferedReader(new FileReader(file))) {
- String tempString = null;
- while ((tempString = reader.readLine()) != null) {
- if (!tempString.equals("")) {
- int count1 = tempString.indexOf(":");
- String meta = tempString.substring(0, count1).trim();
- if (meta.equalsIgnoreCase(CommonConstants.CSAR_TYPE_META)) {
- int count = tempString.indexOf(":") + 1;
- if (tempString.substring(count).trim().isEmpty()) {
- return false;
- }
- }
- if (meta.equalsIgnoreCase(CommonConstants.CSAR_PROVIDER_META)) {
- int count = tempString.indexOf(":") + 1;
- if (tempString.substring(count).trim().isEmpty()) {
- return false;
- }
- }
- if (meta.equalsIgnoreCase(CommonConstants.CSAR_VERSION_META)) {
- int count = tempString.indexOf(":") + 1;
- if (tempString.substring(count).trim().isEmpty()) {
- return false;
- }
- }
- }
- reader.close();
- return true;
- }
- } catch (IOException e2) {
- LOG.error("CSAR_META_VALIDATION" + ":" + "Exception caught while validateCsarMeta ! " +ErrorCodes.FILE_IO, e2);
- throw new ValidationException(ErrorCodes.FILE_IO);
- }
- }
-
- return false;
+
+ return "VNF package do not contain csar.meta file";
}
- /**
- *
- * @return true csar tosca meta validation is successful
- */
- public static boolean validateAndScanToscaMeta() {
+ /**
+ * @return true csar tosca meta validation is successful
+ */
+ public static String validateAndScanToscaMeta() {
String cfile = csarFiles.get(CommonConstants.TOSCA_META);
- if (!validateToscaMeta(cfile)) {
- return false;
+ if(null == cfile) {
+ return "Tosca.meta file does not exist";
+ }
+
+ if(!validateToscaMeta(cfile)) {
+ return "Validation of Tosca.meta file fails";
}
try {
- if (cfile.contains(System.getProperty("file.separator") +
- CommonConstants.TOSCA_METADATA + System.getProperty("file.separator") +
- CommonConstants.TOSCA_META)) {
- MAINSERV_MANIFEST = checkAndGetMRF(cfile,"Entry-Manifest");
- if (MAINSERV_MANIFEST == null) {
+ if(cfile.contains(System.getProperty("file.separator") + CommonConstants.TOSCA_METADATA
+ + System.getProperty("file.separator") + CommonConstants.TOSCA_META)) {
+ MAINSERV_MANIFEST = checkAndGetMRF(cfile, "Entry-Manifest");
+ if(MAINSERV_MANIFEST == null) {
MAINSERV_MANIFEST = CommonConstants.MAINSERV_MANIFEST;
}
- MAINSERV_TEMPLATE = checkAndGetMRF(cfile,"Entry-Definitions");
- if (MAINSERV_TEMPLATE == null) {
+ MAINSERV_TEMPLATE = checkAndGetMRF(cfile, "Entry-Definitions");
+ if(MAINSERV_TEMPLATE == null) {
MAINSERV_TEMPLATE = CommonConstants.MAINSERV_TEMPLATE;
}
- return true;
+ return CommonConstants.SUCCESS_STR;
}
- } catch (Exception e) {
- LOG.error("PARSE_ERROR" + ":" + "TOSCA metadata not parsed properly! " +ErrorCodes.PARSE_ERROR, e);
+ } catch(Exception e) {
+ return ("PARSE_ERROR" + ":" + "TOSCA metadata not parsed properly! " + ErrorCodes.PARSE_ERROR + e);
}
- return false;
+ return "Tosca.meta file does not exist";
}
private static String checkAndGetMRF(String mrfFile, String attribute) {
try {
- String value = CheckEntryFor(mrfFile, attribute);
- String mrfCsarEntry = null;
+ String value = checkEntryFor(mrfFile, attribute);
+ String mrfCsarEntry = null;
- //Rel-1 & SOL004 Entry-Definitions is optional
- if (! StringUtils.isEmpty(value)) {
+ // Rel-1 & SOL004 Entry-Definitions is optional
+ if(!StringUtils.isEmpty(value)) {
- if(value.contains("Definitions/"))
- {
- String[] splitPath = value.split("/");
- mrfCsarEntry = csarFiles.get(splitPath[splitPath.length - 1]);
- }
- else { //Hack to support non-compliant "Entry-Definitions:" format
- mrfCsarEntry = csarFiles.get(value);
- }
+ if(value.contains("Definitions/")) {
+ String[] splitPath = value.split("/");
+ mrfCsarEntry = csarFiles.get(splitPath[splitPath.length - 1]);
+ } else { // Hack to support non-compliant "Entry-Definitions:" format
+ mrfCsarEntry = csarFiles.get(value);
+ }
- if (null != mrfCsarEntry) {
- return mrfCsarEntry;
+ if(null != mrfCsarEntry) {
+ return mrfCsarEntry;
+ }
}
- }
- } catch (IOException | NullPointerException e) {
- LOG.error("CSAR_TOSCA_VALIDATION" + ":" + "Could not read file %s ! " +ErrorCodes.FILE_IO+ " " +ErrorCodes.RESOURCE_MISSING,e);
- throw new ValidationException(ErrorCodes.RESOURCE_MISSING);
+ } catch(IOException | NullPointerException e) {
+ LOG.error("CSAR_TOSCA_VALIDATION" + ":" + "Could not read file %s ! " + ErrorCodes.FILE_IO + " "
+ + ErrorCodes.RESOURCE_MISSING, e);
+ throw new ValidationException(ErrorCodes.RESOURCE_MISSING);
}
return null;
}
/**
- *
* @return true csar validation is successful
*/
- public static boolean validateMainService() {
+ public static String validateMainService() {
String key = "metadata";
// In future load from the respective file template/schema
- List<String> mListMetadata = Arrays.asList("vnf_product_name", "vnf_provider_id",
- "vnf_package_version", "vnf_release_data_time");
+ List<String> mListMetadata =
+ Arrays.asList("vnf_product_name", "vnf_provider_id", "vnf_package_version", "vnf_release_data_time");
@SuppressWarnings("unused")
- boolean mfResult = CheckEntryFor(CommonConstants.MAINSERV_MANIFEST, mListMetadata, key);
+ boolean mfResult = checkEntryFor(CommonConstants.MAINSERV_MANIFEST, mListMetadata, key);
String mainServManifest = MAINSERV_MANIFEST;
- if(!Paths.get(mainServManifest).isAbsolute()){
+ if(!Paths.get(mainServManifest).isAbsolute()) {
mainServManifest = csarFiles.get(FilenameUtils.getName(mainServManifest));
}
// Rel-2 SOL004 requirement
- if(StringUtils.isEmpty(mainServManifest)){
- //Do nothing for Rel-1
- //return false;
+ if(StringUtils.isEmpty(mainServManifest)) {
+ // Do nothing for Rel-1
+ // return false;
}
String mainservTemplate = MAINSERV_TEMPLATE;
- if(!Paths.get(MAINSERV_TEMPLATE).isAbsolute()){
- mainservTemplate = csarFiles.get(FilenameUtils.getName(mainservTemplate));
+ if(!Paths.get(MAINSERV_TEMPLATE).isAbsolute()) {
+ mainservTemplate = csarFiles.get(FilenameUtils.getName(mainservTemplate));
}
- if(StringUtils.isEmpty(mainservTemplate)){
- return false;
+ if(StringUtils.isEmpty(mainservTemplate)) {
+ return "MainServiceTemplate does not exist in the package";
}
- return true;
+ return CommonConstants.SUCCESS_STR;
}
- private static String CheckEntryFor(String fileWithPath, String attribute) throws IOException {
+ private static String checkEntryFor(String fileWithPath, String attribute) throws IOException {
List<String> lines = Files.readAllLines(Paths.get(fileWithPath), UTF_8);
- for (String strLine : lines) {
- if (!attribute.isEmpty() && strLine.contains(attribute)) {
+ for(String strLine : lines) {
+ if(!attribute.isEmpty() && strLine.contains(attribute)) {
String entry = strLine.substring(attribute.length(), strLine.length()).trim();
- return entry.replaceFirst(":","").trim();
+ return entry.replaceFirst(":", "").trim();
}
}
return null;
}
@SuppressWarnings("unchecked")
- private static boolean CheckEntryFor(String cFile, List<String> attributes, String key) {
+ private static boolean checkEntryFor(String cFile, List<String> attributes, String key) {
@SuppressWarnings("unused")
- String tFileWithPath;
+ String tFileWithPath;
- if (! Paths.get(cFile).isAbsolute()) {
+ if(!Paths.get(cFile).isAbsolute()) {
cFile = csarFiles.get(FilenameUtils.getName(cFile));
}
@@ -306,69 +325,68 @@ public class CsarValidator {
Yaml yaml = new Yaml();
Map<String, ?> values;
- try {
- values = (Map<String, ?>) yaml.load(new FileInputStream(new File(cFile)));
- } catch (FileNotFoundException e) {
- LOG.error("FILE_NOT_FOUND" + ":" + "Exception caught while trying to find the file ! " + e.getMessage(), e);
+ try (InputStream input = new FileInputStream(new File(cFile))) {
+ values = (Map<String, ?>)yaml.load(input);
+ } catch(FileNotFoundException e) {
+ LOG.error("FILE_NOT_FOUND" + ":" + "Exception caught while trying to find the file ! " + e.getMessage(), e);
+ return false;
+ } catch(IOException e1) {
+ LOG.error("FILE_NOT_FOUND" + ":" + "Exception caught while trying to open the file ! " + e1.getMessage(),
+ e1);
return false;
}
- Map<? super String,? super String> subValues = (Map<? super String, ? super String>) values.get(key);
+ Map<? super String, ? super String> subValues = (Map<? super String, ? super String>)values.get(key);
- //1. Check for empty values in map and if number of mandatory attributes presence
- List<? super String> lResultNonNull = subValues.values().stream()
- .filter(Objects::nonNull)
- .map(Object::toString)
- .collect(Collectors.toList());
+ // 1. Check for empty values in map and if number of mandatory attributes presence
+ List<? super String> lResultNonNull =
+ subValues.values().stream().filter(Objects::nonNull).map(Object::toString).collect(Collectors.toList());
// If no attributes provided, take it easy
// there are no mandatory fields to be
// validated.
- if (attributes == null) {
+ if(attributes == null) {
return true;
}
- if (subValues.size() != attributes.size() &&
- lResultNonNull.size() != attributes.size()) {
+ if(subValues.size() != attributes.size() && lResultNonNull.size() != attributes.size()) {
return false;
}
- //Validate the exact mandatory(not defined in SOL004 yet)
+ // Validate the exact mandatory(not defined in SOL004 yet)
// attributes with expected attributes list
- List<? super String> lResult = subValues.keySet().stream()
- .filter(attributes::contains)
- .collect(Collectors.toList());
+ List<? super String> lResult =
+ subValues.keySet().stream().filter(attributes::contains).collect(Collectors.toList());
- if (lResult.size() == 0) {
+ if(lResult.size() == 0) {
return false;
}
return true;
}
/**
- *
* @return true if csar meta data validation is successful
*/
- @SuppressWarnings({ "unchecked", "static-access" })
- private static boolean validateToscaMeta(String cfile) {
+ @SuppressWarnings({"unchecked", "static-access"})
+ private static boolean validateToscaMeta(String cfile) {
- if (StringUtils.isEmpty(cfile)) {
+ if(StringUtils.isEmpty(cfile)) {
return false;
- }
- else {
+ } else {
File file = new File(cfile);
Yaml yaml = new Yaml();
-
Map<String, ?> toscaMeta = null;
- try {
- toscaMeta = (Map<String, ?>) yaml.load(new FileInputStream(file));
- } catch (FileNotFoundException e) {
- LOG.error("CSAR_TOSCA_LOAD" + ":" + "TOSCA metadata is not loaded by Yaml! " +ErrorCodes.FILE_IO, e);
+ try (InputStream input = new FileInputStream(new File(cfile))) {
+ toscaMeta = (Map<String, ?>)yaml.load(input);
+ } catch(FileNotFoundException e) {
+ LOG.error("CSAR_TOSCA_LOAD" + ":" + "TOSCA metadata is not loaded by Yaml! " + ErrorCodes.FILE_IO, e);
+ } catch(IOException e1) {
+ LOG.error("CSAR_TOSCA_LOAD" + ":" + "TOSCA metadata is not loaded by Yaml! " + ErrorCodes.FILE_IO, e1);
}
- if(toscaMeta != null){
- return toscaMeta.keySet().containsAll((vsl.getToscaMeta().keySet()));
+ if(toscaMeta != null) {
+ return toscaMeta.keySet().containsAll((vsl.getToscaMeta().keySet()));
}
return false;
}
@@ -390,4 +408,3 @@ public class CsarValidator {
CsarValidator.csarFiles = csarFiles;
}
}
-
diff --git a/csarvalidation/src/main/java/org/onap/validation/csar/ValidatorSchemaLoader.java b/csarvalidation/src/main/java/org/onap/validation/csar/ValidatorSchemaLoader.java
index 7731801..a33fe93 100644
--- a/csarvalidation/src/main/java/org/onap/validation/csar/ValidatorSchemaLoader.java
+++ b/csarvalidation/src/main/java/org/onap/validation/csar/ValidatorSchemaLoader.java
@@ -13,14 +13,17 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.onap.validation.csar;
+package org.onap.validation.csar;
import org.apache.commons.io.FileSystemUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.*;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.*;
import java.util.stream.Stream;
@@ -32,91 +35,97 @@ import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.Path;
-
public class ValidatorSchemaLoader {
private static final Logger LOG = LoggerFactory.getLogger(ValidatorSchemaLoader.class);
// Map of Schema files
private Map<String, ?> toscaMeta;
+
private Map<String, ?> csarentryd;
+
private Map<String, ?> mrfYaml;
+
private Map<String, ?> mrfManifest;
// List of configured schemas
- static List<String> schemaFileList = new ArrayList<String>();
+ static List<String> schemaFileList = new ArrayList<String>();
// SOL004 rule files
static HashMap<String, String> optionOneSchema;
+
static HashMap<String, String> optionTwoSchema;
- private String schema_folder;
- public ValidatorSchemaLoader() throws NullPointerException, FileNotFoundException, ScannerException, IOException {
+ private String schema_folder;
+ public ValidatorSchemaLoader() throws NullPointerException, FileNotFoundException, ScannerException, IOException {
- try {
- loadResources();
- } catch ( FileNotFoundException e1) {
- LOG.error("Schema file not found or schema repository corrupted", e1);
+ try {
+ loadResources();
+ } catch(FileNotFoundException e1) {
+ LOG.error("Schema file not found or schema repository corrupted", e1);
- }
+ } catch(URISyntaxException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
}
-
@SuppressWarnings("unchecked")
- private boolean loadResources() throws FileNotFoundException {
- String schema_folder = getClass().getResource("../../../../schema").getPath();
- try (Stream<Path> paths = Files.walk(Paths.get(schema_folder))){
-
-
- paths.filter(Files::isRegularFile)
- .forEach((Path e) -> {
-
- File file = e.toFile();
-
- if (!file.isDirectory() && (
- FilenameUtils.isExtension(file.getName(), "yaml") ||
- FilenameUtils.isExtension(file.getName(), "mf") ||
- FilenameUtils.isExtension(file.getName(), "meta"))) {
-
- Yaml yaml = new Yaml();
-
- switch (file.getName()) {
- case "TOSCA.meta":
- try {
- toscaMeta = (Map<String, ?>) yaml.load(new FileInputStream(file));
- } catch (ScannerException | FileNotFoundException e1) {
- LOG.error("Schema files %s format is not as per standard prescribed", file.getName(), e1);
- }
- break;
- case "CSAR.meta":
- try {
- csarentryd = (Map<String, ?>) yaml.load(new FileInputStream(file));
- } catch (ScannerException | FileNotFoundException e2) {
- LOG.error("Schema files %s format is not as per standard prescribed", file.getName(), e2);
- }
- break;
- case "MRF.yaml":
- try {
- mrfYaml = (Map<String, ?>) yaml.load(new FileInputStream(file));
- } catch (ScannerException | FileNotFoundException e2) {
- LOG.error("Schema files %s format is not as per standard prescribed", file.getName(), e2);
- }
- break;
- case "MRF.mf":
- try {
- mrfManifest = (Map<String, ?>) yaml.load(new FileInputStream(file));
- } catch (ScannerException | FileNotFoundException e2) {
- LOG.error("Schema files %s format is not as per standard prescribed", file.getName(), e2);
- }
- break;
+ private boolean loadResources() throws FileNotFoundException, URISyntaxException {
+ URL schemafolder = this.getClass().getClassLoader().getResource("schema");
+ try (Stream<Path> paths = Files.walk(Paths.get(schemafolder.toURI()))) {
+
+ paths.filter(Files::isRegularFile).forEach((Path e) -> {
+
+ File file = e.toFile();
+
+ if(!file.isDirectory() && (FilenameUtils.isExtension(file.getName(), "yaml")
+ || FilenameUtils.isExtension(file.getName(), "mf")
+ || FilenameUtils.isExtension(file.getName(), "meta"))) {
+
+ Yaml yaml = new Yaml();
+
+ switch(file.getName()) {
+ case "TOSCA.meta":
+ try {
+ toscaMeta = (Map<String, ?>)yaml.load(new FileInputStream(file));
+ } catch(ScannerException | FileNotFoundException e1) {
+ LOG.error("Schema files %s format is not as per standard prescribed", file.getName(),
+ e1);
}
- }
- schemaFileList.add(e.toAbsolutePath().toString());
- });
-
- } catch (NullPointerException | IOException err) {
- LOG.error("Schema files/folder access error"+err);
+ break;
+ case "CSAR.meta":
+ try {
+ csarentryd = (Map<String, ?>)yaml.load(new FileInputStream(file));
+ } catch(ScannerException | FileNotFoundException e2) {
+ LOG.error("Schema files %s format is not as per standard prescribed", file.getName(),
+ e2);
+ }
+ break;
+ case "MRF.yaml":
+ try {
+ mrfYaml = (Map<String, ?>)yaml.load(new FileInputStream(file));
+ } catch(ScannerException | FileNotFoundException e2) {
+ LOG.error("Schema files %s format is not as per standard prescribed", file.getName(),
+ e2);
+ }
+ break;
+ case "MRF.mf":
+ try {
+ mrfManifest = (Map<String, ?>)yaml.load(new FileInputStream(file));
+ } catch(ScannerException | FileNotFoundException e2) {
+ LOG.error("Schema files %s format is not as per standard prescribed", file.getName(),
+ e2);
+ }
+ break;
+ }
+ }
+ schemaFileList.add(e.toAbsolutePath().toString());
+ });
+
+ } catch(NullPointerException | IOException err) {
+ LOG.error("Schema files/folder access error" + err);
}
return true;
@@ -141,4 +150,4 @@ public class ValidatorSchemaLoader {
public List<String> getSchemaFileList() {
return schemaFileList;
}
-} \ No newline at end of file
+}
diff --git a/csarvalidation/src/test/java/org/onap/validation/csarvalidationtest/CsarValidatorTest.java b/csarvalidation/src/test/java/org/onap/validation/csarvalidationtest/CsarValidatorTest.java
index 846d9af..5693ba6 100644
--- a/csarvalidation/src/test/java/org/onap/validation/csarvalidationtest/CsarValidatorTest.java
+++ b/csarvalidation/src/test/java/org/onap/validation/csarvalidationtest/CsarValidatorTest.java
@@ -30,36 +30,52 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.zip.ZipException;
import java.util.zip.ZipFile;
+
import org.junit.Test;
+import org.onap.validation.csar.CommonConstants;
import org.onap.validation.csar.CsarValidator;
import org.onap.validation.csar.FileUtil;
public class CsarValidatorTest {
String regex = "^\\/[a-zA-Z]\\:\\/";
+
ClassLoader classLoader = getClass().getClassLoader();
+
Pattern pattern = Pattern.compile(regex);
+
private String csarFile = classLoader.getResource("enterprise2DC.csar").getFile();
+
Matcher matcher = pattern.matcher(csarFile);
+
String sample1 = System.getProperty("file.separator") + csarFile.substring(1);
+
String packageId = UUID.randomUUID().toString();
private String csarFile2 = classLoader.getResource("vEPC_NS.csar").getFile();
+
String sample2 = System.getProperty("file.separator") + csarFile2.substring(1);
+
String packageId2 = UUID.randomUUID().toString();
private String csarFile3 = classLoader.getResource("vIMS_NS.csar").getFile();
+
String sample3 = System.getProperty("file.separator") + csarFile3.substring(1);
- String packageId3 = UUID.randomUUID().toString();
-
+
+ String packageId3 = UUID.randomUUID().toString();
+
private String csarFile4 = classLoader.getResource("VoLTE.csar").getFile();
+
String sample4 = System.getProperty("file.separator") + csarFile4.substring(1);
- String packageId4 = UUID.randomUUID().toString();
-
+
+ String packageId4 = UUID.randomUUID().toString();
+
private String csarFile5 = classLoader.getResource("sample2.csar").getFile();
+
String sample5 = System.getProperty("file.separator") + csarFile5.substring(1);
- String packageId5 = UUID.randomUUID().toString();
-
+
+ String packageId5 = UUID.randomUUID().toString();
+
@Test
public void testAll() throws IOException, InterruptedException {
CsarValidator csarValidator = new CsarValidator(packageId, sample1);
@@ -96,22 +112,22 @@ public class CsarValidatorTest {
testValidateCsarIntegrity(csarValidator2);
testValidateToscaMeta(csarValidator2);
testValidateMainService(csarValidator2);
-
+
CsarValidator csarValidator3 = new CsarValidator(packageId3, sample3);
testValidateCsarIntegrity(csarValidator3);
testValidateToscaMeta(csarValidator3);
testValidateMainService(csarValidator3);
-
+
CsarValidator csarValidator4 = new CsarValidator(packageId4, sample4);
testValidateCsarIntegrity(csarValidator4);
testValidateToscaMeta(csarValidator4);
testValidateMainService(csarValidator4);
-
+
CsarValidator csarValidator5 = new CsarValidator(packageId5, sample5);
testValidateCsarIntegrity(csarValidator5);
testValidateToscaMeta(csarValidator5);
testValidateMainService(csarValidator5);
- //Rel1 specific test case
+ // Rel1 specific test case
String sample1Dir = sample1.replace(".csar", "");
String sample2Dir = sample2.replace(".csar", "");
String sample3Dir = sample3.replace(".csar", "");
@@ -124,7 +140,7 @@ public class CsarValidatorTest {
boolean result4 = FileUtil.deleteDirectory(sample5Dir);
assertEquals(true, result == true && result1 == true && result2 == true && result3 == true && result4 == true);
}
-
+
@Test
public void testCloseInputStream() {
InputStream dir = null;
@@ -139,13 +155,13 @@ public class CsarValidatorTest {
FileUtil.closeZipFile(dir1);
assertTrue(true);
}
-
+
@Test
public void testCloseFileStream() throws FileNotFoundException {
FileInputStream dir3 = new FileInputStream(sample1);
- FileUtil.closeFileStream(dir3 );
+ FileUtil.closeFileStream(dir3);
}
-
+
@Test
public void testCloseOutptutStream() {
OutputStream dir4 = new OutputStream() {
@@ -153,37 +169,35 @@ public class CsarValidatorTest {
@Override
public void write(int number) throws IOException {
- }
+ }
};
FileUtil.closeOutputStream(dir4);
}
private void testValidateCsarMeta(CsarValidator cv) {
- boolean result = CsarValidator.validateCsarMeta();
- assertEquals(true, result == true);
+ String result = CsarValidator.validateCsarMeta();
+ assertEquals(true, result == CommonConstants.SUCCESS_STR);
}
-
private void testValidateCsarIntegrity(CsarValidator cv) {
boolean result = CsarValidator.validateCsarIntegrity(sample1);
assertEquals(true, result == true);
}
-
private void testValidateToscaMeta(CsarValidator cv) {
- boolean result = CsarValidator.validateAndScanToscaMeta();
- assertEquals(true, result == true);
+ String result = CsarValidator.validateAndScanToscaMeta();
+ assertEquals(true, result == CommonConstants.SUCCESS_STR);
}
private void testValidateMainService(CsarValidator cv) {
- boolean result = CsarValidator.validateMainService();
- assertEquals(true, result == true);
+ String result = CsarValidator.validateMainService();
+ assertEquals(true, result == CommonConstants.SUCCESS_STR);
}
private void testValidateCsar(CsarValidator cv) {
- boolean result = CsarValidator.validateCsar();
- assertEquals(true, result == true);
+ String result = CsarValidator.validateCsar();
+ assertEquals(true, result == CommonConstants.SUCCESS_STR);
}
}