summaryrefslogtreecommitdiffstats
path: root/cps-rest/src/main
diff options
context:
space:
mode:
authorhalil.cakal <halil.cakal@est.tech>2023-02-09 15:51:57 +0000
committerhalil.cakal <halil.cakal@est.tech>2023-02-13 10:52:27 +0000
commit616c359cab363e2ac4b1f3938927a9de661db12e (patch)
tree952c2882740ae5c207b556e246b80cb7b38da7f2 /cps-rest/src/main
parentdb90c8758d43b1daab09c760a3fe3102d772d7df (diff)
Test for yang file archive limitation
- add new test - fixed misleading method names Issue-ID: CPS-1480 Change-Id: I9dd8f41d0acfc8b1c063aab65567d619670f4905 Signed-off-by: halil.cakal <halil.cakal@est.tech>
Diffstat (limited to 'cps-rest/src/main')
-rw-r--r--cps-rest/src/main/java/org/onap/cps/rest/utils/MultipartFileUtil.java8
-rw-r--r--cps-rest/src/main/java/org/onap/cps/rest/utils/ZipFileSizeValidator.java26
2 files changed, 20 insertions, 14 deletions
diff --git a/cps-rest/src/main/java/org/onap/cps/rest/utils/MultipartFileUtil.java b/cps-rest/src/main/java/org/onap/cps/rest/utils/MultipartFileUtil.java
index 534077caa..3e01f6ee8 100644
--- a/cps-rest/src/main/java/org/onap/cps/rest/utils/MultipartFileUtil.java
+++ b/cps-rest/src/main/java/org/onap/cps/rest/utils/MultipartFileUtil.java
@@ -2,6 +2,7 @@
* ============LICENSE_START=======================================================
* Copyright (C) 2020 Pantheon.tech
* Modifications Copyright (C) 2021 Bell Canada.
+ * Modifications Copyright (C) 2023 Nordix Foundation.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -127,16 +128,17 @@ public class MultipartFileUtil {
}
private static String extractYangResourceContent(final ZipInputStream zipInputStream,
- final ZipFileSizeValidator zipFileSizeValidator) throws IOException {
+ final ZipFileSizeValidator zipFileSizeValidator)
+ throws IOException {
try (final var byteArrayOutputStream = new ByteArrayOutputStream()) {
var totalSizeEntry = 0;
int numberOfBytesRead;
final var buffer = new byte[READ_BUFFER_SIZE];
- zipFileSizeValidator.incrementTotalEntryInArchive();
+ zipFileSizeValidator.incrementTotalYangFileEntryCountInArchive();
while ((numberOfBytesRead = zipInputStream.read(buffer, 0, READ_BUFFER_SIZE)) > 0) {
byteArrayOutputStream.write(buffer, 0, numberOfBytesRead);
totalSizeEntry += numberOfBytesRead;
- zipFileSizeValidator.updateTotalSizeArchive(numberOfBytesRead);
+ zipFileSizeValidator.updateTotalUncompressedSizeOfYangFilesInArchive(numberOfBytesRead);
zipFileSizeValidator.validateCompresssionRatio(totalSizeEntry);
}
return byteArrayOutputStream.toString(StandardCharsets.UTF_8);
diff --git a/cps-rest/src/main/java/org/onap/cps/rest/utils/ZipFileSizeValidator.java b/cps-rest/src/main/java/org/onap/cps/rest/utils/ZipFileSizeValidator.java
index d148fb70d..2e303d1d4 100644
--- a/cps-rest/src/main/java/org/onap/cps/rest/utils/ZipFileSizeValidator.java
+++ b/cps-rest/src/main/java/org/onap/cps/rest/utils/ZipFileSizeValidator.java
@@ -1,6 +1,7 @@
/*
* ============LICENSE_START=======================================================
* Copyright (C) 2021 Bell Canada.
+ * Modifications Copyright (C) 2023 Nordix Foundation.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -28,31 +29,33 @@ import org.onap.cps.spi.exceptions.ModelValidationException;
public class ZipFileSizeValidator {
private static final int THRESHOLD_ENTRIES = 10000;
- private static final int THRESHOLD_SIZE = 100000000;
+ private static int THRESHOLD_SIZE = 100000000;
private static final double THRESHOLD_RATIO = 40;
private static final String INVALID_ZIP = "Invalid ZIP archive content.";
- private int totalSizeArchive = 0;
- private int totalEntryInArchive = 0;
+ private int totalUncompressedSizeOfYangFilesInArchive = 0;
+ private int totalYangFileEntriesInArchive = 0;
private long compressedSize = 0;
/**
* Increment the totalEntryInArchive by 1.
*/
- public void incrementTotalEntryInArchive() {
- totalEntryInArchive++;
+ public void incrementTotalYangFileEntryCountInArchive() {
+ totalYangFileEntriesInArchive++;
}
/**
* Update the totalSizeArchive by numberOfBytesRead.
+ *
* @param numberOfBytesRead the number of bytes of each entry
*/
- public void updateTotalSizeArchive(final int numberOfBytesRead) {
- totalSizeArchive += numberOfBytesRead;
+ public void updateTotalUncompressedSizeOfYangFilesInArchive(final int numberOfBytesRead) {
+ totalUncompressedSizeOfYangFilesInArchive += numberOfBytesRead;
}
/**
* Validate the total Compression size of the zip.
+ *
* @param totalEntrySize the size of the unzipped entry.
*/
public void validateCompresssionRatio(final int totalEntrySize) {
@@ -68,13 +71,14 @@ public class ZipFileSizeValidator {
* Validate the total Size and number of entries in the zip.
*/
public void validateSizeAndEntries() {
- if (totalSizeArchive > THRESHOLD_SIZE) {
+ if (totalUncompressedSizeOfYangFilesInArchive > THRESHOLD_SIZE) {
throw new ModelValidationException(INVALID_ZIP,
- String.format("The uncompressed data size exceeds the CPS limit %s bytes.", THRESHOLD_SIZE));
+ String.format("The total size of uncompressed yang files exceeds the CPS limit of %s bytes.",
+ THRESHOLD_SIZE));
}
- if (totalEntryInArchive > THRESHOLD_ENTRIES) {
+ if (totalYangFileEntriesInArchive > THRESHOLD_ENTRIES) {
throw new ModelValidationException(INVALID_ZIP,
- String.format("The number of entries in the archive exceeds the CPS limit %s.",
+ String.format("The number of yang file entries in the archive exceeds the CPS limit %s.",
THRESHOLD_ENTRIES));
}
}