sdc-tosca tests change and refactoring 37/26237/1
authorPavel Aharoni <pa0916@att.com>
Wed, 13 Dec 2017 15:01:19 +0000 (17:01 +0200)
committerPavel Aharoni <pa0916@att.com>
Wed, 13 Dec 2017 15:01:19 +0000 (17:01 +0200)
Change-Id: Ibffb597a5197675499c7fe544fba953065f2f9bf
Issue-ID: SDC-752
Signed-off-by: Pavel Aharoni <pa0916@att.com>
pom.xml
src/main/java/org/openecomp/sdc/tosca/parser/config/ConfigurationManager.java
src/main/java/org/openecomp/sdc/tosca/parser/impl/SdcToscaParserFactory.java
src/test/java/org/openecomp/sdc/impl/SdcToscaParserBasicTest.java
src/test/java/org/openecomp/sdc/impl/ToscaParserValidationIssueTest.java
src/test/resources/config/jtosca-validation-issue-configuration-test.yaml [new file with mode: 0644]
src/test/resources/config/jtosca-validation-issue-configuration.yaml
version.properties

diff --git a/pom.xml b/pom.xml
index ec6070d..597e832 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -7,7 +7,7 @@
        <artifactId>sdc-tosca</artifactId>\r
        <name>sdc-sdc-tosca</name>\r
        <description>SDC Tosca Parser JAR file for use by consumers</description>\r
-       <version>1.2.0-SNAPSHOT</version>\r
+       <version>1.2.1-SNAPSHOT</version>\r
        <packaging>jar</packaging>\r
 \r
        <properties>\r
