|
@@ -5128,4 +5128,48 @@ public class TestCapacityScheduler extends CapacitySchedulerTestBase {
|
|
|
assertEquals(4, appsInB1.size());
|
|
|
rm.close();
|
|
|
}
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testCSQueueMetrics() throws Exception {
|
|
|
+ CapacityScheduler cs = new CapacityScheduler();
|
|
|
+ cs.setConf(new YarnConfiguration());
|
|
|
+ cs.setRMContext(resourceManager.getRMContext());
|
|
|
+ CapacitySchedulerConfiguration conf = new CapacitySchedulerConfiguration();
|
|
|
+ setupQueueConfiguration(conf);
|
|
|
+ cs.init(conf);
|
|
|
+ cs.start();
|
|
|
+
|
|
|
+ RMNode n1 = MockNodes.newNodeInfo(0, MockNodes.newResource(50 * GB), 1, "n1");
|
|
|
+ RMNode n2 = MockNodes.newNodeInfo(0, MockNodes.newResource(50 * GB), 2, "n2");
|
|
|
+ cs.handle(new NodeAddedSchedulerEvent(n1));
|
|
|
+ cs.handle(new NodeAddedSchedulerEvent(n2));
|
|
|
+
|
|
|
+ assertEquals(10240, ((CSQueueMetrics)cs.getQueue("a").getMetrics()).getGuaranteedMB());
|
|
|
+ assertEquals(71680, ((CSQueueMetrics)cs.getQueue("b1").getMetrics()).getGuaranteedMB());
|
|
|
+ assertEquals(102400, ((CSQueueMetrics)cs.getQueue("a").getMetrics()).getMaxCapacityMB());
|
|
|
+ assertEquals(102400, ((CSQueueMetrics)cs.getQueue("b1").getMetrics()).getMaxCapacityMB());
|
|
|
+
|
|
|
+ // Remove a node, metrics should be updated
|
|
|
+ cs.handle(new NodeRemovedSchedulerEvent(n2));
|
|
|
+ assertEquals(5120, ((CSQueueMetrics)cs.getQueue("a").getMetrics()).getGuaranteedMB());
|
|
|
+ assertEquals(35840, ((CSQueueMetrics)cs.getQueue("b1").getMetrics()).getGuaranteedMB());
|
|
|
+ assertEquals(51200, ((CSQueueMetrics)cs.getQueue("a").getMetrics()).getMaxCapacityMB());
|
|
|
+ assertEquals(51200, ((CSQueueMetrics)cs.getQueue("b1").getMetrics()).getMaxCapacityMB());
|
|
|
+
|
|
|
+ // Add child queue to a, and reinitialize. Metrics should be updated
|
|
|
+ conf.setQueues(CapacitySchedulerConfiguration.ROOT + ".a", new String[] {"a1", "a2", "a3"} );
|
|
|
+ conf.setCapacity(CapacitySchedulerConfiguration.ROOT + ".a.a2", 30.0f);
|
|
|
+ conf.setCapacity(CapacitySchedulerConfiguration.ROOT + ".a.a3", 40.0f);
|
|
|
+ conf.setMaximumCapacity(CapacitySchedulerConfiguration.ROOT + ".a.a3", 50.0f);
|
|
|
+
|
|
|
+ cs.reinitialize(conf, new RMContextImpl(null, null, null, null, null,
|
|
|
+ null, new RMContainerTokenSecretManager(conf),
|
|
|
+ new NMTokenSecretManagerInRM(conf),
|
|
|
+ new ClientToAMTokenSecretManagerInRM(), null));
|
|
|
+
|
|
|
+ assertEquals(1024, ((CSQueueMetrics)cs.getQueue("a2").getMetrics()).getGuaranteedMB());
|
|
|
+ assertEquals(2048, ((CSQueueMetrics)cs.getQueue("a3").getMetrics()).getGuaranteedMB());
|
|
|
+ assertEquals(51200, ((CSQueueMetrics)cs.getQueue("a2").getMetrics()).getMaxCapacityMB());
|
|
|
+ assertEquals(25600, ((CSQueueMetrics)cs.getQueue("a3").getMetrics()).getMaxCapacityMB());
|
|
|
+ }
|
|
|
}
|