From 71a1f3d02dea30f2a9c6de646122831ede817bda Mon Sep 17 00:00:00 2001 From: Michael Lando Date: Tue, 10 Oct 2017 18:40:42 +0300 Subject: [PATCH] remove licensing risks Change-Id: I85c69b3ba4f034eeae72894e87d8d90b3b22a533 Issue-Id: SDC-446 Signed-off-by: Michael Lando --- docs/index.rst | 8 ++ pom.xml | 10 +- .../tosca/parser/config/ConfigurationManager.java | 16 +-- .../parser/config/JToscaValidationIssueInfo.java | 31 ++++++ .../config/JtoscaValidationIssueConfiguration.java | 52 ++++++++++ .../parser/impl/JToscaValidationIssueType.java | 6 ++ .../tosca/parser/impl/SdcToscaParserFactory.java | 110 ++++++++++++++++++++- .../tosca/parser/utils/YamlToObjectConverter.java | 11 ++- .../jtosca-validation-issue-configuration.yaml | 49 +++++++++ .../sdc/impl/ToscaParserNodeTemplateTest.java | 11 ++- .../sdc/impl/ToscaParserValidationIssueTest.java | 60 +++++++++++ .../jtosca-validation-issue-configuration.yaml | 57 +++++++++++ .../csars/service-Ipassignservice-csar.csar | Bin 50084 -> 49044 bytes .../resources/csars/service-PortMirroring.csar | Bin 56821 -> 55678 bytes .../service-ServiceForToscaParserTests-csar.csar | Bin 78543 -> 77413 bytes .../resources/csars/service-nested-vfc-csar.csar | Bin 47690 -> 46662 bytes .../csars/service-resolve-get-input-csar.csar | Bin 50501 -> 49461 bytes .../csars/service-resolve-get-input-csar_QA.csar | Bin 50447 -> 50447 bytes 18 files changed, 404 insertions(+), 17 deletions(-) create mode 100644 docs/index.rst create mode 100644 src/main/java/org/openecomp/sdc/tosca/parser/config/JToscaValidationIssueInfo.java create mode 100644 src/main/java/org/openecomp/sdc/tosca/parser/config/JtoscaValidationIssueConfiguration.java create mode 100644 src/main/java/org/openecomp/sdc/tosca/parser/impl/JToscaValidationIssueType.java create mode 100644 src/main/resources/config/jtosca-validation-issue-configuration.yaml create mode 100644 src/test/java/org/openecomp/sdc/impl/ToscaParserValidationIssueTest.java create mode 100644 src/test/resources/config/jtosca-validation-issue-configuration.yaml diff --git a/docs/index.rst b/docs/index.rst new file mode 100644 index 0000000..833e1aa --- /dev/null +++ b/docs/index.rst @@ -0,0 +1,8 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. + +TODO Add files to toctree and delete this header +------------------------------------------------ +.. toctree:: + :maxdepth: 1 + + diff --git a/pom.xml b/pom.xml index 98469f6..120e927 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ sdc-tosca sdc-sdc-tosca SDC Tosca Parser JAR file for use by consumers - 1.1.51-SNAPSHOT + 1.1.53-SNAPSHOT jar @@ -92,12 +92,18 @@ 21.0 compile + + + com.fasterxml.jackson.core + jackson-databind + 2.0.2 + org.openecomp.sdc.jtosca jtosca - 1.1.10-SNAPSHOT + 1.1.13-SNAPSHOT diff --git a/src/main/java/org/openecomp/sdc/tosca/parser/config/ConfigurationManager.java b/src/main/java/org/openecomp/sdc/tosca/parser/config/ConfigurationManager.java index e83e6aa..4e09222 100644 --- a/src/main/java/org/openecomp/sdc/tosca/parser/config/ConfigurationManager.java +++ b/src/main/java/org/openecomp/sdc/tosca/parser/config/ConfigurationManager.java @@ -32,6 +32,7 @@ public class ConfigurationManager { private void initialConfigObjectsFromFiles() { loadConfigurationClass(ErrorConfiguration.class); loadConfigurationClass(Configuration.class); + loadConfigurationClass(JtoscaValidationIssueConfiguration.class); } private void loadConfigurationClass(Class clazz) { @@ -60,13 +61,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; } @@ -103,6 +104,9 @@ public class ConfigurationManager { public ErrorConfiguration getErrorConfiguration() { return (ErrorConfiguration) configurations.get((ErrorConfiguration.class.getSimpleName())); } + public JtoscaValidationIssueConfiguration getJtoscaValidationIssueConfiguration() { + return (JtoscaValidationIssueConfiguration) configurations.get((JtoscaValidationIssueConfiguration.class.getSimpleName())); + } public Configuration getConfiguration() { return (Configuration) configurations.get((Configuration.class.getSimpleName())); diff --git a/src/main/java/org/openecomp/sdc/tosca/parser/config/JToscaValidationIssueInfo.java b/src/main/java/org/openecomp/sdc/tosca/parser/config/JToscaValidationIssueInfo.java new file mode 100644 index 0000000..31ab0a0 --- /dev/null +++ b/src/main/java/org/openecomp/sdc/tosca/parser/config/JToscaValidationIssueInfo.java @@ -0,0 +1,31 @@ +package org.openecomp.sdc.tosca.parser.config; + +public class JToscaValidationIssueInfo { + + private String issueType; + private String sinceCsarConformanceLevel; + + public JToscaValidationIssueInfo() {} + + public String getIssueType() { + return issueType; + } + + public void setIssueType(String issueType) { + this.issueType = issueType; + } + + public String getSinceCsarConformanceLevel() { + return sinceCsarConformanceLevel; + } + + public void setSinceCsarConformanceLevel(String sinceCsarConformanceLevel) { + this.sinceCsarConformanceLevel = sinceCsarConformanceLevel; + } + + public void cloneData(JToscaValidationIssueInfo other) { + this.issueType = other.getIssueType(); + this.sinceCsarConformanceLevel = other.getSinceCsarConformanceLevel(); + } + +} diff --git a/src/main/java/org/openecomp/sdc/tosca/parser/config/JtoscaValidationIssueConfiguration.java b/src/main/java/org/openecomp/sdc/tosca/parser/config/JtoscaValidationIssueConfiguration.java new file mode 100644 index 0000000..ff13251 --- /dev/null +++ b/src/main/java/org/openecomp/sdc/tosca/parser/config/JtoscaValidationIssueConfiguration.java @@ -0,0 +1,52 @@ +/*- + * ============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.tosca.parser.config; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public class JtoscaValidationIssueConfiguration { + + private Map> validationIssues; + + public Map> getValidationIssues() { + return validationIssues; + } + + public void setValidationIssues(Map> validationIssues) { + this.validationIssues = validationIssues; + } + + public List getJtoscaValidationIssueInfo(String key) { + List clone = new ArrayList<>(); + List other = validationIssues.get(key); + if (other != null) { + for (JToscaValidationIssueInfo item: other) { + JToscaValidationIssueInfo cloneitem = new JToscaValidationIssueInfo(); + cloneitem.cloneData(item); + clone.add(cloneitem); + } + } + return clone; + } + +} diff --git a/src/main/java/org/openecomp/sdc/tosca/parser/impl/JToscaValidationIssueType.java b/src/main/java/org/openecomp/sdc/tosca/parser/impl/JToscaValidationIssueType.java new file mode 100644 index 0000000..1e68c51 --- /dev/null +++ b/src/main/java/org/openecomp/sdc/tosca/parser/impl/JToscaValidationIssueType.java @@ -0,0 +1,6 @@ +package org.openecomp.sdc.tosca.parser.impl; + +public enum JToscaValidationIssueType { + CRITICAL, + WARNING +} diff --git a/src/main/java/org/openecomp/sdc/tosca/parser/impl/SdcToscaParserFactory.java b/src/main/java/org/openecomp/sdc/tosca/parser/impl/SdcToscaParserFactory.java index 868b84f..c9cac1c 100644 --- a/src/main/java/org/openecomp/sdc/tosca/parser/impl/SdcToscaParserFactory.java +++ b/src/main/java/org/openecomp/sdc/tosca/parser/impl/SdcToscaParserFactory.java @@ -1,20 +1,31 @@ package org.openecomp.sdc.tosca.parser.impl; +import java.util.ArrayList; +import java.util.List; + import org.openecomp.sdc.tosca.parser.api.ConformanceLevel; import org.openecomp.sdc.tosca.parser.api.ISdcCsarHelper; import org.openecomp.sdc.tosca.parser.config.*; import org.openecomp.sdc.tosca.parser.exceptions.SdcToscaParserException; import org.openecomp.sdc.tosca.parser.utils.GeneralUtility; import org.openecomp.sdc.toscaparser.api.ToscaTemplate; +import org.openecomp.sdc.toscaparser.api.common.JToscaValidationIssue; import org.openecomp.sdc.toscaparser.api.common.JToscaException; import org.openecomp.sdc.toscaparser.api.utils.JToscaErrorCodes; +import org.openecomp.sdc.toscaparser.api.utils.ThreadLocalsHolder; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class SdcToscaParserFactory { - + private static Logger log = LoggerFactory.getLogger(SdcToscaParserFactory.class.getName()); + private static volatile SdcToscaParserFactory instance; private static Configuration configuration; private static ErrorConfiguration errorConfiguration; - + private static JtoscaValidationIssueConfiguration jtoscaValidationIssueConfiguration; + private List criticalExceptions = new ArrayList<>(); + private List warningExceptions = new ArrayList<>(); + private List notAnalyzadExceptions = new ArrayList<>(); private SdcToscaParserFactory() { } @@ -30,6 +41,7 @@ public class SdcToscaParserFactory { instance = new SdcToscaParserFactory(); configuration = ConfigurationManager.getInstance().getConfiguration(); errorConfiguration = ConfigurationManager.getInstance().getErrorConfiguration(); + jtoscaValidationIssueConfiguration = ConfigurationManager.getInstance().getJtoscaValidationIssueConfiguration(); } } } @@ -68,12 +80,93 @@ public class SdcToscaParserFactory { throwSdcToscaParserException(e); } SdcCsarHelperImpl sdcCsarHelperImpl = new SdcCsarHelperImpl(tosca); - validateCsarVersion(sdcCsarHelperImpl.getConformanceLevel()); + String cSarConformanceLevel = sdcCsarHelperImpl.getConformanceLevel(); + validateCsarVersion(cSarConformanceLevel); + try { + handleErrorsByTypes(csarPath, cSarConformanceLevel); + } catch (JToscaException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } return sdcCsarHelperImpl; } } - private void validateCsarVersion(String cSarVersion) throws SdcToscaParserException { + private void handleErrorsByTypes(String csarPath, String cSarConformanceLevel) throws JToscaException { + clearValidationIssuesLists(); + for(JToscaValidationIssue toscaValidationIssue : ThreadLocalsHolder.getCollector().getValidationIssues().values()){ + List issueInfos = jtoscaValidationIssueConfiguration.getValidationIssues().get(toscaValidationIssue.getCode()); + if(issueInfos != null && !issueInfos.isEmpty()){ + JToscaValidationIssueInfo issueInfo = null; + issueInfo = issueInfos.stream() + .filter(i-> isMatchConformanceLevel(cSarConformanceLevel,i.getSinceCsarConformanceLevel())) + .max((i1,i2) -> GeneralUtility.conformanceLevelCompare(i1.getSinceCsarConformanceLevel(), i2.getSinceCsarConformanceLevel()) ) + .orElse(null); + + if(issueInfo != null){ + switch (JToscaValidationIssueType.valueOf(issueInfo.getIssueType())) { + case CRITICAL: + criticalExceptions.add(toscaValidationIssue); + break; + case WARNING: + warningExceptions.add(toscaValidationIssue); + break; + default: + break; + } + }else{ + notAnalyzadExceptions.add(toscaValidationIssue); + } + }else{//notAnalyzed + notAnalyzadExceptions.add(toscaValidationIssue); + } + } + logErrors(csarPath); + } + + private void clearValidationIssuesLists(){ + notAnalyzadExceptions.clear(); + criticalExceptions.clear(); + warningExceptions.clear(); + } + + private void logErrors(String inputPath) throws JToscaException{ + //Warnings + int warningsCount = warningExceptions.size(); + if (warningsCount > 0) { + log.warn("####################################################################################################"); + log.warn("CSAR Warnings found! CSAR name - {}", inputPath); + log.warn("ToscaTemplate - verifyTemplate - {} Parsing Warning{} occurred...", warningsCount, (warningsCount > 1 ? "s" : "")); + for (JToscaValidationIssue info : warningExceptions) { + log.warn("JTosca Exception [{}]: {}. CSAR name - {}", info.getCode(),info.getMessage(), inputPath); + } + log.warn("####################################################################################################"); + } + //Criticals + int criticalsCount = criticalExceptions.size(); + if (criticalsCount > 0) { + log.error("####################################################################################################"); + log.error("ToscaTemplate - verifyTemplate - {} Parsing Critical{} occurred...", criticalsCount, (criticalsCount > 1 ? "s" : "")); + for (JToscaValidationIssue info : criticalExceptions) { + log.error("JTosca Exception [{}]: {}. CSAR name - {}", info.getCode(),info.getMessage(), inputPath); + } + throw new JToscaException(String.format("CSAR Validation Failed. CSAR name - {}. Please check logs for details.", inputPath), JToscaErrorCodes.CSAR_TOSCA_VALIDATION_ERROR.getValue()); + } + } + public List getCriticalExceptions() { + return criticalExceptions; + } + + public List getWarningExceptions() { + return warningExceptions; + } + + public List getNotAnalyzadExceptions() { + return notAnalyzadExceptions; + } + + + private void validateCsarVersion(String cSarVersion) throws SdcToscaParserException { ConformanceLevel level = configuration.getConformanceLevel(); String minVersion = level.getMinVersion(); String maxVersion = level.getMaxVersion(); @@ -86,6 +179,14 @@ public class SdcToscaParserFactory { } } + private boolean isMatchConformanceLevel(String ValidationIssueVersion, String cSarVersion){ + if (ValidationIssueVersion != null && cSarVersion != null) { + if ((GeneralUtility.conformanceLevelCompare(ValidationIssueVersion, cSarVersion) >= 0)) { + return true; + } + } + return false; + } private void throwConformanceLevelException(String minVersion, String maxVersion) throws SdcToscaParserException { ErrorInfo errorInfo = errorConfiguration.getErrorInfo(SdcToscaParserErrors.CONFORMANCE_LEVEL_ERROR.toString()); throw new SdcToscaParserException(String.format(errorInfo.getMessage(), minVersion, maxVersion), errorInfo.getCode()); @@ -95,4 +196,5 @@ public class SdcToscaParserFactory { ErrorInfo errorInfo = errorConfiguration.getErrorInfo(SdcToscaParserErrors.getSdcErrorByJToscaError(JToscaErrorCodes.getByCode(e.getCode())).toString()); throw new SdcToscaParserException(errorInfo.getMessage(), errorInfo.getCode()); } + } \ No newline at end of file diff --git a/src/main/java/org/openecomp/sdc/tosca/parser/utils/YamlToObjectConverter.java b/src/main/java/org/openecomp/sdc/tosca/parser/utils/YamlToObjectConverter.java index 44444d2..926b155 100644 --- a/src/main/java/org/openecomp/sdc/tosca/parser/utils/YamlToObjectConverter.java +++ b/src/main/java/org/openecomp/sdc/tosca/parser/utils/YamlToObjectConverter.java @@ -20,6 +20,7 @@ package org.openecomp.sdc.tosca.parser.utils; +import com.fasterxml.jackson.databind.ObjectMapper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.yaml.snakeyaml.Yaml; @@ -109,11 +110,13 @@ public class YamlToObjectConverter { public T convertFromString(String yamlContents, Class className) { T config = null; - - Yaml yaml = getYamlByClassName(className); - + Yaml yaml = new Yaml(); try { - config = yaml.loadAs(yamlContents, className); + Object data = yaml.load(yamlContents); + // convert it manually with jackson instead of using snakeyaml auto converter, + // because of problematic complex objects like JtoscaValidationIssueConfiguration + ObjectMapper mapper = new ObjectMapper(); + config = mapper.convertValue(data, className); } catch (Exception e){ log.error("Failed to convert YAML {} to object." , yamlContents, e); } diff --git a/src/main/resources/config/jtosca-validation-issue-configuration.yaml b/src/main/resources/config/jtosca-validation-issue-configuration.yaml new file mode 100644 index 0000000..f4bb949 --- /dev/null +++ b/src/main/resources/config/jtosca-validation-issue-configuration.yaml @@ -0,0 +1,49 @@ +# jTosca validation issues +#by error code, type the validation issue to be CRITICAL/WARNING +# since Conformance level considered to this type. for example: +#JE001: +# - issueType: WARNING +# sinceCsarConformanceLevel: 3.0 +# - issueType: WARNING +# sinceCsarConformanceLevel: 5.0 +validationIssues: + # TypeMismatchError + JE001: + - issueType: WARNING + sinceCsarConformanceLevel: 3.0 + # MissingType + JE002: + - issueType: WARNING + sinceCsarConformanceLevel: 3.0 + #MissingRequiredFieldError + JE003: + - issueType: WARNING + sinceCsarConformanceLevel: 3.0 + #MissingRequiredFieldError2 + JE004: + - issueType: WARNING + sinceCsarConformanceLevel: 3.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 + #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 diff --git a/src/test/java/org/openecomp/sdc/impl/ToscaParserNodeTemplateTest.java b/src/test/java/org/openecomp/sdc/impl/ToscaParserNodeTemplateTest.java index ad240b1..7cb99e3 100644 --- a/src/test/java/org/openecomp/sdc/impl/ToscaParserNodeTemplateTest.java +++ b/src/test/java/org/openecomp/sdc/impl/ToscaParserNodeTemplateTest.java @@ -924,7 +924,16 @@ public class ToscaParserNodeTemplateTest extends SdcToscaParserBasicTest { assertEquals("VF_1_V_port_1", vfList.get(0).getMetaData().getValue("name")); } // endregion Added by QA - Continue with testings of resolve get_input - + + + @Test + public void testResolveGetInputArrayStructure() { + List vfcs = resolveGetInputCsarQA.getVfcListByVf("b5190df2-7880-4d6f-836f-56ab17e1b85b"); + Object propertyAsObject = resolveGetInputCsarQA.getNodeTemplatePropertyAsObject(vfcs.get(0), "compute_pd_server_name"); + assertEquals( ((ArrayList)propertyAsObject).get(0).toString(), "\"ZRDM1MOGX01MPD001\""); + propertyAsObject = resolveGetInputCsarQA.getNodeTemplatePropertyAsObject(vfcs.get(0), "port_pd01_port_ip_requirements"); + assertEquals( ((ArrayList)propertyAsObject).get(1), null); + } } diff --git a/src/test/java/org/openecomp/sdc/impl/ToscaParserValidationIssueTest.java b/src/test/java/org/openecomp/sdc/impl/ToscaParserValidationIssueTest.java new file mode 100644 index 0000000..72bb5df --- /dev/null +++ b/src/test/java/org/openecomp/sdc/impl/ToscaParserValidationIssueTest.java @@ -0,0 +1,60 @@ +package org.openecomp.sdc.impl; + +import static org.testng.Assert.assertEquals; + +import java.util.List; +import java.util.stream.Collectors; + +import org.openecomp.sdc.tosca.parser.api.ISdcCsarHelper; +import org.openecomp.sdc.tosca.parser.exceptions.SdcToscaParserException; +import org.openecomp.sdc.toscaparser.api.common.JToscaValidationIssue; +import org.testng.annotations.Test; + +public class ToscaParserValidationIssueTest extends SdcToscaParserBasicTest { + + @Test + public void testNoValidationIssues() throws SdcToscaParserException { + ISdcCsarHelper rainyCsarHelper = getCsarHelper("csars/service-ServiceFdnt-csar-rainy.csar");//conformance level 3.0 + + //List notAnalyzedReport = factory.getNotAnalyzadExceptions(); + //assertEquals( notAnalyzedReport.size(),0); + List warningsReport = factory.getWarningExceptions(); + assertEquals( warningsReport.size(),0); + List criticalsReport = factory.getCriticalExceptions(); + assertEquals( criticalsReport.size(),0); + } + @Test + public void testGetLowSinceConformanceLevel() throws SdcToscaParserException { + ISdcCsarHelper fdntCsarHelperWithInputs = getCsarHelper("csars/service-NfodService-csar.csar");//conformance level 3.0 + //Service level + + List notAnalyzedReport = factory.getNotAnalyzadExceptions(); + assertEquals( notAnalyzedReport.size(),10); + //JE003 high CL 4.0 + assertEquals( notAnalyzedReport.stream().filter(n->n.getCode().equals("JE003")).collect(Collectors.toList()).size(), 2); + assertEquals( notAnalyzedReport.stream().filter(n->n.getCode().equals("JE235")).collect(Collectors.toList()).size(), 7); + assertEquals( notAnalyzedReport.stream().filter(n->n.getCode().equals("JE236")).collect(Collectors.toList()).size(), 1); + List warningsReport = factory.getWarningExceptions(); + assertEquals( warningsReport.size(),14); + assertEquals( warningsReport.stream().filter(w->w.getCode().equals("JE006")).collect(Collectors.toList()).size(), 13); + //JE004 low CL 2.0 + assertEquals( warningsReport.stream().filter(w->w.getCode().equals("JE004")).collect(Collectors.toList()).size(), 1); + List criticalsReport = factory.getCriticalExceptions(); + assertEquals( criticalsReport.size(),0); + } + @Test + public void testMultiSinceConformanceLevelIssues() throws SdcToscaParserException { + ISdcCsarHelper Nfod2images = getCsarHelper("csars/service-Nfod2images-csar.csar");//conformance level 4.0 + List notAnalyzedReport = factory.getNotAnalyzadExceptions(); + assertEquals( notAnalyzedReport.size(),17); + List warningsReport = factory.getWarningExceptions(); + assertEquals( warningsReport.size(),0); + List criticalsReport = factory.getCriticalExceptions(); + assertEquals( criticalsReport.size(),24); + //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.yaml b/src/test/resources/config/jtosca-validation-issue-configuration.yaml new file mode 100644 index 0000000..1378ca7 --- /dev/null +++ b/src/test/resources/config/jtosca-validation-issue-configuration.yaml @@ -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 diff --git a/src/test/resources/csars/service-Ipassignservice-csar.csar b/src/test/resources/csars/service-Ipassignservice-csar.csar index abdcd3e90af41185b108d2f2ab1c7deccbac65c3..c065fea2d9d8ac5910be2bc7ba854dedc944b87e 100644 GIT binary patch delta 193 zcmV;y06zbuhXa)V0N&?{(lY1FglhM8^0{a(} z{k}B`SXlh(jQ0GD+THtJx2Ir2YE0kO+SExERE@@xY{B=^0!mM z{=S!8?`a^gL~ivu3mxP8XKFr2eLt3e+`z=jxW#XV<(qp8OY7T~9IjYjxcZW%$}NXH z!9|uGcYL=loG-z=at2pd@x-WvhJZD_C5^ugqh@Iw{PrN=OxfGG$DMbki0sgGTHmAo zRY$n%!lpYY=C+;0lI2W+f z_1xOUi_>;X&n?;g$zXz`@ub2_Ttbo$IN8=do;*u_)t?AX<*`1IjD0Emc;N(xPT^}A;O`cevU&W#2e_8yFT95jvCFa6H?>Ji?B9C2ob7A)yScN*mOJ6M~( zc(v~Te94RbM;|Mmj-7e^o{Qby`rniPum^avb6i)7aDKzYz+l8Nxsg|9^HCwegAyUpEE^kdfwo{8qQ*82IQJu+hyS$j8bQ&mEEpP4-_WX$;wUc+^xkFr89Z!ZU-j$pvimvBqsCk(PHWepKQIyjY%eYa`PTX zrnctE$M(1|8MRHm&?G-ud#@JL-k!4X@lCpnc6@ z;|)KiO>UDNZ{{!=1WjIlGlj{mVzTJ1G^VMwlWT8fF>yCeet9dE$z$c@fZG{N4^~fJ zw_bko&D(xV!J8&4ZgZHNdB=}QV;_)dH2L+NAg0VClkM-uGfg`(dBI(GJ{1NP238RU KhUB9RKmY(mFLOu$ delta 1286 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 Mb_RyPO`wng0Q%JgVE_OC diff --git a/src/test/resources/csars/service-resolve-get-input-csar.csar b/src/test/resources/csars/service-resolve-get-input-csar.csar index fe433f6a293bb62142c10c5e253c51573ab7df67..7c1415956d7b6f92b5fc03660e126866e55851a1 100644 GIT binary patch delta 184 zcmX@w#k{qNdBahm&CX(OD<(_tmttBiG~lDX>C-|Ww}Yu`f0y)R{i7Uw;tb*p;hYQ%C$=*H0RZ-rOW6Pb delta 1103 zcmdnm#C)`idBag5#+1nl0%rA|d1?7Yxrrs2`FV*s`tG5gF0T4v!2$7^1&+nVndx~Z z@klE4N-9e3hI;4UauBea9&fl@EpWC;gLB8y6-q9ZD^wjDm$a{H|60Yfct&h_`P(UB zf8Wcl_cRb#BDZ>-g^uz4Gc}*1z8}j!ZeU_%+~POG^3A=4rS)w~4p*!%Tz$z><(5O9 z;3CV8JHA^N&X-_bIfJXKcw$sSL%^EelE&YLQL{7-etQsbrtEFp-tox|m_Y-*EnL2FLR=6N03j7Ej^O-!Ev))3|A# z?qaq$;mWg?QJEUrdl{takK3=GGS%8-ny8`)Ki^)9xQ@^@z9)2!$92WsdY+x{EO zMroePy$6>!e{fh>ed(Ftr3Z7jd+s@#K54~{jMZ~aJ8S=H>@&Q(e>Q4l_RU@~Eo;k;Kx95@db0aEO zB^^KOr(nJ4_B3C?EmrCm4Yvu4%w7Dr%-GK6O~vHS_PC2FTzi{}MFf{Vc{X+b%J9B9 zW=V%!1^f=ooY4Qfa@$rVxsvusub>~x?mqlJhv%5Qvq#0Lg1rX$dyaN27o79#TFA5$ zlR2lSD_-G_>`urM6gsRJaPlYDt`85aCQq!-uj0`1zbt-7tw;Ub#82O)w$%o#|99B+ zzMk>=v>#3F@~v~Go!VL#awKwJ#;;YAuCdoL2Pm#fztj3PO#joH&w9`J>}_}!*o(S- zcqIMI>(aVI(=P{pY5)Fk*{0B)()XD6Go{^scF`>A^eUc$XWz4&WkY68tc?i{TeAL{ zvFD&ChSY zyx#u(!=Lxu`|mxSRV;hVO@-5Qn}^2H%X8=6mwsn`^$71mjyN+z3zqbvI}LLC9jr}X zyju5vzU0OJqmLC&$IiTd&&6(U{qM3IKN?HU@+pC+{i1l`KXZF3K@hL z149Y}GFUA%Sy8~$5Gm&nm$xSW-lfH)DK>fjZk@@&ySocCl~B>W0HxUykoB;Q(N=o z-+Nt{jM^qU?(<~Y+cSB>euc@lQ#dDk9N?RLc%L6r{dA}h?_`JleoO^Rf!q!zjS#Z1bWch;}d=d;23@CMH{Ejbx~Z(h4VK?yE6`RbuSwzbc5Zd)2|);au` F5dd+m7mfe` delta 55 zcmeD0V(#x^-jF?=!>U5Wdyd@7S(}TeTXHhK-n@2!f)ZSC^3_9uY?mI|O0SXJtaJD= FBLHsW7aITo -- 2.16.6