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]