index 4e09222..72c06ed 100644 (file)
@@ -18,12 +18,9 @@ public class ConfigurationManager {
 
        private static final String CONFIGURATION_DIR = "config/";
        private static volatile ConfigurationManager instance;
-//    private Configuration configuration;
-//    private ErrorConfiguration errorConfiguration;
-
-       Map<String, Object> configurations = new HashMap<String, Object>();
 
 
+       Map<String, Object> configurations = new HashMap<String, Object>();
 
        private ConfigurationManager() {
                initialConfigObjectsFromFiles();
@@ -40,18 +37,26 @@ public class ConfigurationManager {
                configurations.put(clazz.getSimpleName(), object);
        }
 
+       private <T> void loadConfigurationClass(Class<T> clazz, String fileName) {
+               T object = getObjectFromYaml(clazz,fileName);
+               configurations.put(clazz.getSimpleName(), object);
+       }
+
+       public static <T> T getObjectFromYaml(Class<T> className) {
+               return getObjectFromYaml(className, null);
+       }
 
-       public <T> T getObjectFromYaml(Class<T> className) {
+       public static <T> T getObjectFromYaml(Class<T> className, String fileName) {
 
 
-               String configFileName = calculateFileName(className);
+               String configFileName = fileName != null ? fileName : calculateFileName(className); ;
 
                URL url = Resources.getResource(CONFIGURATION_DIR + configFileName);
                String configFileContents = null;
                try {
                        configFileContents = Resources.toString(url, Charsets.UTF_8);
                } catch (IOException e) {
-                       log.error("ConfigurationManager - Failed to load configuration file");
+                       log.error("ConfigurationManager - Failed to load configuration file {}", configFileName, e);
                }
                YamlToObjectConverter yamlToObjectConverter = new YamlToObjectConverter();
                T object = yamlToObjectConverter.convertFromString(configFileContents, className);
@@ -61,13 +66,13 @@ public class ConfigurationManager {
 
 
        public static ConfigurationManager getInstance() {
-       //      if (instance == null) {
-       //              synchronized (ConfigurationManager.class) {
-       //                      if (instance == null) {
+               if (instance == null) {
+                       synchronized (ConfigurationManager.class) {
+                               if (instance == null) {
                                        instance = new ConfigurationManager();
-       //                      }
-       //              }
-       //      }
+                               }
+                       }
+               }
                return instance;
        }
 
@@ -107,7 +112,9 @@ public class ConfigurationManager {
        public JtoscaValidationIssueConfiguration getJtoscaValidationIssueConfiguration() {
                return (JtoscaValidationIssueConfiguration) configurations.get((JtoscaValidationIssueConfiguration.class.getSimpleName()));
        }
-
+       public void setJtoscaValidationIssueConfiguration(String fileName) {
+               loadConfigurationClass(JtoscaValidationIssueConfiguration.class, fileName);
+       }
        public Configuration getConfiguration() {
                return (Configuration) configurations.get((Configuration.class.getSimpleName()));
        }
index c9cac1c..f1a03b7 100644 (file)
@@ -18,17 +18,13 @@ import org.slf4j.LoggerFactory;
 \r
 public class SdcToscaParserFactory {\r
        private static Logger log = LoggerFactory.getLogger(SdcToscaParserFactory.class.getName());\r
-       \r
+\r
+    private static ConfigurationManager configurationManager;\r
     private static volatile SdcToscaParserFactory instance;\r
-    private static Configuration configuration;\r
-    private static ErrorConfiguration errorConfiguration;\r
-    private static JtoscaValidationIssueConfiguration jtoscaValidationIssueConfiguration;\r
     private List<JToscaValidationIssue> criticalExceptions = new ArrayList<>();\r
     private List<JToscaValidationIssue> warningExceptions = new ArrayList<>();\r
     private List<JToscaValidationIssue> notAnalyzadExceptions = new ArrayList<>();\r
-    private SdcToscaParserFactory() {\r
-\r
-    }\r
+    private SdcToscaParserFactory() {}\r
 \r
     /**\r
      * Get an SdcToscaParserFactory instance.\r
@@ -39,15 +35,17 @@ public class SdcToscaParserFactory {
             synchronized (SdcToscaParserFactory.class) {\r
                 if (instance == null) {\r
                     instance = new SdcToscaParserFactory();\r
-                    configuration = ConfigurationManager.getInstance().getConfiguration();\r
-                    errorConfiguration = ConfigurationManager.getInstance().getErrorConfiguration();\r
-                    jtoscaValidationIssueConfiguration = ConfigurationManager.getInstance().getJtoscaValidationIssueConfiguration();\r
+                    configurationManager = ConfigurationManager.getInstance();\r
                 }\r
             }\r
         }\r
         return instance;\r
     }\r
 \r
+    public static void setConfigurationManager(ConfigurationManager configurationManager) {\r
+        SdcToscaParserFactory.configurationManager = configurationManager;\r
+    }\r
+\r
     /**\r
      * Get an ISdcCsarHelper object for this CSAR file.\r
      *\r
@@ -85,8 +83,7 @@ public class SdcToscaParserFactory {
             try {\r
                 handleErrorsByTypes(csarPath, cSarConformanceLevel);\r
                        } catch (JToscaException e) {\r
-                               // TODO Auto-generated catch block\r
-                               e.printStackTrace();\r
+                throwSdcToscaParserException(e);\r
                        }\r
             return sdcCsarHelperImpl;\r
         }\r
@@ -95,7 +92,7 @@ public class SdcToscaParserFactory {
     private void handleErrorsByTypes(String csarPath, String cSarConformanceLevel) throws JToscaException {\r
         clearValidationIssuesLists();\r
        for(JToscaValidationIssue toscaValidationIssue : ThreadLocalsHolder.getCollector().getValidationIssues().values()){\r
-            List<JToscaValidationIssueInfo> issueInfos = jtoscaValidationIssueConfiguration.getValidationIssues().get(toscaValidationIssue.getCode());\r
+            List<JToscaValidationIssueInfo> issueInfos = configurationManager.getJtoscaValidationIssueConfiguration().getValidationIssues().get(toscaValidationIssue.getCode());\r
                if(issueInfos != null && !issueInfos.isEmpty()){\r
                 JToscaValidationIssueInfo issueInfo = null;\r
                        issueInfo = issueInfos.stream()\r
@@ -167,7 +164,7 @@ public class SdcToscaParserFactory {
 \r
 \r
        private void validateCsarVersion(String cSarVersion) throws SdcToscaParserException {\r
-        ConformanceLevel level = configuration.getConformanceLevel();\r
+        ConformanceLevel level = configurationManager.getConfiguration().getConformanceLevel();\r
         String minVersion = level.getMinVersion();\r
         String maxVersion = level.getMaxVersion();\r
         if (cSarVersion != null) {\r
@@ -188,13 +185,15 @@ public class SdcToscaParserFactory {
         return false;\r
     }\r
     private void throwConformanceLevelException(String minVersion, String maxVersion) throws SdcToscaParserException {\r
-        ErrorInfo errorInfo = errorConfiguration.getErrorInfo(SdcToscaParserErrors.CONFORMANCE_LEVEL_ERROR.toString());\r
+        ErrorInfo errorInfo = configurationManager.getErrorConfiguration().getErrorInfo(SdcToscaParserErrors.CONFORMANCE_LEVEL_ERROR.toString());\r
         throw new SdcToscaParserException(String.format(errorInfo.getMessage(), minVersion, maxVersion), errorInfo.getCode());\r
     }\r
 \r
     private void throwSdcToscaParserException(JToscaException e) throws SdcToscaParserException {\r
-        ErrorInfo errorInfo = errorConfiguration.getErrorInfo(SdcToscaParserErrors.getSdcErrorByJToscaError(JToscaErrorCodes.getByCode(e.getCode())).toString());\r
+        ErrorInfo errorInfo = configurationManager.getErrorConfiguration().getErrorInfo(SdcToscaParserErrors.getSdcErrorByJToscaError(JToscaErrorCodes.getByCode(e.getCode())).toString());\r
         throw new SdcToscaParserException(errorInfo.getMessage(), errorInfo.getCode());\r
     }\r
 \r
+\r
+\r
 }
\ No newline at end of file
index 90124c5..74e52db 100644 (file)
@@ -15,6 +15,7 @@ import org.openecomp.sdc.toscaparser.api.common.JToscaException;
 import org.testng.annotations.AfterMethod;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.BeforeSuite;
 
 public abstract class SdcToscaParserBasicTest {
 
@@ -38,7 +39,7 @@ public abstract class SdcToscaParserBasicTest {
 
        static Map<String, HashMap<String, List<String>>> fdntCsarHelper_Data;
     
-    @BeforeClass
+    @BeforeSuite
     public static void init() throws SdcToscaParserException, JToscaException, IOException {
 
         factory = SdcToscaParserFactory.getInstance();
index 288cea6..87d8f09 100644 (file)
@@ -1,16 +1,40 @@
 package org.openecomp.sdc.impl;
 
-import static org.testng.Assert.assertEquals;
-
-import java.util.List;
-import java.util.stream.Collectors;
-
+import org.apache.commons.io.IOUtils;
 import org.openecomp.sdc.tosca.parser.api.ISdcCsarHelper;
+import org.openecomp.sdc.tosca.parser.config.ConfigurationManager;
+import org.openecomp.sdc.tosca.parser.config.JtoscaValidationIssueConfiguration;
 import org.openecomp.sdc.tosca.parser.exceptions.SdcToscaParserException;
 import org.openecomp.sdc.toscaparser.api.common.JToscaValidationIssue;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
+import java.io.IOException;
+import java.net.URL;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import static org.testng.Assert.assertEquals;
+
 public class ToscaParserValidationIssueTest extends SdcToscaParserBasicTest {
+       protected static ConfigurationManager configurationManager = ConfigurationManager.getInstance();
+
+       @BeforeClass
+       public void loadJtoscaValidationIssueConfiguration() throws IOException {
+               //load the tests dedicated configuration
+               configurationManager.setJtoscaValidationIssueConfiguration( "jtosca-validation-issue-configuration-test.yaml");
+               factory.setConfigurationManager(configurationManager);
+       }
+
+       @AfterClass
+       public void loadJtoscaValidationIssueOriginalConfiguration() throws IOException {
+               //load the tests dedicated configuration
+               configurationManager.setJtoscaValidationIssueConfiguration("jtosca-validation-issue-configuration.yaml");
+               factory.setConfigurationManager(configurationManager);
+
+       }
+
 
        @Test
        public void testNoValidationIssues() throws SdcToscaParserException {
@@ -42,15 +66,25 @@ public class ToscaParserValidationIssueTest extends SdcToscaParserBasicTest {
                List<JToscaValidationIssue> criticalsReport = factory.getCriticalExceptions();
                assertEquals( criticalsReport.size(),0);
        }
+
+       @Test(expectedExceptions = SdcToscaParserException.class)
+       public void testCriticalIssueThrowsSdcToscaParserException() throws SdcToscaParserException {
+               getCsarHelper("csars/service-Nfod2images-csar.csar");//conformance level 4.0
+       }
+
        @Test
-       public void testMultiSinceConformanceLevelIssues() throws SdcToscaParserException {
-               ISdcCsarHelper Nfod2images = getCsarHelper("csars/service-Nfod2images-csar.csar");//conformance level 4.0
+       public void testMultiSinceConformanceLevelIssues() {
+               try {
+                       ISdcCsarHelper Nfod2images = getCsarHelper("csars/service-Nfod2images-csar.csar");//conformance level 4.0
+               } catch (SdcToscaParserException e) {
+                       System.out.println("SdcToscaParserException is caught here - this is WAD in this specific test.");
+               }
                List<JToscaValidationIssue> notAnalyzedReport = factory.getNotAnalyzadExceptions();
-               assertEquals( notAnalyzedReport.size(),2);
+               assertEquals(2, notAnalyzedReport.size());
                List<JToscaValidationIssue> warningsReport = factory.getWarningExceptions();
-               assertEquals( warningsReport.size(),0);
+               assertEquals( 0, warningsReport.size());
                List<JToscaValidationIssue> criticalsReport = factory.getCriticalExceptions();
-               assertEquals( criticalsReport.size(),24);
+               assertEquals( 24, criticalsReport.size());
                //JE006 multy values sinceCsarConformanceLevel
                assertEquals( criticalsReport.stream().filter(c->c.getCode().equals("JE006")).collect(Collectors.toList()).size(), 18);
                assertEquals( criticalsReport.stream().filter(c->c.getCode().equals("JE003")).collect(Collectors.toList()).size(), 6);
diff --git a/src/test/resources/config/jtosca-validation-issue-configuration-test.yaml b/src/test/resources/config/jtosca-validation-issue-configuration-test.yaml
new file mode 100644 (file)
index 0000000..1378ca7
--- /dev/null
@@ -0,0 +1,57 @@
+# jTosca validation issues
+#by error code, type the validation issue to be CRITICAL/WARNING
+# since Conformance level considered to this type. for example:
+#JE001:
+#      - type: WARNING,
+#        sinceCsarConformanceLevel: 3.0
+#      - type: WARNING,
+#        sinceCsarConformanceLevel: 5.0
+validationIssues:
+    # TypeMismatchError
+    JE001:
+        - issueType: WARNING
+          sinceCsarConformanceLevel: 3.0
+        - issueType: CRITICAL
+          sinceCsarConformanceLevel: 4.0
+        - issueType: WARNING
+          sinceCsarConformanceLevel: 5.0
+    # MissingType
+    JE002:
+        - issueType: WARNING
+          sinceCsarConformanceLevel: 3.0
+    #MissingRequiredFieldError
+    JE003:
+        - issueType: CRITICAL
+          sinceCsarConformanceLevel: 4.0
+    #MissingRequiredFieldError2
+    JE004:
+        - issueType: WARNING
+          sinceCsarConformanceLevel: 2.0
+    #InvalidGroupTargetException
+    JE005:
+        - issueType: WARNING
+          sinceCsarConformanceLevel: 3.0
+    #Schema definition of \"%s\" has \"status\" attribute with an invalid value
+    JE006:
+        - issueType: WARNING
+          sinceCsarConformanceLevel: 3.0
+        - issueType: CRITICAL
+          sinceCsarConformanceLevel: 4.0
+        - issueType: WARNING
+          sinceCsarConformanceLevel: 5.0
+    #The unit \"%s\" is not valid
+    JE007:
+        - issueType: WARNING
+          sinceCsarConformanceLevel: 3.0
+    #ValidationError
+    JE008:
+        - issueType: WARNING
+          sinceCsarConformanceLevel: 3.0
+    #ValueError: Expected max 2 arguments for function \"get_input\" but received \"%s\"",args.size())
+    JE009:
+        - issueType: WARNING
+          sinceCsarConformanceLevel: 3.0
+    #MissingRequiredFieldError3
+    JE010:
+        - issueType: WARNING
+          sinceCsarConformanceLevel: 3.0
\ No newline at end of file
index 1378ca7..f4bb949 100644 (file)
@@ -1,32 +1,28 @@
-# jTosca validation issues
-#by error code, type the validation issue to be CRITICAL/WARNING
+# jTosca validation issues 
+#by error code, type the validation issue to be CRITICAL/WARNING 
 # since Conformance level considered to this type. for example:
-#JE001:
-#      - type: WARNING,
-#        sinceCsarConformanceLevel: 3.0
-#      - type: WARNING,
+#JE001: 
+#      - issueType: WARNING
+#        sinceCsarConformanceLevel: 3.0     
+#      - issueType: WARNING
 #        sinceCsarConformanceLevel: 5.0
 validationIssues:
     # TypeMismatchError
-    JE001:
+    JE001: 
         - issueType: WARNING
           sinceCsarConformanceLevel: 3.0
-        - issueType: CRITICAL
-          sinceCsarConformanceLevel: 4.0
-        - issueType: WARNING
-          sinceCsarConformanceLevel: 5.0
     # MissingType
     JE002:
         - issueType: WARNING
           sinceCsarConformanceLevel: 3.0
     #MissingRequiredFieldError
     JE003:
-        - issueType: CRITICAL
-          sinceCsarConformanceLevel: 4.0
+        - issueType: WARNING
+          sinceCsarConformanceLevel: 3.0
     #MissingRequiredFieldError2
     JE004:
         - issueType: WARNING
-          sinceCsarConformanceLevel: 2.0
+          sinceCsarConformanceLevel: 3.0
     #InvalidGroupTargetException
     JE005:
         - issueType: WARNING
@@ -35,10 +31,6 @@ validationIssues:
     JE006:
         - issueType: WARNING
           sinceCsarConformanceLevel: 3.0
-        - issueType: CRITICAL
-          sinceCsarConformanceLevel: 4.0
-        - issueType: WARNING
-          sinceCsarConformanceLevel: 5.0
     #The unit \"%s\" is not valid
     JE007:
         - issueType: WARNING
index 8471f55..10a6323 100644 (file)
@@ -5,7 +5,7 @@
 
 major=1
 minor=2
-patch=0
+patch=1
 
 base_version=${major}.${minor}.${patch}