diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestNodeBlacklistingOnAMFailures.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestNodeBlacklistingOnAMFailures.java index ef6d43b..ed2d6bd 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestNodeBlacklistingOnAMFailures.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/TestNodeBlacklistingOnAMFailures.java @@ -68,22 +68,38 @@ public void testNodeBlacklistingOnAMFailure() throws Exception { MockRM rm = startRM(conf, dispatcher); CapacityScheduler scheduler = (CapacityScheduler) rm.getResourceScheduler(); - MockNM nm1 = - new MockNM("127.0.0.1:1234", 8000, rm.getResourceTrackerService()); + // Register 5 nodes, so that we can blacklist atleast one, if AM container + // is failed. As per calculation it will be like, 5nodes * 0.2 (default)=1. + MockNM nm1 = new MockNM("127.0.0.1:1234", 8000, + rm.getResourceTrackerService()); nm1.registerNode(); - MockNM nm2 = - new MockNM("127.0.0.2:2345", 8000, rm.getResourceTrackerService()); + MockNM nm2 = new MockNM("127.0.0.2:2345", 8000, + rm.getResourceTrackerService()); nm2.registerNode(); + MockNM nm3 = new MockNM("127.0.0.2:3345", 8000, + rm.getResourceTrackerService()); + nm3.registerNode(); + + MockNM nm4 = new MockNM("127.0.0.2:4345", 8000, + rm.getResourceTrackerService()); + nm4.registerNode(); + + MockNM nm5 = new MockNM("127.0.0.2:5345", 8000, + rm.getResourceTrackerService()); + nm5.registerNode(); + RMApp app = rm.submitApp(200); MockAM am1 = MockRM.launchAndRegisterAM(app, rm, nm1); - ContainerId amContainerId = - ContainerId.newContainerId(am1.getApplicationAttemptId(), 1); + ContainerId amContainerId = ContainerId + .newContainerId(am1.getApplicationAttemptId(), 1); RMContainer rmContainer = scheduler.getRMContainer(amContainerId); NodeId nodeWhereAMRan = rmContainer.getAllocatedNode(); + // Even though we have 5 nodes, we can consider nm1 as the node which will + // be blacklisted. We will use nm2 to take it over. MockNM currentNode, otherNode; if (nodeWhereAMRan.equals(nm1.getNodeId())) { currentNode = nm1; @@ -109,8 +125,8 @@ public void testNodeBlacklistingOnAMFailure() throws Exception { Assert.assertEquals( "AppAttemptState should still be SCHEDULED if currentNode is " - + "blacklisted correctly", RMAppAttemptState.SCHEDULED, - attempt.getAppAttemptState()); + + "blacklisted correctly", + RMAppAttemptState.SCHEDULED, attempt.getAppAttemptState()); } // Now try the other node @@ -122,8 +138,8 @@ public void testNodeBlacklistingOnAMFailure() throws Exception { MockAM am2 = rm.sendAMLaunched(attempt.getAppAttemptId()); rm.waitForState(attempt.getAppAttemptId(), RMAppAttemptState.LAUNCHED); - amContainerId = - ContainerId.newContainerId(am2.getApplicationAttemptId(), 1); + amContainerId = ContainerId.newContainerId(am2.getApplicationAttemptId(), + 1); rmContainer = scheduler.getRMContainer(amContainerId); nodeWhereAMRan = rmContainer.getAllocatedNode(); @@ -135,8 +151,8 @@ public void testNodeBlacklistingOnAMFailure() throws Exception { am2.registerAppAttempt(); rm.waitForState(app.getApplicationId(), RMAppState.RUNNING); - List allocatedContainers = - TestAMRestart.allocateContainers(currentNode, am2, 1); + List allocatedContainers = TestAMRestart + .allocateContainers(currentNode, am2, 1); Assert.assertEquals( "Even though AM is blacklisted from the node, application can " + "still allocate non-AM containers there", -- 2.7.4 (Apple Git-66)