YARN-2306. Add test for leakage of reservation metrics in fair scheduler. (Hong Zhiguo and Yufei Gu via subru).
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/b2c4f24c Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/b2c4f24c Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/b2c4f24c Branch: refs/heads/HDFS-9806 Commit: b2c4f24c31e73faa8f71d44db5de3aa91e3b7d5e Parents: 28660f5 Author: Subru Krishnan <s...@apache.org> Authored: Thu Oct 27 17:43:13 2016 -0700 Committer: Subru Krishnan <s...@apache.org> Committed: Thu Oct 27 17:43:13 2016 -0700 ---------------------------------------------------------------------- .../scheduler/fair/TestFairScheduler.java | 52 ++++++++++++++++++++ 1 file changed, 52 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/b2c4f24c/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/TestFairScheduler.java ---------------------------------------------------------------------- diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/TestFairScheduler.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/TestFairScheduler.java index e28b35a..f17726c 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/TestFairScheduler.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/TestFairScheduler.java @@ -4761,4 +4761,56 @@ public class TestFairScheduler extends FairSchedulerTestBase { rm1.stop(); rm2.stop(); } + + @Test + public void testReservationMetrics() throws IOException { + scheduler.init(conf); + scheduler.start(); + scheduler.reinitialize(conf, resourceManager.getRMContext()); + QueueMetrics metrics = scheduler.getRootQueueMetrics(); + + RMNode node1 = + MockNodes + .newNodeInfo(1, Resources.createResource(4096, 4), 1, "127.0.0.1"); + NodeAddedSchedulerEvent nodeEvent = new NodeAddedSchedulerEvent(node1); + scheduler.handle(nodeEvent); + + ApplicationAttemptId appAttemptId = createAppAttemptId(1, 1); + createApplicationWithAMResource(appAttemptId, "default", "user1", null); + + NodeUpdateSchedulerEvent updateEvent = new NodeUpdateSchedulerEvent(node1); + scheduler.update(); + scheduler.handle(updateEvent); + + createSchedulingRequestExistingApplication(1024, 1, 1, appAttemptId); + scheduler.handle(updateEvent); + + // no reservation yet + assertEquals(0, metrics.getReservedContainers()); + assertEquals(0, metrics.getReservedMB()); + assertEquals(0, metrics.getReservedVirtualCores()); + + // create reservation of {4096, 4} + createSchedulingRequestExistingApplication(4096, 4, 1, appAttemptId); + scheduler.update(); + scheduler.handle(updateEvent); + + // reservation created + assertEquals(1, metrics.getReservedContainers()); + assertEquals(4096, metrics.getReservedMB()); + assertEquals(4, metrics.getReservedVirtualCores()); + + // remove AppAttempt + AppAttemptRemovedSchedulerEvent attRemoveEvent = + new AppAttemptRemovedSchedulerEvent( + appAttemptId, + RMAppAttemptState.KILLED, + false); + scheduler.handle(attRemoveEvent); + + // The reservation metrics should be subtracted + assertEquals(0, metrics.getReservedContainers()); + assertEquals(0, metrics.getReservedMB()); + assertEquals(0, metrics.getReservedVirtualCores()); + } } --------------------------------------------------------------------- To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org