This is an automated email from the ASF dual-hosted git repository.

sumitagrawal pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git


The following commit(s) were added to refs/heads/master by this push:
     new 8218f09819 HDDS-9277. [Quota] Add more negative unit-testcases 
coverage for volume/bucket quota (#5287)
8218f09819 is described below

commit 8218f098190a47982621d56c7f4dbc2e8eb695be
Author: jyotirmoy-gh <[email protected]>
AuthorDate: Fri Sep 15 11:13:50 2023 +0530

    HDDS-9277. [Quota] Add more negative unit-testcases coverage for 
volume/bucket quota (#5287)
---
 .../hadoop/ozone/shell/TestOzoneShellHA.java       | 204 +++++++++++++++++++--
 1 file changed, 186 insertions(+), 18 deletions(-)

diff --git 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/shell/TestOzoneShellHA.java
 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/shell/TestOzoneShellHA.java
index bd68c1501e..73adfa300c 100644
--- 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/shell/TestOzoneShellHA.java
+++ 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/shell/TestOzoneShellHA.java
@@ -96,6 +96,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import picocli.CommandLine;
 import picocli.CommandLine.ExecutionException;
+import picocli.CommandLine.MissingParameterException;
 import picocli.CommandLine.IExceptionHandler2;
 import picocli.CommandLine.ParameterException;
 import picocli.CommandLine.ParseResult;
@@ -904,6 +905,90 @@ public class TestOzoneShellHA {
         objectStore.getVolume("vol4").getBucket("buck4")
             .getQuotaInNamespace());
 
+
+    // Test negative scenarios for --space-quota and --namespace-quota option
+    args = new String[]{"volume", "create", "vol5", "--space-quota"};
+    executeWithError(ozoneShell, args,
+        "Missing required parameter for option " +
+        "'--space-quota' (<quotaInBytes>)");
+    out.reset();
+
+    args = new String[]{"volume", "create", "vol5", "--space-quota", "-1"};
+    executeWithError(ozoneShell, args, "Invalid values for space quota: -1");
+    out.reset();
+
+    args = new String[]{"volume", "create", "vol5", "--space-quota", "test"};
+    executeWithError(ozoneShell, args, "Invalid values for quota, " +
+        "to ensure that the Quota format is legal(supported values are " +
+        "B, KB, MB, GB and TB with positive long values). " +
+        "And the quota value cannot be greater than Long.MAX_VALUE BYTES");
+    out.reset();
+
+    args = new String[]{"volume", "create", "vol5", "--space-quota", "1.5GB"};
+    executeWithError(ozoneShell, args, "Invalid values for quota, " +
+        "to ensure that the Quota format is legal(supported values are " +
+        "B, KB, MB, GB and TB with positive long values). " +
+        "And the quota value cannot be greater than Long.MAX_VALUE BYTES");
+    out.reset();
+
+    args = new String[]{"volume", "create", "vol5", "--namespace-quota"};
+    executeWithError(ozoneShell, args,
+        "Missing required parameter for option " +
+        "'--namespace-quota' (<quotaInNamespace>)");
+    out.reset();
+
+    args = new String[]{"volume", "create", "vol5", "--namespace-quota", "-1"};
+    executeWithError(ozoneShell, args,
+        "Invalid values for namespace quota: -1");
+    out.reset();
+
+    args = new String[]{"volume", "create", "vol5"};
+    execute(ozoneShell, args);
+    out.reset();
+
+    args = new String[]{"bucket", "create", "vol5/buck5", "--space-quota"};
+    executeWithError(ozoneShell, args,
+        "Missing required parameter for option " +
+        "'--space-quota' (<quotaInBytes>)");
+    out.reset();
+
+    args = new String[]{"bucket", "create", "vol5/buck5",
+        "--space-quota", "-1"};
+    executeWithError(ozoneShell, args,
+        "Invalid values for space quota: -1");
+    out.reset();
+
+    args = new String[]{"bucket", "create", "vol5/buck5",
+        "--space-quota", "test"};
+    executeWithError(ozoneShell, args, "Invalid values for quota, " +
+        "to ensure that the Quota format is legal(supported values are " +
+        "B, KB, MB, GB and TB with positive long values). " +
+        "And the quota value cannot be greater than Long.MAX_VALUE BYTES");
+    out.reset();
+
+    args = new String[]{"bucket", "create", "vol5/buck5",
+        "--space-quota", "1.5GB"};
+    executeWithError(ozoneShell, args, "Invalid values for quota, " +
+        "to ensure that the Quota format is legal(supported values are " +
+        "B, KB, MB, GB and TB with positive long values). " +
+        "And the quota value cannot be greater than Long.MAX_VALUE BYTES");
+    out.reset();
+
+    args = new String[]{"bucket", "create", "vol5/buck5", "--namespace-quota"};
+    executeWithError(ozoneShell, args,
+        "Missing required parameter for option " +
+        "'--namespace-quota' (<quotaInNamespace>)");
+    out.reset();
+
+    args = new String[]{"volume", "create", "vol5", "--namespace-quota", "-1"};
+    executeWithError(ozoneShell, args,
+        "Invalid values for namespace quota: -1");
+    out.reset();
+
+    args = new String[]{"bucket", "create", "vol5/buck5"};
+    execute(ozoneShell, args);
+    out.reset();
+
     // Test clrquota option.
     args = new String[]{"volume", "clrquota", "vol4"};
     executeWithError(ozoneShell, args, "At least one of the quota clear" +
@@ -933,7 +1018,7 @@ public class TestOzoneShellHA {
             .getQuotaInNamespace());
     out.reset();
 
-    // Test set volume quota to 0.
+    // Test set volume quota to invalid values.
     String[] volumeArgs1 = new String[]{"volume", "setquota", "vol4",
         "--space-quota", "0GB"};
     ExecutionException eException = assertThrows(ExecutionException.class,
@@ -943,14 +1028,55 @@ public class TestOzoneShellHA {
     out.reset();
 
     String[] volumeArgs2 = new String[]{"volume", "setquota", "vol4",
-        "--namespace-quota", "0"};
+        "--space-quota", "-1GB"};
     eException = assertThrows(ExecutionException.class,
         () -> execute(ozoneShell, volumeArgs2));
+    assertTrue(eException.getMessage()
+        .contains("Invalid values for space quota"));
+    out.reset();
+
+    String[] volumeArgs3 = new String[]{"volume", "setquota", "vol4",
+        "--space-quota", "test"};
+    eException = assertThrows(ExecutionException.class,
+        () -> execute(ozoneShell, volumeArgs3));
+    assertTrue(eException.getMessage()
+        .contains("Invalid values for quota"));
+    out.reset();
+
+    String[] volumeArgs4 = new String[]{"volume", "setquota", "vol4",
+        "--space-quota", "1.5GB"};
+    eException = assertThrows(ExecutionException.class,
+        () -> execute(ozoneShell, volumeArgs4));
+    assertTrue(eException.getMessage()
+        .contains("Invalid values for quota"));
+    out.reset();
+
+    String[] volumeArgs5 = new String[]{"volume", "setquota", "vol4",
+        "--space-quota"};
+    MissingParameterException mException = assertThrows(
+        MissingParameterException.class,
+        () -> execute(ozoneShell, volumeArgs5));
+    assertTrue(mException.getMessage()
+        .contains("Missing required parameter"));
+    out.reset();
+
+    String[] volumeArgs6 = new String[]{"volume", "setquota", "vol4",
+        "--namespace-quota", "0"};
+    eException = assertThrows(ExecutionException.class,
+        () -> execute(ozoneShell, volumeArgs6));
     assertTrue(eException.getMessage()
         .contains("Invalid values for namespace quota"));
     out.reset();
 
-    // Test set bucket quota to 0.
+    String[] volumeArgs7 = new String[]{"volume", "setquota", "vol4",
+        "--namespace-quota"};
+    mException = assertThrows(MissingParameterException.class,
+        () -> execute(ozoneShell, volumeArgs7));
+    assertTrue(mException.getMessage()
+        .contains("Missing required parameter"));
+    out.reset();
+
+    // Test set bucket quota to invalid values
     String[] bucketArgs1 = new String[]{"bucket", "setquota", "vol4/buck4",
         "--space-quota", "0GB"};
     eException = assertThrows(ExecutionException.class,
@@ -960,26 +1086,66 @@ public class TestOzoneShellHA {
     out.reset();
 
     String[] bucketArgs2 = new String[]{"bucket", "setquota", "vol4/buck4",
-        "--namespace-quota", "0"};
+        "--space-quota", "-1GB"};
     eException = assertThrows(ExecutionException.class,
         () -> execute(ozoneShell, bucketArgs2));
+    assertTrue(eException.getMessage()
+        .contains("Invalid values for space quota"));
+    out.reset();
+
+    String[] bucketArgs3 = new String[]{"bucket", "setquota", "vol4/buck4",
+        "--space-quota", "test"};
+    eException = assertThrows(ExecutionException.class,
+        () -> execute(ozoneShell, bucketArgs3));
+    assertTrue(eException.getMessage()
+        .contains("Invalid values for quota"));
+    out.reset();
+
+    String[] bucketArgs4 = new String[]{"bucket", "setquota", "vol4/buck4",
+        "--space-quota", "1.5GB"};
+    eException = assertThrows(ExecutionException.class,
+        () -> execute(ozoneShell, bucketArgs4));
+    assertTrue(eException.getMessage()
+        .contains("Invalid values for quota"));
+    out.reset();
+
+    String[] bucketArgs5 = new String[]{"bucket", "setquota", "vol4/buck4",
+        "--space-quota"};
+    mException = assertThrows(MissingParameterException.class,
+        () -> execute(ozoneShell, bucketArgs5));
+    assertTrue(mException.getMessage()
+        .contains("Missing required parameter"));
+    out.reset();
+
+    String[] bucketArgs6 = new String[]{"bucket", "setquota", "vol4/buck4",
+        "--namespace-quota", "0"};
+    eException = assertThrows(ExecutionException.class,
+        () -> execute(ozoneShell, bucketArgs6));
     assertTrue(eException.getMessage()
         .contains("Invalid values for namespace quota"));
     out.reset();
 
+    String[] bucketArgs7 = new String[]{"bucket", "setquota", "vol4/buck4",
+        "--namespace-quota"};
+    mException = assertThrows(MissingParameterException.class,
+        () -> execute(ozoneShell, bucketArgs7));
+    assertTrue(mException.getMessage()
+        .contains("Missing required parameter"));
+    out.reset();
+
     // Test set bucket spaceQuota or nameSpaceQuota to normal value.
-    String[] bucketArgs3 = new String[]{"bucket", "setquota", "vol4/buck4",
+    String[] bucketArgs8 = new String[]{"bucket", "setquota", "vol4/buck4",
         "--space-quota", "1000B"};
-    execute(ozoneShell, bucketArgs3);
+    execute(ozoneShell, bucketArgs8);
     out.reset();
     assertEquals(1000, objectStore.getVolume("vol4")
         .getBucket("buck4").getQuotaInBytes());
     assertEquals(-1, objectStore.getVolume("vol4")
         .getBucket("buck4").getQuotaInNamespace());
 
-    String[] bucketArgs4 = new String[]{"bucket", "setquota", "vol4/buck4",
+    String[] bucketArgs9 = new String[]{"bucket", "setquota", "vol4/buck4",
         "--namespace-quota", "100"};
-    execute(ozoneShell, bucketArgs4);
+    execute(ozoneShell, bucketArgs9);
     out.reset();
     assertEquals(1000, objectStore.getVolume("vol4")
         .getBucket("buck4").getQuotaInBytes());
@@ -987,9 +1153,9 @@ public class TestOzoneShellHA {
         .getBucket("buck4").getQuotaInNamespace());
 
     // test whether supports default quota unit as bytes.
-    String[] bucketArgs5 = new String[]{"bucket", "setquota", "vol4/buck4",
+    String[] bucketArgs10 = new String[]{"bucket", "setquota", "vol4/buck4",
         "--space-quota", "500"};
-    execute(ozoneShell, bucketArgs5);
+    execute(ozoneShell, bucketArgs10);
     out.reset();
     assertEquals(500, objectStore.getVolume("vol4")
         .getBucket("buck4").getQuotaInBytes());
@@ -997,31 +1163,31 @@ public class TestOzoneShellHA {
         .getBucket("buck4").getQuotaInNamespace());
 
     // Test set volume quota without quota flag
-    String[] bucketArgs6 = new String[]{"bucket", "setquota", "vol4/buck4"};
-    executeWithError(ozoneShell, bucketArgs6,
+    String[] bucketArgs11 = new String[]{"bucket", "setquota", "vol4/buck4"};
+    executeWithError(ozoneShell, bucketArgs11,
         "At least one of the quota set flag is required");
     out.reset();
 
     // Test set volume spaceQuota or nameSpaceQuota to normal value.
-    String[] volumeArgs3 = new String[]{"volume", "setquota", "vol4",
+    String[] volumeArgs8 = new String[]{"volume", "setquota", "vol4",
         "--space-quota", "1000B"};
-    execute(ozoneShell, volumeArgs3);
+    execute(ozoneShell, volumeArgs8);
     out.reset();
     assertEquals(1000, objectStore.getVolume("vol4").getQuotaInBytes());
     assertEquals(-1,
         objectStore.getVolume("vol4").getQuotaInNamespace());
 
-    String[] volumeArgs4 = new String[]{"volume", "setquota", "vol4",
+    String[] volumeArgs9 = new String[]{"volume", "setquota", "vol4",
         "--namespace-quota", "100"};
-    execute(ozoneShell, volumeArgs4);
+    execute(ozoneShell, volumeArgs9);
     out.reset();
     assertEquals(1000, objectStore.getVolume("vol4").getQuotaInBytes());
     assertEquals(100,
         objectStore.getVolume("vol4").getQuotaInNamespace());
 
     // Test set volume quota without quota flag
-    String[] volumeArgs5 = new String[]{"volume", "setquota", "vol4"};
-    executeWithError(ozoneShell, volumeArgs5,
+    String[] volumeArgs10 = new String[]{"volume", "setquota", "vol4"};
+    executeWithError(ozoneShell, volumeArgs10,
         "At least one of the quota set flag is required");
     out.reset();
     
@@ -1035,6 +1201,8 @@ public class TestOzoneShellHA {
     objectStore.deleteVolume("vol3");
     objectStore.getVolume("vol4").deleteBucket("buck4");
     objectStore.deleteVolume("vol4");
+    objectStore.getVolume("vol5").deleteBucket("buck5");
+    objectStore.deleteVolume("vol5");
   }
 
   @Test


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to