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

siddhant 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 d004f69b98 HDDS-6757. Test "size.leaving.source.max" limit in 
ContainerBalancer (#3904)
d004f69b98 is described below

commit d004f69b981b301fc1f412cd52634ed50c9ad595
Author: Sumit Agrawal <[email protected]>
AuthorDate: Thu Nov 3 10:35:19 2022 +0530

    HDDS-6757. Test "size.leaving.source.max" limit in ContainerBalancer (#3904)
---
 .../balancer/TestContainerBalancerTask.java        | 41 ++++++++++++++++++++++
 1 file changed, 41 insertions(+)

diff --git 
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/balancer/TestContainerBalancerTask.java
 
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/balancer/TestContainerBalancerTask.java
index 9fe66497c8..5341be201f 100644
--- 
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/balancer/TestContainerBalancerTask.java
+++ 
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/balancer/TestContainerBalancerTask.java
@@ -543,6 +543,47 @@ public class TestContainerBalancerTask {
         .isEmpty());
   }
 
+  @Test
+  public void balancerShouldObeyMaxSizeLeavingSourceLimit()
+      throws IllegalContainerBalancerStateException, IOException,
+      InvalidContainerBalancerConfigurationException, TimeoutException {
+    conf.set("ozone.scm.container.size", "1MB");
+    balancerConfiguration =
+        conf.getObject(ContainerBalancerConfiguration.class);
+    balancerConfiguration.setThreshold(10);
+    balancerConfiguration.setMaxDatanodesPercentageToInvolvePerIteration(100);
+    balancerConfiguration.setMaxSizeToMovePerIteration(50 * STORAGE_UNIT);
+
+    // no source containers should be selected when the limit is just 2 MB
+    balancerConfiguration.setMaxSizeLeavingSource(2 * OzoneConsts.MB);
+    startBalancer(balancerConfiguration);
+
+    Assertions.assertFalse(containerBalancerTask.getUnBalancedNodes()
+        .isEmpty());
+    Assertions.assertTrue(containerBalancerTask.getContainerToSourceMap()
+        .isEmpty());
+    stopBalancer();
+
+    // some containers should be selected when using default values
+    OzoneConfiguration ozoneConfiguration = new OzoneConfiguration();
+    ContainerBalancerConfiguration cbc = ozoneConfiguration.
+        getObject(ContainerBalancerConfiguration.class);
+    cbc.setBalancingInterval(1);
+    ContainerBalancer sb = new ContainerBalancer(scm);
+    containerBalancerTask = new ContainerBalancerTask(scm, 0, sb,
+        sb.getMetrics(), cbc);
+    containerBalancerTask.run();
+
+    stopBalancer();
+    // balancer should have identified unbalanced nodes
+    Assertions.assertFalse(containerBalancerTask.getUnBalancedNodes()
+        .isEmpty());
+    Assertions.assertFalse(containerBalancerTask.getContainerToSourceMap()
+        .isEmpty());
+    Assertions.assertTrue(0 !=
+        containerBalancerTask.getSizeScheduledForMoveInLatestIteration());
+  }
+
   @Test
   public void testMetrics()
       throws IllegalContainerBalancerStateException, IOException,


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

Reply via email to