From 616c359cab363e2ac4b1f3938927a9de661db12e Mon Sep 17 00:00:00 2001 From: "halil.cakal" Date: Thu, 9 Feb 2023 15:51:57 +0000 Subject: 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 --- .../org/onap/cps/rest/utils/MultipartFileUtil.java | 8 ++++--- .../onap/cps/rest/utils/ZipFileSizeValidator.java | 26 +++++++++++++--------- 2 files changed, 20 insertions(+), 14 deletions(-) (limited to 'cps-rest/src/main') 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)); } } -- cgit 1.2.3-korg