From 01787f2f35190cbd643535f6bb7602bf69314902 Mon Sep 17 00:00:00 2001 From: Bogumil Zebek Date: Tue, 7 May 2019 11:40:25 +0200 Subject: Fix internal errors Change-Id: Ifdc6995fdadfc4e0ef575e9688b4e331afedce73 Issue-ID: VNFSDK-404 Signed-off-by: Zebek Bogumil --- .../main/java/org/onap/cvc/csar/CSARArchive.java | 27 +++-- .../java/org/onap/cvc/csar/PnfCSARArchive.java | 6 - .../cvc/csar/cc/sol004/VTPValidateCSARR10087.java | 15 +-- .../sol004/vtp-validate-csar-r10087.yaml | 7 ++ .../src/main/resources/vnfreqs.properties | 2 +- .../VTPValidateCSARR10087IntegrationTest.java | 134 +++++++++++++++++++++ .../pnf/r10087/invalidChangeHistoryLog.csar | Bin 0 -> 4110 bytes .../r10087/invalidEntryDefinitionsInToscaMeta.csar | Bin 0 -> 4111 bytes .../resources/pnf/r10087/invalidManifestFile.csar | Bin 0 -> 4117 bytes .../resources/pnf/r10087/invalidTestDirectory.csar | Bin 0 -> 4110 bytes .../test/resources/pnf/r10087/noToscaMetaFile.csar | Bin 0 -> 3621 bytes 11 files changed, 159 insertions(+), 32 deletions(-) create mode 100644 csarvalidation/src/test/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR10087IntegrationTest.java create mode 100644 csarvalidation/src/test/resources/pnf/r10087/invalidChangeHistoryLog.csar create mode 100644 csarvalidation/src/test/resources/pnf/r10087/invalidEntryDefinitionsInToscaMeta.csar create mode 100644 csarvalidation/src/test/resources/pnf/r10087/invalidManifestFile.csar create mode 100644 csarvalidation/src/test/resources/pnf/r10087/invalidTestDirectory.csar create mode 100644 csarvalidation/src/test/resources/pnf/r10087/noToscaMetaFile.csar (limited to 'csarvalidation') diff --git a/csarvalidation/src/main/java/org/onap/cvc/csar/CSARArchive.java b/csarvalidation/src/main/java/org/onap/cvc/csar/CSARArchive.java index 448469d..0924de7 100644 --- a/csarvalidation/src/main/java/org/onap/cvc/csar/CSARArchive.java +++ b/csarvalidation/src/main/java/org/onap/cvc/csar/CSARArchive.java @@ -901,18 +901,19 @@ public class CSARArchive implements AutoCloseable { } private void setMode() { - if (new File(this.tempDir.toFile().getAbsolutePath() + File.separator + TOSCA_Metadata + File.separator + TOSCA_Metadata__TOSCA_Meta).exists()){ + if (isToscaMetaFileExist()){ this.toscaMeta.setMode(Mode.WITH_TOSCA_META_DIR); } else { this.toscaMeta.setMode(Mode.WITHOUT_TOSCA_META_DIR); } } + private boolean isToscaMetaFileExist() { + return new File(this.tempDir.toFile().getAbsolutePath() + File.separator + + TOSCA_Metadata + File.separator + TOSCA_Metadata__TOSCA_Meta).exists(); + } + void parseManifest() throws IOException { - //manifest is optional, so check for it - if (this.manifestMfFile == null) { - return; - } int lineNo =0; Listlines = FileUtils.readLines(this.manifestMfFile); @@ -967,10 +968,6 @@ public class CSARArchive implements AutoCloseable { } private void parseDefinitionMetadata() throws IOException { - if(Objects.isNull(this.definitionYamlFile)){ - return; - } - try(FileInputStream ipStream = new FileInputStream(this.definitionYamlFile)) { Map yaml = (Map) new Yaml().load(ipStream); @@ -1295,10 +1292,18 @@ public class CSARArchive implements AutoCloseable { this.parseMeta(); //process manifest - this.parseManifest(); + if(isFileExists(this.manifestMfFile)) { + this.parseManifest(); + } //process definition - this.parseDefinitionMetadata(); + if(isFileExists(this.definitionYamlFile)){ + this.parseDefinitionMetadata(); + } + } + + private boolean isFileExists(File file) { + return !Objects.isNull(file) && file.exists(); } public void cleanup() throws IOException { diff --git a/csarvalidation/src/main/java/org/onap/cvc/csar/PnfCSARArchive.java b/csarvalidation/src/main/java/org/onap/cvc/csar/PnfCSARArchive.java index b51faf8..5ac67cd 100644 --- a/csarvalidation/src/main/java/org/onap/cvc/csar/PnfCSARArchive.java +++ b/csarvalidation/src/main/java/org/onap/cvc/csar/PnfCSARArchive.java @@ -31,12 +31,6 @@ public class PnfCSARArchive extends CSARArchive { @Override void parseManifest() throws IOException { - - //manifest is optional, so check for it - if (this.getManifestMfFile() == null) { - return; - } - PnfManifestParser pnfManifestParser = PnfManifestParser.getInstance( this.getManifestMfFile() ); diff --git a/csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR10087.java b/csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR10087.java index 0e80add..396564e 100644 --- a/csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR10087.java +++ b/csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR10087.java @@ -18,11 +18,6 @@ package org.onap.cvc.csar.cc.sol004; import org.onap.cli.fw.schema.OnapCommandSchema; import org.onap.cvc.csar.CSARArchive; -import org.onap.cvc.csar.CSARArchive.CSARError; -import org.onap.cvc.csar.CSARArchive.CSARErrorEntryMissingToscaDefinitionMetadataTemplateName; -import org.onap.cvc.csar.CSARArchive.CSARErrorEntryMissingToscaDefinitionNotFound; -import org.onap.cvc.csar.CSARArchive.CSARErrorEntryMissingToscaMetaDefinition; -import org.onap.cvc.csar.CSARArchive.CSARErrorInvalidEntryValueManifestNotFound; import org.onap.cvc.csar.cc.VTPValidateCSARBase; @OnapCommandSchema(schema = "vtp-validate-csar-r10087.yaml") @@ -30,15 +25,7 @@ public class VTPValidateCSARR10087 extends VTPValidateCSARBase { @Override protected void validateCSAR(CSARArchive csar) throws Exception { - - for (CSARError e : csar.getErrors()) { - if (e instanceof CSARErrorEntryMissingToscaMetaDefinition || - e instanceof CSARErrorEntryMissingToscaDefinitionNotFound || - e instanceof CSARErrorEntryMissingToscaDefinitionMetadataTemplateName || - e instanceof CSARErrorInvalidEntryValueManifestNotFound) { - this.errors.add(e); - } - } + // During CSAR parsing file structure was checked and errors were generated if needed. } @Override diff --git a/csarvalidation/src/main/resources/open-cli-schema/sol004/vtp-validate-csar-r10087.yaml b/csarvalidation/src/main/resources/open-cli-schema/sol004/vtp-validate-csar-r10087.yaml index 3428842..299fcf9 100644 --- a/csarvalidation/src/main/resources/open-cli-schema/sol004/vtp-validate-csar-r10087.yaml +++ b/csarvalidation/src/main/resources/open-cli-schema/sol004/vtp-validate-csar-r10087.yaml @@ -34,6 +34,13 @@ parameters: short_option: b type: binary is_optional: false + - name: pnf + description: CSAR file contains PNF + long_option: pnf + short_option: p + type: bool + is_optional: true + default_value: false results: direction: landscape diff --git a/csarvalidation/src/main/resources/vnfreqs.properties b/csarvalidation/src/main/resources/vnfreqs.properties index 935729a..cbb681d 100644 --- a/csarvalidation/src/main/resources/vnfreqs.properties +++ b/csarvalidation/src/main/resources/vnfreqs.properties @@ -1,5 +1,5 @@ vnfreqs.enabled=r02454,r04298,r07879,r09467,r13390,r23823,r26881,r27310,r35851,r40293,r43958,r66070,r77707,r77786,r87234,r10087,r21322,r26885,r40820,r35854,r65486,r17852,r46527,r15837,r54356,r67895,r95321,r32155,r01123,r51347,r787965 -pnfreqs.enabled=r87234,r35854,r15837,r17852,r293901,r146092,r57019,r787965 +pnfreqs.enabled=r10087,r87234,r35854,r15837,r17852,r293901,r146092,r57019,r787965 # ignored all chef and ansible related tests vnferrors.ignored=0x1005,0x1006,r07879-0x1000,r13390-0x1000,r27310-0x1000,r40293-0x1000,r77786-0x1000,r04298-0x1000,r07879-0x1000,r10087-0x1000,r13390-0x1000,r23823-0x1000,r26881-0x1000,r40820-0x1000,r35851-0x1000,r32155-0x1000,r54356-0x1000,r67895-0x1000,r95321-0x1000,r46527-0x1000,r02454-0x1000 pnferrors.ignored= \ No newline at end of file diff --git a/csarvalidation/src/test/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR10087IntegrationTest.java b/csarvalidation/src/test/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR10087IntegrationTest.java new file mode 100644 index 0000000..136baf0 --- /dev/null +++ b/csarvalidation/src/test/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR10087IntegrationTest.java @@ -0,0 +1,134 @@ +/* + * Copyright 2019 Nokia + *

+ * 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.onap.cvc.csar.cc.sol004; + +import org.junit.Before; +import org.junit.Test; +import org.onap.cli.fw.output.OnapCommandResult; +import org.onap.cvc.csar.CSARArchive; + +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.onap.cvc.csar.cc.sol004.IntegrationTestUtils.configureTestCase; +import static org.onap.cvc.csar.cc.sol004.IntegrationTestUtils.convertToMessagesList; + + +public class VTPValidateCSARR10087IntegrationTest { + + private VTPValidateCSARR10087 testCase; + + @Before + public void setUp() { + testCase = new VTPValidateCSARR10087(); + } + + @Test + public void shouldReturnProperRequestNumber() { + assertThat(testCase.getVnfReqsNo()).isEqualTo("R10087"); + } + + @Test + public void shouldReportThatDefinitionYAMLIsNotAvailable() throws Exception { + // given + configureTestCase(testCase, "pnf/r10087/noToscaMetaFile.csar"); + + // when + testCase.execute(); + + // then + List errors = testCase.getErrors(); + assertThat(errors.size()).isEqualTo(4); + assertThat(convertToMessagesList(errors)).contains( + "Missing. Entry [Definition YAML]", + "Ignored. Entry [MainServiceTemplate.mf]", + "Ignored. Entry [Artifacts]", + "Ignored. Entry [Definitions]" + ); + } + + @Test + public void shouldReportThatDefinitionYAMLDoesNotExist() throws Exception { + // given + configureTestCase(testCase, "pnf/r10087/invalidEntryDefinitionsInToscaMeta.csar"); + + // when + testCase.execute(); + + // then + List errors = testCase.getErrors(); + assertThat(errors.size()).isEqualTo(1); + assertThat(convertToMessagesList(errors)).contains( + "Invalid value. Entry [Entry-Definitions]. Definitions/WRONG_FILE_NAME.yaml does not exist" + ); + } + + + @Test + public void shouldReportThatManifestFileDoesNotExist() throws Exception { + // given + configureTestCase(testCase, "pnf/r10087/invalidManifestFile.csar"); + + // when + testCase.execute(); + + // then + List errors = testCase.getErrors(); + assertThat(errors.size()).isEqualTo(1); + assertThat(convertToMessagesList(errors)).contains( + "Invalid value. Entry [ETSI-Entry-Manifest]. INVALID_MANIFEST_FILE_NAME.mf does not exist" + ); + } + + + @Test + public void shouldReportThatChangeHistoryLogFileDoesNotExist() throws Exception { + // given + configureTestCase(testCase, "pnf/r10087/invalidChangeHistoryLog.csar"); + + // when + testCase.execute(); + + // then + List errors = testCase.getErrors(); + assertThat(errors.size()).isEqualTo(1); + assertThat(convertToMessagesList(errors)).contains( + "Invalid value. Entry [ETSI-Entry-Change-Log]. Artifacts/INVALID_FILE_NAME.txt does not exist" + ); + } + + @Test + public void shouldReportThatTestDirectoryDoesNotExist() throws Exception { + // given + configureTestCase(testCase, "pnf/r10087/invalidTestDirectory.csar"); + + // when + testCase.execute(); + + // then + List errors = testCase.getErrors(); + assertThat(errors.size()).isEqualTo(1); + assertThat(convertToMessagesList(errors)).contains( + "Invalid value. Entry [Entry-Tests]. Artifacts/InvalidTestsDirectory folder does not exist" + ); + } + + + + +} \ No newline at end of file diff --git a/csarvalidation/src/test/resources/pnf/r10087/invalidChangeHistoryLog.csar b/csarvalidation/src/test/resources/pnf/r10087/invalidChangeHistoryLog.csar new file mode 100644 index 0000000..56b145f Binary files /dev/null and b/csarvalidation/src/test/resources/pnf/r10087/invalidChangeHistoryLog.csar differ diff --git a/csarvalidation/src/test/resources/pnf/r10087/invalidEntryDefinitionsInToscaMeta.csar b/csarvalidation/src/test/resources/pnf/r10087/invalidEntryDefinitionsInToscaMeta.csar new file mode 100644 index 0000000..d07dcbf Binary files /dev/null and b/csarvalidation/src/test/resources/pnf/r10087/invalidEntryDefinitionsInToscaMeta.csar differ diff --git a/csarvalidation/src/test/resources/pnf/r10087/invalidManifestFile.csar b/csarvalidation/src/test/resources/pnf/r10087/invalidManifestFile.csar new file mode 100644 index 0000000..83a37cb Binary files /dev/null and b/csarvalidation/src/test/resources/pnf/r10087/invalidManifestFile.csar differ diff --git a/csarvalidation/src/test/resources/pnf/r10087/invalidTestDirectory.csar b/csarvalidation/src/test/resources/pnf/r10087/invalidTestDirectory.csar new file mode 100644 index 0000000..b31d8cf Binary files /dev/null and b/csarvalidation/src/test/resources/pnf/r10087/invalidTestDirectory.csar differ diff --git a/csarvalidation/src/test/resources/pnf/r10087/noToscaMetaFile.csar b/csarvalidation/src/test/resources/pnf/r10087/noToscaMetaFile.csar new file mode 100644 index 0000000..331da92 Binary files /dev/null and b/csarvalidation/src/test/resources/pnf/r10087/noToscaMetaFile.csar differ -- cgit 1.2.3-korg